// Code generated from MySqlParser.g4 by ANTLR 4.9.3. DO NOT EDIT.

package mysql // MySqlParser
import (
	"fmt"
	"reflect"
	"strconv"

	"github.com/antlr/antlr4/runtime/Go/antlr"
)

// Suppress unused import errors
var _ = fmt.Printf
var _ = reflect.Copy
var _ = strconv.Itoa

var parserATN = []uint16{
	3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 1117, 6786,
	4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7,
	4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13,
	9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9,
	18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23,
	4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4,
	29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34,
	9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9,
	39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44,
	4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4,
	50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55,
	9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9,
	60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65,
	4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4,
	71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76,
	9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9,
	81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86,
	4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4,
	92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97,
	9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102,
	9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106,
	4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111,
	9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115,
	4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120,
	9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124,
	4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129,
	9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133,
	4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138,
	9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142,
	4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147,
	9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151,
	4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156,
	9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160,
	4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165,
	9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169,
	4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174,
	9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178,
	4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183,
	9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187,
	4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192,
	9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196,
	4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201,
	9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205,
	4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210,
	9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214,
	4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219,
	9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223,
	4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228,
	9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232,
	4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237,
	9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241,
	4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246,
	9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250,
	4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255,
	9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259,
	4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264,
	9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268,
	4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273,
	9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277,
	4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 4, 281, 9, 281, 4, 282,
	9, 282, 4, 283, 9, 283, 4, 284, 9, 284, 4, 285, 9, 285, 4, 286, 9, 286,
	4, 287, 9, 287, 4, 288, 9, 288, 4, 289, 9, 289, 4, 290, 9, 290, 4, 291,
	9, 291, 4, 292, 9, 292, 4, 293, 9, 293, 4, 294, 9, 294, 4, 295, 9, 295,
	4, 296, 9, 296, 4, 297, 9, 297, 4, 298, 9, 298, 4, 299, 9, 299, 4, 300,
	9, 300, 4, 301, 9, 301, 4, 302, 9, 302, 4, 303, 9, 303, 4, 304, 9, 304,
	4, 305, 9, 305, 4, 306, 9, 306, 4, 307, 9, 307, 4, 308, 9, 308, 4, 309,
	9, 309, 4, 310, 9, 310, 4, 311, 9, 311, 4, 312, 9, 312, 4, 313, 9, 313,
	4, 314, 9, 314, 4, 315, 9, 315, 4, 316, 9, 316, 4, 317, 9, 317, 4, 318,
	9, 318, 4, 319, 9, 319, 4, 320, 9, 320, 4, 321, 9, 321, 4, 322, 9, 322,
	4, 323, 9, 323, 4, 324, 9, 324, 4, 325, 9, 325, 4, 326, 9, 326, 4, 327,
	9, 327, 4, 328, 9, 328, 4, 329, 9, 329, 4, 330, 9, 330, 4, 331, 9, 331,
	4, 332, 9, 332, 4, 333, 9, 333, 3, 2, 5, 2, 668, 10, 2, 3, 2, 3, 2, 5,
	2, 672, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 5, 3, 679, 10, 3, 3, 3, 5,
	3, 682, 10, 3, 3, 3, 7, 3, 685, 10, 3, 12, 3, 14, 3, 688, 11, 3, 3, 3,
	3, 3, 3, 3, 5, 3, 693, 10, 3, 3, 3, 5, 3, 696, 10, 3, 3, 3, 5, 3, 699,
	10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 708, 10, 4, 3, 5,
	3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6,
	3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6,
	3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6,
	5, 6, 747, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7,
	3, 7, 5, 7, 759, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8,
	3, 8, 5, 8, 770, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9,
	3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 787, 10, 9, 3, 10, 3, 10,
	3, 10, 5, 10, 792, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3,
	11, 3, 11, 3, 11, 3, 11, 5, 11, 804, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12,
	3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3,
	12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12,
	5, 12, 831, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5,
	13, 840, 10, 13, 3, 14, 3, 14, 3, 14, 5, 14, 845, 10, 14, 3, 14, 3, 14,
	7, 14, 849, 10, 14, 12, 14, 14, 14, 852, 11, 14, 3, 15, 3, 15, 5, 15, 856,
	10, 15, 3, 15, 3, 15, 5, 15, 860, 10, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3,
	15, 3, 15, 3, 15, 5, 15, 869, 10, 15, 3, 15, 5, 15, 872, 10, 15, 3, 15,
	5, 15, 875, 10, 15, 3, 15, 3, 15, 5, 15, 879, 10, 15, 3, 15, 3, 15, 3,
	15, 3, 16, 3, 16, 5, 16, 886, 10, 16, 3, 16, 5, 16, 889, 10, 16, 3, 16,
	3, 16, 3, 16, 5, 16, 894, 10, 16, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 900,
	10, 16, 12, 16, 14, 16, 903, 11, 16, 3, 16, 3, 16, 5, 16, 907, 10, 16,
	3, 16, 3, 16, 3, 16, 5, 16, 912, 10, 16, 3, 16, 7, 16, 915, 10, 16, 12,
	16, 14, 16, 918, 11, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17,
	3, 17, 3, 17, 5, 17, 929, 10, 17, 3, 17, 5, 17, 932, 10, 17, 3, 17, 3,
	17, 5, 17, 936, 10, 17, 3, 17, 5, 17, 939, 10, 17, 3, 17, 3, 17, 5, 17,
	943, 10, 17, 3, 17, 5, 17, 946, 10, 17, 3, 17, 3, 17, 5, 17, 950, 10, 17,
	3, 17, 5, 17, 953, 10, 17, 3, 17, 5, 17, 956, 10, 17, 3, 17, 3, 17, 5,
	17, 960, 10, 17, 3, 17, 5, 17, 963, 10, 17, 3, 17, 3, 17, 5, 17, 967, 10,
	17, 3, 17, 3, 17, 3, 18, 3, 18, 5, 18, 973, 10, 18, 3, 18, 3, 18, 3, 18,
	3, 18, 5, 18, 979, 10, 18, 3, 18, 3, 18, 7, 18, 983, 10, 18, 12, 18, 14,
	18, 986, 11, 18, 3, 18, 3, 18, 7, 18, 990, 10, 18, 12, 18, 14, 18, 993,
	11, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 999, 10, 19, 3, 19, 3, 19, 3,
	19, 3, 19, 5, 19, 1005, 10, 19, 3, 19, 3, 19, 7, 19, 1009, 10, 19, 12,
	19, 14, 19, 1012, 11, 19, 3, 19, 3, 19, 3, 19, 3, 19, 7, 19, 1018, 10,
	19, 12, 19, 14, 19, 1021, 11, 19, 3, 19, 3, 19, 5, 19, 1025, 10, 19, 3,
	20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20,
	3, 20, 7, 20, 1039, 10, 20, 12, 20, 14, 20, 1042, 11, 20, 3, 20, 3, 20,
	3, 21, 3, 21, 5, 21, 1048, 10, 21, 3, 21, 3, 21, 5, 21, 1052, 10, 21, 3,
	21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 1062, 10, 21,
	3, 21, 3, 21, 5, 21, 1066, 10, 21, 3, 21, 3, 21, 5, 21, 1070, 10, 21, 3,
	21, 3, 21, 5, 21, 1074, 10, 21, 3, 21, 3, 21, 5, 21, 1078, 10, 21, 3, 21,
	7, 21, 1081, 10, 21, 12, 21, 14, 21, 1084, 11, 21, 5, 21, 1086, 10, 21,
	3, 21, 5, 21, 1089, 10, 21, 3, 21, 5, 21, 1092, 10, 21, 3, 21, 5, 21, 1095,
	10, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 1101, 10, 21, 3, 21, 3, 21,
	5, 21, 1105, 10, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 1111, 10, 21, 3,
	21, 7, 21, 1114, 10, 21, 12, 21, 14, 21, 1117, 11, 21, 5, 21, 1119, 10,
	21, 3, 21, 5, 21, 1122, 10, 21, 5, 21, 1124, 10, 21, 3, 22, 3, 22, 3, 22,
	3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 1135, 10, 22, 3, 22, 3,
	22, 5, 22, 1139, 10, 22, 3, 22, 5, 22, 1142, 10, 22, 3, 23, 3, 23, 3, 23,
	3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 1156,
	10, 23, 3, 23, 5, 23, 1159, 10, 23, 3, 23, 3, 23, 5, 23, 1163, 10, 23,
	3, 23, 5, 23, 1166, 10, 23, 3, 23, 3, 23, 5, 23, 1170, 10, 23, 3, 23, 5,
	23, 1173, 10, 23, 3, 23, 3, 23, 5, 23, 1177, 10, 23, 3, 23, 5, 23, 1180,
	10, 23, 3, 23, 3, 23, 5, 23, 1184, 10, 23, 3, 23, 5, 23, 1187, 10, 23,
	3, 23, 5, 23, 1190, 10, 23, 3, 23, 3, 23, 5, 23, 1194, 10, 23, 3, 23, 5,
	23, 1197, 10, 23, 3, 23, 3, 23, 5, 23, 1201, 10, 23, 3, 23, 3, 23, 3, 24,
	3, 24, 5, 24, 1207, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3,
	24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 1220, 10, 24, 3, 24, 3, 24, 3, 25,
	3, 25, 3, 25, 5, 25, 1227, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1232, 10,
	25, 3, 25, 5, 25, 1235, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1240, 10, 25,
	3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1248, 10, 25, 3, 25, 3,
	25, 3, 25, 3, 25, 5, 25, 1254, 10, 25, 3, 25, 3, 25, 5, 25, 1258, 10, 25,
	3, 26, 5, 26, 1261, 10, 26, 3, 26, 3, 26, 5, 26, 1265, 10, 26, 3, 26, 3,
	26, 5, 26, 1269, 10, 26, 3, 26, 5, 26, 1272, 10, 26, 3, 26, 3, 26, 5, 26,
	1276, 10, 26, 3, 26, 5, 26, 1279, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3,
	27, 5, 27, 1286, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28,
	1294, 10, 28, 5, 28, 1296, 10, 28, 3, 29, 3, 29, 3, 29, 7, 29, 1301, 10,
	29, 12, 29, 14, 29, 1304, 11, 29, 3, 29, 3, 29, 3, 29, 5, 29, 1309, 10,
	29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 1315, 10, 29, 12, 29, 14, 29, 1318,
	11, 29, 5, 29, 1320, 10, 29, 3, 29, 3, 29, 3, 29, 7, 29, 1325, 10, 29,
	12, 29, 14, 29, 1328, 11, 29, 5, 29, 1330, 10, 29, 5, 29, 1332, 10, 29,
	3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 1338, 10, 30, 3, 31, 3, 31, 3, 31, 3,
	31, 5, 31, 1344, 10, 31, 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, 1361, 10,
	32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 1368, 10, 33, 3, 34, 3, 34,
	3, 34, 3, 35, 3, 35, 5, 35, 1375, 10, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3,
	35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 1386, 10, 35, 3, 36, 5, 36, 1389,
	10, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38,
	3, 38, 3, 38, 5, 38, 1402, 10, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3,
	38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 1415, 10, 38, 3, 38, 3, 38,
	3, 38, 5, 38, 1420, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3,
	39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1436, 10, 39,
	3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 1442, 10, 40, 12, 40, 14, 40, 1445,
	11, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 1454, 10,
	41, 3, 42, 3, 42, 7, 42, 1458, 10, 42, 12, 42, 14, 42, 1461, 11, 42, 3,
	43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1472,
	10, 43, 3, 43, 5, 43, 1475, 10, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1480, 10,
	43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43,
	3, 43, 5, 43, 1493, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1500,
	10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1507, 10, 43, 5, 43,
	1509, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1516, 10, 43, 3,
	44, 3, 44, 5, 44, 1520, 10, 44, 5, 44, 1522, 10, 44, 3, 44, 3, 44, 3, 44,
	5, 44, 1527, 10, 44, 3, 44, 5, 44, 1530, 10, 44, 3, 44, 3, 44, 7, 44, 1534,
	10, 44, 12, 44, 14, 44, 1537, 11, 44, 3, 44, 3, 44, 5, 44, 1541, 10, 44,
	5, 44, 1543, 10, 44, 3, 44, 3, 44, 5, 44, 1547, 10, 44, 3, 44, 5, 44, 1550,
	10, 44, 3, 44, 5, 44, 1553, 10, 44, 3, 44, 3, 44, 7, 44, 1557, 10, 44,
	12, 44, 14, 44, 1560, 11, 44, 3, 44, 3, 44, 5, 44, 1564, 10, 44, 5, 44,
	1566, 10, 44, 3, 44, 3, 44, 3, 44, 5, 44, 1571, 10, 44, 3, 44, 3, 44, 3,
	44, 3, 44, 3, 44, 5, 44, 1578, 10, 44, 5, 44, 1580, 10, 44, 3, 44, 3, 44,
	3, 44, 3, 44, 3, 44, 5, 44, 1587, 10, 44, 3, 45, 3, 45, 3, 45, 5, 45, 1592,
	10, 45, 3, 45, 3, 45, 5, 45, 1596, 10, 45, 3, 45, 5, 45, 1599, 10, 45,
	3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 1607, 10, 46, 3, 46, 3,
	46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 1615, 10, 46, 5, 46, 1617, 10, 46,
	3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 1625, 10, 47, 3, 48, 3,
	48, 5, 48, 1629, 10, 48, 3, 48, 5, 48, 1632, 10, 48, 3, 48, 3, 48, 7, 48,
	1636, 10, 48, 12, 48, 14, 48, 1639, 11, 48, 3, 48, 3, 48, 5, 48, 1643,
	10, 48, 3, 48, 5, 48, 1646, 10, 48, 3, 48, 3, 48, 7, 48, 1650, 10, 48,
	12, 48, 14, 48, 1653, 11, 48, 5, 48, 1655, 10, 48, 3, 49, 3, 49, 5, 49,
	1659, 10, 49, 3, 49, 5, 49, 1662, 10, 49, 3, 49, 3, 49, 5, 49, 1666, 10,
	49, 3, 49, 3, 49, 3, 49, 5, 49, 1671, 10, 49, 3, 49, 3, 49, 5, 49, 1675,
	10, 49, 3, 49, 3, 49, 5, 49, 1679, 10, 49, 3, 49, 3, 49, 5, 49, 1683, 10,
	49, 3, 49, 3, 49, 5, 49, 1687, 10, 49, 3, 49, 3, 49, 5, 49, 1691, 10, 49,
	3, 49, 3, 49, 5, 49, 1695, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1700, 10,
	49, 3, 49, 3, 49, 3, 49, 5, 49, 1705, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49,
	1710, 10, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1716, 10, 49, 3, 49, 3,
	49, 3, 49, 5, 49, 1721, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1726, 10, 49,
	3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1732, 10, 49, 3, 49, 3, 49, 3, 49, 5,
	49, 1737, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1742, 10, 49, 3, 49, 3, 49,
	3, 49, 5, 49, 1747, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1752, 10, 49, 3,
	49, 3, 49, 3, 49, 5, 49, 1757, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1762,
	10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1767, 10, 49, 3, 49, 3, 49, 3, 49,
	5, 49, 1772, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1777, 10, 49, 3, 49, 3,
	49, 3, 49, 5, 49, 1782, 10, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1788,
	10, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1796, 10, 49,
	3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1802, 10, 49, 3, 50, 3, 50, 3, 51, 3,
	51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1814, 10, 52, 3, 52,
	3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1821, 10, 52, 5, 52, 1823, 10, 52, 3,
	52, 3, 52, 3, 52, 3, 52, 7, 52, 1829, 10, 52, 12, 52, 14, 52, 1832, 11,
	52, 3, 52, 3, 52, 5, 52, 1836, 10, 52, 3, 53, 5, 53, 1839, 10, 53, 3, 53,
	3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1847, 10, 53, 3, 53, 3, 53, 3,
	53, 3, 53, 5, 53, 1853, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53,
	3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1869, 10,
	53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53,
	5, 53, 1881, 10, 53, 5, 53, 1883, 10, 53, 3, 54, 5, 54, 1886, 10, 54, 3,
	54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 1894, 10, 54, 3, 54, 3, 54,
	3, 54, 3, 54, 5, 54, 1900, 10, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 1906,
	10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55,
	7, 55, 1917, 10, 55, 12, 55, 14, 55, 1920, 11, 55, 3, 55, 3, 55, 7, 55,
	1924, 10, 55, 12, 55, 14, 55, 1927, 11, 55, 3, 55, 3, 55, 3, 55, 3, 55,
	7, 55, 1933, 10, 55, 12, 55, 14, 55, 1936, 11, 55, 3, 55, 3, 55, 5, 55,
	1940, 10, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55, 1949,
	10, 55, 12, 55, 14, 55, 1952, 11, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55,
	1958, 10, 55, 12, 55, 14, 55, 1961, 11, 55, 3, 55, 3, 55, 5, 55, 1965,
	10, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55,
	1975, 10, 55, 12, 55, 14, 55, 1978, 11, 55, 3, 55, 3, 55, 7, 55, 1982,
	10, 55, 12, 55, 14, 55, 1985, 11, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55,
	1991, 10, 55, 12, 55, 14, 55, 1994, 11, 55, 3, 55, 3, 55, 5, 55, 1998,
	10, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55,
	2008, 10, 55, 12, 55, 14, 55, 2011, 11, 55, 3, 55, 3, 55, 7, 55, 2015,
	10, 55, 12, 55, 14, 55, 2018, 11, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55,
	2024, 10, 55, 12, 55, 14, 55, 2027, 11, 55, 3, 55, 3, 55, 5, 55, 2031,
	10, 55, 3, 55, 3, 55, 3, 55, 7, 55, 2036, 10, 55, 12, 55, 14, 55, 2039,
	11, 55, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55, 2045, 10, 55, 12, 55, 14, 55,
	2048, 11, 55, 3, 55, 3, 55, 5, 55, 2052, 10, 55, 5, 55, 2054, 10, 55, 3,
	56, 3, 56, 3, 56, 5, 56, 2059, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 6, 57,
	2065, 10, 57, 13, 57, 14, 57, 2066, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58,
	7, 58, 2074, 10, 58, 12, 58, 14, 58, 2077, 11, 58, 3, 59, 5, 59, 2080,
	10, 59, 3, 59, 5, 59, 2083, 10, 59, 3, 59, 3, 59, 5, 59, 2087, 10, 59,
	3, 59, 3, 59, 3, 59, 5, 59, 2092, 10, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5,
	59, 2098, 10, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 2104, 10, 59, 3, 59,
	3, 59, 3, 59, 5, 59, 2109, 10, 59, 3, 59, 3, 59, 3, 59, 5, 59, 2114, 10,
	59, 3, 59, 3, 59, 3, 59, 5, 59, 2119, 10, 59, 3, 59, 3, 59, 3, 59, 5, 59,
	2124, 10, 59, 3, 59, 5, 59, 2127, 10, 59, 3, 60, 3, 60, 3, 60, 5, 60, 2132,
	10, 60, 3, 60, 6, 60, 2135, 10, 60, 13, 60, 14, 60, 2136, 3, 60, 3, 60,
	3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 2147, 10, 60, 3, 61, 3,
	61, 5, 61, 2151, 10, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 2158,
	10, 61, 3, 61, 3, 61, 3, 61, 5, 61, 2163, 10, 61, 3, 61, 5, 61, 2166, 10,
	61, 3, 61, 3, 61, 3, 61, 5, 61, 2171, 10, 61, 3, 61, 5, 61, 2174, 10, 61,
	3, 61, 3, 61, 5, 61, 2178, 10, 61, 3, 61, 3, 61, 5, 61, 2182, 10, 61, 3,
	62, 3, 62, 3, 62, 3, 62, 7, 62, 2188, 10, 62, 12, 62, 14, 62, 2191, 11,
	62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64,
	3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2209, 10, 64, 3, 64, 5,
	64, 2212, 10, 64, 3, 64, 5, 64, 2215, 10, 64, 3, 64, 3, 64, 5, 64, 2219,
	10, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 7, 65, 2227, 10, 65,
	12, 65, 14, 65, 2230, 11, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66,
	3, 66, 3, 66, 7, 66, 2240, 10, 66, 12, 66, 14, 66, 2243, 11, 66, 3, 66,
	3, 66, 3, 67, 3, 67, 5, 67, 2249, 10, 67, 3, 67, 5, 67, 2252, 10, 67, 3,
	67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 2259, 10, 67, 12, 67, 14, 67, 2262,
	11, 67, 5, 67, 2264, 10, 67, 3, 67, 5, 67, 2267, 10, 67, 3, 68, 3, 68,
	3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2278, 10, 68, 3,
	68, 5, 68, 2281, 10, 68, 3, 68, 3, 68, 5, 68, 2285, 10, 68, 3, 68, 3, 68,
	3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2293, 10, 69, 3, 69, 5, 69, 2296, 10,
	69, 3, 69, 3, 69, 3, 69, 5, 69, 2301, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69,
	3, 69, 3, 69, 5, 69, 2309, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2315,
	10, 69, 3, 69, 3, 69, 5, 69, 2319, 10, 69, 3, 70, 3, 70, 5, 70, 2323, 10,
	70, 3, 70, 7, 70, 2326, 10, 70, 12, 70, 14, 70, 2329, 11, 70, 3, 70, 3,
	70, 5, 70, 2333, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2340,
	10, 70, 3, 70, 3, 70, 5, 70, 2344, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 3, 70, 7, 70, 2353, 10, 70, 12, 70, 14, 70, 2356, 11, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2363, 10, 70, 3, 70, 5, 70, 2366,
	10, 70, 3, 70, 3, 70, 7, 70, 2370, 10, 70, 12, 70, 14, 70, 2373, 11, 70,
	3, 70, 3, 70, 3, 70, 5, 70, 2378, 10, 70, 5, 70, 2380, 10, 70, 3, 70, 3,
	70, 3, 70, 5, 70, 2385, 10, 70, 3, 70, 5, 70, 2388, 10, 70, 3, 70, 3, 70,
	7, 70, 2392, 10, 70, 12, 70, 14, 70, 2395, 11, 70, 3, 70, 3, 70, 3, 70,
	5, 70, 2400, 10, 70, 5, 70, 2402, 10, 70, 3, 70, 3, 70, 5, 70, 2406, 10,
	70, 3, 70, 5, 70, 2409, 10, 70, 3, 70, 5, 70, 2412, 10, 70, 3, 70, 3, 70,
	7, 70, 2416, 10, 70, 12, 70, 14, 70, 2419, 11, 70, 3, 70, 3, 70, 3, 70,
	5, 70, 2424, 10, 70, 3, 70, 5, 70, 2427, 10, 70, 3, 70, 3, 70, 7, 70, 2431,
	10, 70, 12, 70, 14, 70, 2434, 11, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2439,
	10, 70, 5, 70, 2441, 10, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2446, 10, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2454, 10, 70, 5, 70, 2456,
	10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2465, 10,
	70, 3, 70, 3, 70, 3, 70, 5, 70, 2470, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 5, 70, 2478, 10, 70, 3, 70, 3, 70, 5, 70, 2482, 10, 70, 3,
	70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2490, 10, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2500, 10, 70, 3, 70, 3,
	70, 3, 70, 5, 70, 2505, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70,
	2512, 10, 70, 3, 70, 3, 70, 5, 70, 2516, 10, 70, 3, 70, 3, 70, 5, 70, 2520,
	10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3,
	70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	5, 70, 2552, 10, 70, 3, 70, 3, 70, 5, 70, 2556, 10, 70, 3, 70, 3, 70, 3,
	70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2568, 10, 70,
	3, 70, 5, 70, 2571, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3,
	70, 5, 70, 2580, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 7, 70, 2595, 10, 70, 12, 70,
	14, 70, 2598, 11, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70,
	3, 70, 3, 70, 5, 70, 2609, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5,
	70, 2616, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2623, 10, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3,
	70, 7, 70, 2636, 10, 70, 12, 70, 14, 70, 2639, 11, 70, 3, 70, 3, 70, 3,
	70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2651, 10, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2657, 10, 70, 3, 70, 3, 70, 3, 70, 3,
	70, 5, 70, 2663, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2669, 10, 70,
	3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2675, 10, 70, 3, 70, 3, 70, 3, 70, 3,
	70, 5, 70, 2681, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2687, 10, 70,
	3, 71, 3, 71, 3, 71, 5, 71, 2692, 10, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3,
	72, 5, 72, 2699, 10, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 5, 73, 2706,
	10, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 2713, 10, 73, 3, 73,
	3, 73, 3, 73, 5, 73, 2718, 10, 73, 3, 73, 7, 73, 2721, 10, 73, 12, 73,
	14, 73, 2724, 11, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74,
	3, 74, 3, 75, 3, 75, 3, 75, 5, 75, 2737, 10, 75, 3, 75, 3, 75, 3, 76, 3,
	76, 3, 76, 5, 76, 2744, 10, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 5, 77,
	2751, 10, 77, 3, 77, 3, 77, 3, 78, 3, 78, 5, 78, 2757, 10, 78, 3, 78, 3,
	78, 5, 78, 2761, 10, 78, 3, 78, 3, 78, 5, 78, 2765, 10, 78, 3, 79, 3, 79,
	3, 79, 3, 79, 3, 79, 5, 79, 2772, 10, 79, 3, 79, 5, 79, 2775, 10, 79, 3,
	80, 3, 80, 3, 80, 5, 80, 2780, 10, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81,
	5, 81, 2787, 10, 81, 3, 81, 3, 81, 3, 81, 7, 81, 2792, 10, 81, 12, 81,
	14, 81, 2795, 11, 81, 3, 81, 5, 81, 2798, 10, 81, 3, 82, 3, 82, 3, 82,
	3, 82, 3, 82, 7, 82, 2805, 10, 82, 12, 82, 14, 82, 2808, 11, 82, 3, 83,
	3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 5, 84, 2816, 10, 84, 3, 84, 3, 84, 3,
	85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2825, 10, 85, 3, 85, 5, 85, 2828,
	10, 85, 3, 86, 3, 86, 5, 86, 2832, 10, 86, 3, 87, 3, 87, 3, 87, 3, 88,
	3, 88, 3, 88, 3, 88, 5, 88, 2841, 10, 88, 3, 89, 3, 89, 5, 89, 2845, 10,
	89, 3, 89, 5, 89, 2848, 10, 89, 3, 89, 5, 89, 2851, 10, 89, 3, 89, 3, 89,
	3, 89, 3, 89, 5, 89, 2857, 10, 89, 3, 89, 5, 89, 2860, 10, 89, 3, 89, 3,
	89, 3, 89, 3, 89, 5, 89, 2866, 10, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89,
	7, 89, 2873, 10, 89, 12, 89, 14, 89, 2876, 11, 89, 5, 89, 2878, 10, 89,
	3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 2887, 10, 89, 12,
	89, 14, 89, 2890, 11, 89, 5, 89, 2892, 10, 89, 3, 90, 3, 90, 3, 90, 5,
	90, 2897, 10, 90, 3, 90, 5, 90, 2900, 10, 90, 3, 90, 3, 90, 3, 90, 5, 90,
	2905, 10, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5,
	90, 2915, 10, 90, 3, 90, 3, 90, 3, 90, 5, 90, 2920, 10, 90, 3, 90, 3, 90,
	6, 90, 2924, 10, 90, 13, 90, 14, 90, 2925, 5, 90, 2928, 10, 90, 3, 90,
	3, 90, 6, 90, 2932, 10, 90, 13, 90, 14, 90, 2933, 5, 90, 2936, 10, 90,
	3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 2942, 10, 90, 3, 90, 3, 90, 3, 90, 3,
	90, 7, 90, 2948, 10, 90, 12, 90, 14, 90, 2951, 11, 90, 3, 90, 3, 90, 5,
	90, 2955, 10, 90, 3, 90, 3, 90, 3, 90, 3, 90, 7, 90, 2961, 10, 90, 12,
	90, 14, 90, 2964, 11, 90, 5, 90, 2966, 10, 90, 3, 91, 3, 91, 3, 91, 5,
	91, 2971, 10, 91, 3, 91, 5, 91, 2974, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91,
	2979, 10, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 2987, 10,
	91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 2995, 10, 91, 3, 91,
	3, 91, 3, 91, 3, 91, 5, 91, 3001, 10, 91, 3, 91, 3, 91, 3, 91, 3, 91, 7,
	91, 3007, 10, 91, 12, 91, 14, 91, 3010, 11, 91, 3, 91, 3, 91, 5, 91, 3014,
	10, 91, 3, 91, 3, 91, 3, 91, 3, 91, 7, 91, 3020, 10, 91, 12, 91, 14, 91,
	3023, 11, 91, 5, 91, 3025, 10, 91, 3, 92, 3, 92, 5, 92, 3029, 10, 92, 3,
	92, 5, 92, 3032, 10, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92,
	3040, 10, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 3046, 10, 92, 3, 92, 3,
	92, 3, 92, 3, 92, 3, 92, 7, 92, 3053, 10, 92, 12, 92, 14, 92, 3056, 11,
	92, 5, 92, 3058, 10, 92, 3, 93, 3, 93, 5, 93, 3062, 10, 93, 3, 93, 3, 93,
	5, 93, 3066, 10, 93, 3, 93, 3, 93, 6, 93, 3070, 10, 93, 13, 93, 14, 93,
	3071, 3, 93, 3, 93, 5, 93, 3076, 10, 93, 3, 93, 3, 93, 5, 93, 3080, 10,
	93, 5, 93, 3082, 10, 93, 3, 93, 5, 93, 3085, 10, 93, 3, 93, 5, 93, 3088,
	10, 93, 3, 93, 5, 93, 3091, 10, 93, 3, 93, 3, 93, 6, 93, 3095, 10, 93,
	13, 93, 14, 93, 3096, 3, 93, 3, 93, 5, 93, 3101, 10, 93, 3, 93, 5, 93,
	3104, 10, 93, 3, 93, 5, 93, 3107, 10, 93, 3, 93, 5, 93, 3110, 10, 93, 3,
	93, 5, 93, 3113, 10, 93, 5, 93, 3115, 10, 93, 3, 94, 3, 94, 5, 94, 3119,
	10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 3125, 10, 95, 3, 95, 3, 95,
	3, 95, 3, 95, 5, 95, 3131, 10, 95, 3, 95, 7, 95, 3134, 10, 95, 12, 95,
	14, 95, 3137, 11, 95, 5, 95, 3139, 10, 95, 3, 96, 3, 96, 3, 96, 3, 96,
	5, 96, 3145, 10, 96, 3, 97, 3, 97, 5, 97, 3149, 10, 97, 3, 98, 3, 98, 3,
	98, 3, 98, 3, 98, 3, 98, 5, 98, 3157, 10, 98, 3, 99, 3, 99, 5, 99, 3161,
	10, 99, 3, 99, 5, 99, 3164, 10, 99, 3, 99, 5, 99, 3167, 10, 99, 3, 99,
	3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 3176, 10, 99, 3, 99, 3,
	99, 5, 99, 3180, 10, 99, 3, 99, 5, 99, 3183, 10, 99, 3, 99, 3, 99, 5, 99,
	3187, 10, 99, 3, 100, 3, 100, 5, 100, 3191, 10, 100, 3, 100, 5, 100, 3194,
	10, 100, 3, 100, 5, 100, 3197, 10, 100, 3, 100, 3, 100, 3, 100, 5, 100,
	3202, 10, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 3208, 10, 100, 7,
	100, 3210, 10, 100, 12, 100, 14, 100, 3213, 11, 100, 3, 100, 3, 100, 3,
	100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 3222, 10, 100, 3, 100, 3,
	100, 3, 100, 3, 100, 5, 100, 3228, 10, 100, 7, 100, 3230, 10, 100, 12,
	100, 14, 100, 3233, 11, 100, 3, 100, 3, 100, 3, 100, 5, 100, 3238, 10,
	100, 3, 100, 3, 100, 5, 100, 3242, 10, 100, 3, 101, 3, 101, 3, 101, 3,
	101, 5, 101, 3248, 10, 101, 3, 101, 5, 101, 3251, 10, 101, 3, 102, 3, 102,
	3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102,
	3263, 10, 102, 3, 102, 3, 102, 5, 102, 3267, 10, 102, 3, 102, 3, 102, 5,
	102, 3271, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5,
	103, 3279, 10, 103, 3, 103, 3, 103, 5, 103, 3283, 10, 103, 3, 104, 3, 104,
	3, 104, 3, 104, 3, 105, 3, 105, 5, 105, 3291, 10, 105, 3, 105, 5, 105,
	3294, 10, 105, 3, 105, 3, 105, 5, 105, 3298, 10, 105, 3, 105, 5, 105, 3301,
	10, 105, 3, 105, 3, 105, 3, 105, 3, 105, 7, 105, 3307, 10, 105, 12, 105,
	14, 105, 3310, 11, 105, 3, 105, 3, 105, 5, 105, 3314, 10, 105, 3, 105,
	5, 105, 3317, 10, 105, 3, 105, 5, 105, 3320, 10, 105, 3, 106, 3, 106, 5,
	106, 3324, 10, 106, 3, 106, 5, 106, 3327, 10, 106, 3, 106, 3, 106, 3, 106,
	3, 106, 3, 106, 7, 106, 3334, 10, 106, 12, 106, 14, 106, 3337, 11, 106,
	3, 106, 3, 106, 5, 106, 3341, 10, 106, 3, 107, 3, 107, 3, 107, 3, 107,
	3, 107, 7, 107, 3348, 10, 107, 12, 107, 14, 107, 3351, 11, 107, 3, 108,
	3, 108, 5, 108, 3355, 10, 108, 3, 109, 3, 109, 3, 109, 7, 109, 3360, 10,
	109, 12, 109, 14, 109, 3363, 11, 109, 3, 110, 3, 110, 7, 110, 3367, 10,
	110, 12, 110, 14, 110, 3370, 11, 110, 3, 110, 3, 110, 3, 110, 7, 110, 3375,
	10, 110, 12, 110, 14, 110, 3378, 11, 110, 3, 110, 3, 110, 5, 110, 3382,
	10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 5, 111, 3390,
	10, 111, 3, 111, 5, 111, 3393, 10, 111, 3, 111, 5, 111, 3396, 10, 111,
	3, 111, 3, 111, 3, 111, 7, 111, 3401, 10, 111, 12, 111, 14, 111, 3404,
	11, 111, 5, 111, 3406, 10, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111,
	5, 111, 3413, 10, 111, 3, 111, 5, 111, 3416, 10, 111, 3, 111, 3, 111, 3,
	111, 3, 111, 3, 111, 3, 111, 5, 111, 3424, 10, 111, 3, 112, 3, 112, 3,
	112, 3, 112, 5, 112, 3430, 10, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3,
	113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 3441, 10, 113, 3, 114, 5,
	114, 3444, 10, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3,
	114, 3, 114, 3, 114, 5, 114, 3455, 10, 114, 3, 114, 3, 114, 3, 114, 3,
	114, 5, 114, 3461, 10, 114, 3, 114, 3, 114, 5, 114, 3465, 10, 114, 3, 114,
	3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 5, 114,
	3476, 10, 114, 3, 114, 3, 114, 3, 114, 5, 114, 3481, 10, 114, 5, 114, 3483,
	10, 114, 3, 114, 3, 114, 5, 114, 3487, 10, 114, 3, 115, 3, 115, 3, 115,
	3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 5, 115, 3497, 10, 115, 3, 116,
	3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 5, 116, 3507, 10,
	116, 3, 117, 3, 117, 7, 117, 3511, 10, 117, 12, 117, 14, 117, 3514, 11,
	117, 3, 117, 3, 117, 5, 117, 3518, 10, 117, 3, 117, 5, 117, 3521, 10, 117,
	3, 117, 5, 117, 3524, 10, 117, 3, 117, 5, 117, 3527, 10, 117, 3, 117, 5,
	117, 3530, 10, 117, 3, 117, 5, 117, 3533, 10, 117, 3, 117, 5, 117, 3536,
	10, 117, 3, 117, 3, 117, 7, 117, 3540, 10, 117, 12, 117, 14, 117, 3543,
	11, 117, 3, 117, 3, 117, 5, 117, 3547, 10, 117, 3, 117, 5, 117, 3550, 10,
	117, 3, 117, 5, 117, 3553, 10, 117, 3, 117, 5, 117, 3556, 10, 117, 3, 117,
	5, 117, 3559, 10, 117, 3, 117, 5, 117, 3562, 10, 117, 3, 117, 5, 117, 3565,
	10, 117, 5, 117, 3567, 10, 117, 3, 118, 3, 118, 7, 118, 3571, 10, 118,
	12, 118, 14, 118, 3574, 11, 118, 3, 118, 3, 118, 5, 118, 3578, 10, 118,
	3, 118, 5, 118, 3581, 10, 118, 3, 118, 5, 118, 3584, 10, 118, 3, 118, 5,
	118, 3587, 10, 118, 3, 118, 5, 118, 3590, 10, 118, 3, 118, 5, 118, 3593,
	10, 118, 3, 119, 3, 119, 5, 119, 3597, 10, 119, 3, 119, 3, 119, 3, 120,
	3, 120, 5, 120, 3603, 10, 120, 3, 120, 3, 120, 5, 120, 3607, 10, 120, 3,
	121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 5, 121, 3617,
	10, 121, 3, 122, 3, 122, 5, 122, 3621, 10, 122, 3, 122, 3, 122, 7, 122,
	3625, 10, 122, 12, 122, 14, 122, 3628, 11, 122, 3, 123, 3, 123, 3, 123,
	3, 123, 3, 123, 3, 123, 5, 123, 3636, 10, 123, 3, 123, 5, 123, 3639, 10,
	123, 3, 123, 3, 123, 5, 123, 3643, 10, 123, 3, 123, 5, 123, 3646, 10, 123,
	3, 123, 3, 123, 5, 123, 3650, 10, 123, 3, 123, 3, 123, 5, 123, 3654, 10,
	123, 3, 123, 5, 123, 3657, 10, 123, 5, 123, 3659, 10, 123, 3, 124, 3, 124,
	3, 124, 3, 124, 7, 124, 3665, 10, 124, 12, 124, 14, 124, 3668, 11, 124,
	3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124,
	5, 124, 3679, 10, 124, 3, 124, 3, 124, 6, 124, 3683, 10, 124, 13, 124,
	14, 124, 3684, 5, 124, 3687, 10, 124, 3, 124, 3, 124, 6, 124, 3691, 10,
	124, 13, 124, 14, 124, 3692, 5, 124, 3695, 10, 124, 5, 124, 3697, 10, 124,
	3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 3703, 10, 125, 3, 125, 3, 125,
	3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 3711, 10, 125, 3, 126, 3, 126,
	3, 126, 3, 126, 3, 126, 3, 126, 5, 126, 3719, 10, 126, 3, 127, 3, 127,
	5, 127, 3723, 10, 127, 3, 127, 3, 127, 5, 127, 3727, 10, 127, 3, 128, 3,
	128, 3, 128, 3, 128, 3, 128, 7, 128, 3734, 10, 128, 12, 128, 14, 128, 3737,
	11, 128, 3, 128, 3, 128, 5, 128, 3741, 10, 128, 3, 129, 3, 129, 3, 129,
	3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130,
	3, 130, 3, 130, 3, 130, 3, 130, 7, 130, 3759, 10, 130, 12, 130, 14, 130,
	3762, 11, 130, 3, 131, 3, 131, 5, 131, 3766, 10, 131, 3, 132, 3, 132, 3,
	132, 3, 132, 5, 132, 3772, 10, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3,
	132, 5, 132, 3779, 10, 132, 3, 133, 3, 133, 3, 133, 5, 133, 3784, 10, 133,
	3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 7, 134, 3791, 10, 134, 12, 134,
	14, 134, 3794, 11, 134, 5, 134, 3796, 10, 134, 3, 135, 3, 135, 5, 135,
	3800, 10, 135, 3, 136, 3, 136, 5, 136, 3804, 10, 136, 3, 136, 3, 136, 5,
	136, 3808, 10, 136, 3, 136, 5, 136, 3811, 10, 136, 3, 136, 5, 136, 3814,
	10, 136, 3, 136, 5, 136, 3817, 10, 136, 3, 137, 3, 137, 5, 137, 3821, 10,
	137, 3, 137, 3, 137, 5, 137, 3825, 10, 137, 3, 137, 5, 137, 3828, 10, 137,
	3, 137, 5, 137, 3831, 10, 137, 3, 137, 5, 137, 3834, 10, 137, 3, 138, 3,
	138, 3, 138, 3, 139, 3, 139, 5, 139, 3841, 10, 139, 3, 139, 3, 139, 5,
	139, 3845, 10, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3,
	141, 3, 141, 3, 141, 3, 141, 3, 141, 7, 141, 3858, 10, 141, 12, 141, 14,
	141, 3861, 11, 141, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3,
	143, 3, 143, 3, 144, 3, 144, 5, 144, 3873, 10, 144, 3, 144, 3, 144, 3,
	144, 3, 144, 7, 144, 3879, 10, 144, 12, 144, 14, 144, 3882, 11, 144, 3,
	145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 5, 145, 3891, 10,
	145, 3, 146, 3, 146, 5, 146, 3895, 10, 146, 3, 146, 5, 146, 3898, 10, 146,
	3, 146, 3, 146, 3, 147, 3, 147, 5, 147, 3904, 10, 147, 3, 147, 5, 147,
	3907, 10, 147, 3, 147, 5, 147, 3910, 10, 147, 3, 148, 3, 148, 3, 148, 3,
	148, 3, 148, 3, 148, 3, 148, 5, 148, 3919, 10, 148, 3, 149, 3, 149, 3,
	149, 3, 149, 3, 149, 3, 149, 3, 149, 5, 149, 3928, 10, 149, 3, 150, 3,
	150, 3, 150, 3, 150, 3, 150, 3, 150, 7, 150, 3936, 10, 150, 12, 150, 14,
	150, 3939, 11, 150, 3, 150, 5, 150, 3942, 10, 150, 3, 151, 3, 151, 3, 151,
	3, 151, 3, 151, 3, 151, 7, 151, 3950, 10, 151, 12, 151, 14, 151, 3953,
	11, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 5, 152,
	3962, 10, 152, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 5, 154,
	3970, 10, 154, 3, 154, 5, 154, 3973, 10, 154, 3, 155, 3, 155, 3, 155, 3,
	155, 3, 155, 7, 155, 3980, 10, 155, 12, 155, 14, 155, 3983, 11, 155, 5,
	155, 3985, 10, 155, 3, 155, 3, 155, 5, 155, 3989, 10, 155, 3, 155, 7, 155,
	3992, 10, 155, 12, 155, 14, 155, 3995, 11, 155, 3, 155, 5, 155, 3998, 10,
	155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 7, 156, 4005, 10, 156, 12,
	156, 14, 156, 4008, 11, 156, 5, 156, 4010, 10, 156, 3, 157, 3, 157, 3,
	157, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3,
	159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3,
	159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 7, 159, 4039, 10,
	159, 12, 159, 14, 159, 4042, 11, 159, 5, 159, 4044, 10, 159, 3, 159, 5,
	159, 4047, 10, 159, 3, 160, 3, 160, 3, 161, 3, 161, 3, 162, 3, 162, 3,
	163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3,
	164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3,
	164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3,
	164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3,
	164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3,
	164, 7, 164, 4101, 10, 164, 12, 164, 14, 164, 4104, 11, 164, 3, 164, 3,
	164, 5, 164, 4108, 10, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3,
	165, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3,
	167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3,
	167, 3, 167, 3, 167, 5, 167, 4136, 10, 167, 3, 168, 3, 168, 3, 168, 3,
	168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 5,
	168, 4150, 10, 168, 3, 169, 3, 169, 3, 169, 7, 169, 4155, 10, 169, 12,
	169, 14, 169, 4158, 11, 169, 3, 169, 5, 169, 4161, 10, 169, 3, 170, 3,
	170, 3, 170, 3, 170, 5, 170, 4167, 10, 170, 3, 171, 3, 171, 3, 171, 3,
	171, 3, 171, 3, 171, 5, 171, 4175, 10, 171, 5, 171, 4177, 10, 171, 3, 172,
	3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 5, 173,
	4188, 10, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175,
	3, 175, 5, 175, 4198, 10, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176,
	5, 176, 4205, 10, 176, 3, 177, 3, 177, 3, 177, 3, 177, 5, 177, 4211, 10,
	177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 5, 179, 4219, 10,
	179, 3, 180, 3, 180, 3, 180, 5, 180, 4224, 10, 180, 3, 180, 3, 180, 3,
	180, 3, 180, 7, 180, 4230, 10, 180, 12, 180, 14, 180, 4233, 11, 180, 3,
	180, 3, 180, 3, 180, 7, 180, 4238, 10, 180, 12, 180, 14, 180, 4241, 11,
	180, 3, 180, 3, 180, 3, 180, 7, 180, 4246, 10, 180, 12, 180, 14, 180, 4249,
	11, 180, 3, 180, 3, 180, 3, 180, 7, 180, 4254, 10, 180, 12, 180, 14, 180,
	4257, 11, 180, 3, 180, 7, 180, 4260, 10, 180, 12, 180, 14, 180, 4263, 11,
	180, 5, 180, 4265, 10, 180, 3, 180, 3, 180, 5, 180, 4269, 10, 180, 3, 181,
	3, 181, 3, 181, 5, 181, 4274, 10, 181, 3, 181, 6, 181, 4277, 10, 181, 13,
	181, 14, 181, 4278, 3, 181, 3, 181, 6, 181, 4283, 10, 181, 13, 181, 14,
	181, 4284, 5, 181, 4287, 10, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182,
	3, 182, 3, 182, 6, 182, 4296, 10, 182, 13, 182, 14, 182, 4297, 3, 182,
	7, 182, 4301, 10, 182, 12, 182, 14, 182, 4304, 11, 182, 3, 182, 3, 182,
	6, 182, 4308, 10, 182, 13, 182, 14, 182, 4309, 5, 182, 4312, 10, 182, 3,
	182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3,
	185, 3, 185, 3, 185, 5, 185, 4326, 10, 185, 3, 185, 3, 185, 6, 185, 4330,
	10, 185, 13, 185, 14, 185, 4331, 3, 185, 3, 185, 3, 185, 5, 185, 4337,
	10, 185, 3, 186, 3, 186, 3, 186, 5, 186, 4342, 10, 186, 3, 186, 3, 186,
	6, 186, 4346, 10, 186, 13, 186, 14, 186, 4347, 3, 186, 3, 186, 3, 186,
	3, 186, 3, 186, 5, 186, 4355, 10, 186, 3, 187, 3, 187, 3, 187, 3, 188,
	3, 188, 3, 188, 5, 188, 4363, 10, 188, 3, 188, 3, 188, 3, 188, 3, 188,
	6, 188, 4369, 10, 188, 13, 188, 14, 188, 4370, 3, 188, 3, 188, 3, 188,
	5, 188, 4376, 10, 188, 3, 189, 3, 189, 3, 189, 3, 189, 5, 189, 4382, 10,
	189, 3, 189, 5, 189, 4385, 10, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3,
	189, 3, 189, 5, 189, 4393, 10, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3,
	190, 5, 190, 4400, 10, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3,
	191, 3, 191, 5, 191, 4409, 10, 191, 3, 191, 5, 191, 4412, 10, 191, 3, 192,
	3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193,
	3, 193, 3, 193, 3, 193, 7, 193, 4427, 10, 193, 12, 193, 14, 193, 4430,
	11, 193, 3, 193, 3, 193, 3, 194, 3, 194, 3, 194, 5, 194, 4437, 10, 194,
	3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 5, 194, 4445, 10, 194,
	3, 195, 3, 195, 5, 195, 4449, 10, 195, 3, 195, 3, 195, 3, 196, 3, 196,
	3, 196, 5, 196, 4456, 10, 196, 3, 196, 3, 196, 6, 196, 4460, 10, 196, 13,
	196, 14, 196, 4461, 3, 197, 3, 197, 3, 197, 3, 197, 6, 197, 4468, 10, 197,
	13, 197, 14, 197, 4469, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 7, 198,
	4477, 10, 198, 12, 198, 14, 198, 4480, 11, 198, 3, 198, 3, 198, 3, 198,
	5, 198, 4485, 10, 198, 3, 198, 3, 198, 3, 198, 7, 198, 4490, 10, 198, 12,
	198, 14, 198, 4493, 11, 198, 3, 198, 3, 198, 3, 198, 3, 198, 5, 198, 4499,
	10, 198, 3, 198, 7, 198, 4502, 10, 198, 12, 198, 14, 198, 4505, 11, 198,
	5, 198, 4507, 10, 198, 5, 198, 4509, 10, 198, 3, 198, 3, 198, 6, 198, 4513,
	10, 198, 13, 198, 14, 198, 4514, 5, 198, 4517, 10, 198, 3, 198, 3, 198,
	7, 198, 4521, 10, 198, 12, 198, 14, 198, 4524, 11, 198, 5, 198, 4526, 10,
	198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 7, 199, 4533, 10, 199, 12,
	199, 14, 199, 4536, 11, 199, 3, 199, 3, 199, 3, 199, 5, 199, 4541, 10,
	199, 3, 199, 3, 199, 3, 199, 7, 199, 4546, 10, 199, 12, 199, 14, 199, 4549,
	11, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 4555, 10, 199, 3, 199,
	7, 199, 4558, 10, 199, 12, 199, 14, 199, 4561, 11, 199, 5, 199, 4563, 10,
	199, 5, 199, 4565, 10, 199, 3, 199, 3, 199, 6, 199, 4569, 10, 199, 13,
	199, 14, 199, 4570, 5, 199, 4573, 10, 199, 3, 199, 3, 199, 7, 199, 4577,
	10, 199, 12, 199, 14, 199, 4580, 11, 199, 5, 199, 4582, 10, 199, 3, 200,
	3, 200, 3, 200, 5, 200, 4587, 10, 200, 3, 200, 3, 200, 3, 200, 7, 200,
	4592, 10, 200, 12, 200, 14, 200, 4595, 11, 200, 3, 201, 3, 201, 3, 201,
	3, 201, 7, 201, 4601, 10, 201, 12, 201, 14, 201, 4604, 11, 201, 3, 201,
	3, 201, 5, 201, 4608, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201,
	7, 201, 4615, 10, 201, 12, 201, 14, 201, 4618, 11, 201, 3, 201, 3, 201,
	3, 201, 3, 201, 5, 201, 4624, 10, 201, 3, 201, 7, 201, 4627, 10, 201, 12,
	201, 14, 201, 4630, 11, 201, 5, 201, 4632, 10, 201, 5, 201, 4634, 10, 201,
	3, 201, 3, 201, 3, 201, 3, 201, 7, 201, 4640, 10, 201, 12, 201, 14, 201,
	4643, 11, 201, 5, 201, 4645, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3,
	201, 3, 201, 5, 201, 4653, 10, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4658,
	10, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4663, 10, 201, 7, 201, 4665, 10,
	201, 12, 201, 14, 201, 4668, 11, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4673,
	10, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4678, 10, 201, 7, 201, 4680, 10,
	201, 12, 201, 14, 201, 4683, 11, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4688,
	10, 201, 5, 201, 4690, 10, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202,
	3, 202, 3, 202, 7, 202, 4699, 10, 202, 12, 202, 14, 202, 4702, 11, 202,
	5, 202, 4704, 10, 202, 3, 202, 3, 202, 3, 202, 7, 202, 4709, 10, 202, 12,
	202, 14, 202, 4712, 11, 202, 5, 202, 4714, 10, 202, 3, 203, 3, 203, 3,
	203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 7, 203, 4724, 10, 203, 12,
	203, 14, 203, 4727, 11, 203, 3, 203, 3, 203, 3, 203, 5, 203, 4732, 10,
	203, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 7, 204, 4739, 10, 204, 12,
	204, 14, 204, 4742, 11, 204, 3, 205, 3, 205, 3, 205, 3, 205, 7, 205, 4748,
	10, 205, 12, 205, 14, 205, 4751, 11, 205, 3, 205, 3, 205, 5, 205, 4755,
	10, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 7, 205, 4762, 10, 205,
	12, 205, 14, 205, 4765, 11, 205, 3, 205, 3, 205, 3, 205, 5, 205, 4770,
	10, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 7, 205,
	4779, 10, 205, 12, 205, 14, 205, 4782, 11, 205, 3, 205, 3, 205, 3, 205,
	3, 205, 7, 205, 4788, 10, 205, 12, 205, 14, 205, 4791, 11, 205, 3, 205,
	3, 205, 3, 205, 5, 205, 4796, 10, 205, 3, 205, 3, 205, 3, 205, 5, 205,
	4801, 10, 205, 7, 205, 4803, 10, 205, 12, 205, 14, 205, 4806, 11, 205,
	5, 205, 4808, 10, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206,
	3, 206, 3, 206, 7, 206, 4818, 10, 206, 12, 206, 14, 206, 4821, 11, 206,
	3, 207, 3, 207, 3, 207, 3, 207, 5, 207, 4827, 10, 207, 3, 207, 3, 207,
	3, 207, 5, 207, 4832, 10, 207, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209,
	3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 5, 209,
	4847, 10, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 5, 209, 4854, 10,
	209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 5, 209, 4862, 10,
	209, 3, 209, 5, 209, 4865, 10, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3,
	210, 3, 210, 3, 210, 3, 210, 5, 210, 4875, 10, 210, 3, 211, 3, 211, 3,
	211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 5, 211, 4885, 10, 211, 3,
	212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 5, 212, 4895,
	10, 212, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214,
	5, 214, 4905, 10, 214, 3, 215, 3, 215, 5, 215, 4909, 10, 215, 3, 215, 3,
	215, 5, 215, 4913, 10, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 5, 215, 4923, 10, 215, 3, 215, 3, 215, 3, 215, 5,
	215, 4928, 10, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3,
	215, 3, 215, 3, 215, 3, 215, 3, 215, 5, 215, 4986, 10, 215, 3, 216, 3,
	216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3,
	216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 5, 216, 5004, 10, 216, 3,
	217, 3, 217, 3, 217, 3, 217, 3, 218, 3, 218, 5, 218, 5012, 10, 218, 3,
	218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 7, 218, 5022,
	10, 218, 12, 218, 14, 218, 5025, 11, 218, 3, 218, 3, 218, 3, 218, 3, 218,
	5, 218, 5031, 10, 218, 5, 218, 5033, 10, 218, 3, 218, 3, 218, 3, 218, 3,
	218, 3, 218, 3, 218, 7, 218, 5041, 10, 218, 12, 218, 14, 218, 5044, 11,
	218, 5, 218, 5046, 10, 218, 3, 219, 3, 219, 3, 219, 3, 219, 7, 219, 5052,
	10, 219, 12, 219, 14, 219, 5055, 11, 219, 3, 220, 3, 220, 3, 220, 3, 220,
	5, 220, 5061, 10, 220, 3, 221, 3, 221, 5, 221, 5065, 10, 221, 3, 221, 3,
	221, 3, 221, 3, 222, 3, 222, 5, 222, 5072, 10, 222, 3, 222, 3, 222, 3,
	222, 5, 222, 5077, 10, 222, 3, 222, 5, 222, 5080, 10, 222, 3, 222, 5, 222,
	5083, 10, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223,
	5, 223, 5092, 10, 223, 3, 224, 3, 224, 5, 224, 5096, 10, 224, 3, 224, 3,
	224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 3,
	225, 3, 225, 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 227, 3, 227, 3,
	227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 7, 227, 5124, 10,
	227, 12, 227, 14, 227, 5127, 11, 227, 3, 227, 3, 227, 3, 227, 3, 227, 5,
	227, 5133, 10, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 5, 227, 5140,
	10, 227, 3, 227, 5, 227, 5143, 10, 227, 3, 227, 3, 227, 3, 227, 3, 227,
	3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 7, 227,
	5157, 10, 227, 12, 227, 14, 227, 5160, 11, 227, 5, 227, 5162, 10, 227,
	3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228,
	5172, 10, 228, 3, 228, 3, 228, 5, 228, 5176, 10, 228, 3, 228, 3, 228, 3,
	228, 3, 228, 5, 228, 5182, 10, 228, 3, 228, 5, 228, 5185, 10, 228, 3, 228,
	3, 228, 3, 228, 5, 228, 5190, 10, 228, 3, 228, 3, 228, 5, 228, 5194, 10,
	228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5201, 10, 228, 3,
	228, 5, 228, 5204, 10, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5210,
	10, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228,
	3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228,
	3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5234, 10, 228, 3, 228,
	3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228,
	3, 228, 5, 228, 5247, 10, 228, 3, 228, 5, 228, 5250, 10, 228, 3, 228, 3,
	228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5260, 10,
	228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5268, 10,
	228, 3, 228, 3, 228, 5, 228, 5272, 10, 228, 3, 228, 3, 228, 3, 228, 3,
	228, 3, 228, 5, 228, 5279, 10, 228, 3, 228, 5, 228, 5282, 10, 228, 3, 228,
	3, 228, 3, 228, 3, 228, 3, 228, 7, 228, 5289, 10, 228, 12, 228, 14, 228,
	5292, 11, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5297, 10, 228, 3, 228, 3,
	228, 3, 228, 3, 228, 5, 228, 5303, 10, 228, 3, 228, 3, 228, 3, 228, 3,
	228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5313, 10, 228, 5, 228, 5315,
	10, 228, 3, 229, 3, 229, 3, 229, 3, 229, 5, 229, 5321, 10, 229, 3, 229,
	5, 229, 5324, 10, 229, 3, 229, 5, 229, 5327, 10, 229, 3, 230, 3, 230, 3,
	230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 5, 230, 5339,
	10, 230, 3, 230, 5, 230, 5342, 10, 230, 3, 231, 3, 231, 3, 231, 3, 231,
	5, 231, 5348, 10, 231, 3, 232, 5, 232, 5351, 10, 232, 3, 232, 3, 232, 3,
	232, 3, 232, 3, 232, 3, 232, 5, 232, 5359, 10, 232, 3, 232, 3, 232, 3,
	232, 3, 232, 3, 232, 3, 232, 5, 232, 5367, 10, 232, 3, 233, 3, 233, 3,
	233, 3, 233, 5, 233, 5373, 10, 233, 3, 233, 3, 233, 5, 233, 5377, 10, 233,
	3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234,
	3, 234, 3, 234, 3, 234, 5, 234, 5391, 10, 234, 3, 235, 3, 235, 3, 235,
	3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 7, 236, 5401, 10, 236, 12, 236,
	14, 236, 5404, 11, 236, 3, 236, 3, 236, 3, 236, 3, 236, 5, 236, 5410, 10,
	236, 3, 236, 5, 236, 5413, 10, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3,
	237, 5, 237, 5420, 10, 237, 3, 237, 3, 237, 3, 237, 7, 237, 5425, 10, 237,
	12, 237, 14, 237, 5428, 11, 237, 3, 238, 3, 238, 5, 238, 5432, 10, 238,
	3, 238, 6, 238, 5435, 10, 238, 13, 238, 14, 238, 5436, 3, 239, 3, 239,
	3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 7, 239, 5446, 10, 239, 12, 239,
	14, 239, 5449, 11, 239, 3, 240, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241,
	3, 242, 3, 242, 5, 242, 5459, 10, 242, 3, 242, 3, 242, 3, 242, 3, 242,
	5, 242, 5465, 10, 242, 3, 243, 3, 243, 3, 243, 5, 243, 5470, 10, 243, 3,
	243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3,
	243, 3, 243, 5, 243, 5483, 10, 243, 5, 243, 5485, 10, 243, 3, 243, 3, 243,
	3, 243, 5, 243, 5490, 10, 243, 3, 243, 3, 243, 3, 243, 5, 243, 5495, 10,
	243, 5, 243, 5497, 10, 243, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 5,
	244, 5504, 10, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 5, 245, 5511,
	10, 245, 3, 245, 5, 245, 5514, 10, 245, 3, 245, 5, 245, 5517, 10, 245,
	3, 245, 3, 245, 3, 245, 3, 245, 5, 245, 5523, 10, 245, 3, 245, 3, 245,
	5, 245, 5527, 10, 245, 3, 246, 3, 246, 3, 246, 3, 246, 5, 246, 5533, 10,
	246, 3, 247, 3, 247, 3, 247, 3, 247, 5, 247, 5539, 10, 247, 3, 247, 3,
	247, 3, 248, 3, 248, 3, 248, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3,
	250, 5, 250, 5552, 10, 250, 3, 250, 3, 250, 3, 250, 5, 250, 5557, 10, 250,
	3, 250, 3, 250, 3, 250, 3, 250, 7, 250, 5563, 10, 250, 12, 250, 14, 250,
	5566, 11, 250, 5, 250, 5568, 10, 250, 3, 251, 3, 251, 3, 251, 5, 251, 5573,
	10, 251, 3, 251, 3, 251, 3, 251, 5, 251, 5578, 10, 251, 3, 251, 3, 251,
	3, 251, 3, 251, 7, 251, 5584, 10, 251, 12, 251, 14, 251, 5587, 11, 251,
	5, 251, 5589, 10, 251, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252,
	5, 252, 5597, 10, 252, 3, 253, 3, 253, 5, 253, 5601, 10, 253, 3, 253, 3,
	253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 7, 253, 5612,
	10, 253, 12, 253, 14, 253, 5615, 11, 253, 3, 253, 3, 253, 3, 253, 5, 253,
	5620, 10, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253,
	3, 253, 7, 253, 5630, 10, 253, 12, 253, 14, 253, 5633, 11, 253, 5, 253,
	5635, 10, 253, 3, 254, 3, 254, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255,
	5, 255, 5644, 10, 255, 3, 255, 3, 255, 3, 255, 5, 255, 5649, 10, 255, 3,
	256, 3, 256, 3, 256, 3, 256, 5, 256, 5655, 10, 256, 3, 257, 3, 257, 3,
	258, 3, 258, 3, 258, 5, 258, 5662, 10, 258, 5, 258, 5664, 10, 258, 3, 258,
	3, 258, 3, 258, 5, 258, 5669, 10, 258, 5, 258, 5671, 10, 258, 3, 259, 3,
	259, 5, 259, 5675, 10, 259, 3, 259, 3, 259, 3, 259, 3, 259, 5, 259, 5681,
	10, 259, 3, 259, 5, 259, 5684, 10, 259, 3, 259, 5, 259, 5687, 10, 259,
	3, 260, 3, 260, 3, 261, 3, 261, 3, 262, 3, 262, 3, 262, 3, 262, 5, 262,
	5697, 10, 262, 3, 263, 3, 263, 5, 263, 5701, 10, 263, 3, 264, 3, 264, 3,
	265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3,
	265, 3, 265, 3, 265, 3, 265, 3, 265, 6, 265, 5719, 10, 265, 13, 265, 14,
	265, 5720, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 5, 266, 5728, 10, 266,
	5, 266, 5730, 10, 266, 3, 267, 3, 267, 3, 267, 6, 267, 5735, 10, 267, 13,
	267, 14, 267, 5736, 5, 267, 5739, 10, 267, 3, 268, 3, 268, 5, 268, 5743,
	10, 268, 3, 269, 3, 269, 3, 269, 5, 269, 5748, 10, 269, 3, 270, 3, 270,
	3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 5, 270, 5759, 10,
	270, 3, 271, 3, 271, 3, 271, 5, 271, 5764, 10, 271, 3, 272, 3, 272, 3,
	273, 3, 273, 5, 273, 5770, 10, 273, 3, 274, 5, 274, 5773, 10, 274, 3, 274,
	3, 274, 5, 274, 5777, 10, 274, 3, 274, 6, 274, 5780, 10, 274, 13, 274,
	14, 274, 5781, 3, 274, 5, 274, 5785, 10, 274, 3, 274, 3, 274, 5, 274, 5789,
	10, 274, 3, 274, 3, 274, 5, 274, 5793, 10, 274, 5, 274, 5795, 10, 274,
	3, 275, 3, 275, 3, 276, 5, 276, 5800, 10, 276, 3, 276, 3, 276, 3, 277,
	5, 277, 5805, 10, 277, 3, 277, 3, 277, 3, 278, 3, 278, 3, 278, 3, 278,
	3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 5, 278, 5818, 10, 278, 3, 278,
	5, 278, 5821, 10, 278, 3, 279, 3, 279, 5, 279, 5825, 10, 279, 3, 279, 5,
	279, 5828, 10, 279, 3, 279, 5, 279, 5831, 10, 279, 3, 279, 3, 279, 3, 279,
	5, 279, 5836, 10, 279, 3, 279, 3, 279, 3, 279, 5, 279, 5841, 10, 279, 3,
	279, 3, 279, 3, 279, 5, 279, 5846, 10, 279, 3, 279, 5, 279, 5849, 10, 279,
	3, 279, 3, 279, 3, 279, 5, 279, 5854, 10, 279, 3, 279, 5, 279, 5857, 10,
	279, 3, 279, 3, 279, 3, 279, 3, 279, 5, 279, 5863, 10, 279, 3, 279, 5,
	279, 5866, 10, 279, 3, 279, 3, 279, 5, 279, 5870, 10, 279, 3, 279, 7, 279,
	5873, 10, 279, 12, 279, 14, 279, 5876, 11, 279, 3, 279, 3, 279, 5, 279,
	5880, 10, 279, 3, 279, 7, 279, 5883, 10, 279, 12, 279, 14, 279, 5886, 11,
	279, 3, 279, 3, 279, 5, 279, 5890, 10, 279, 3, 279, 5, 279, 5893, 10, 279,
	3, 279, 7, 279, 5896, 10, 279, 12, 279, 14, 279, 5899, 11, 279, 3, 279,
	3, 279, 5, 279, 5903, 10, 279, 3, 279, 7, 279, 5906, 10, 279, 12, 279,
	14, 279, 5909, 11, 279, 3, 279, 3, 279, 3, 279, 5, 279, 5914, 10, 279,
	3, 279, 3, 279, 3, 279, 5, 279, 5919, 10, 279, 3, 279, 3, 279, 3, 279,
	5, 279, 5924, 10, 279, 3, 279, 3, 279, 3, 279, 5, 279, 5929, 10, 279, 3,
	279, 5, 279, 5932, 10, 279, 3, 279, 3, 279, 3, 279, 5, 279, 5937, 10, 279,
	3, 279, 3, 279, 5, 279, 5941, 10, 279, 3, 279, 3, 279, 5, 279, 5945, 10,
	279, 3, 280, 3, 280, 3, 280, 3, 280, 7, 280, 5951, 10, 280, 12, 280, 14,
	280, 5954, 11, 280, 3, 280, 3, 280, 3, 281, 3, 281, 5, 281, 5960, 10, 281,
	3, 281, 3, 281, 5, 281, 5964, 10, 281, 3, 281, 3, 281, 3, 281, 5, 281,
	5969, 10, 281, 3, 281, 3, 281, 3, 281, 5, 281, 5974, 10, 281, 3, 281, 3,
	281, 5, 281, 5978, 10, 281, 5, 281, 5980, 10, 281, 3, 281, 5, 281, 5983,
	10, 281, 3, 282, 3, 282, 3, 282, 3, 282, 3, 283, 3, 283, 3, 283, 3, 283,
	3, 283, 3, 283, 3, 284, 3, 284, 3, 284, 3, 284, 5, 284, 5999, 10, 284,
	3, 284, 3, 284, 3, 285, 3, 285, 3, 285, 7, 285, 6006, 10, 285, 12, 285,
	14, 285, 6009, 11, 285, 3, 286, 3, 286, 3, 286, 7, 286, 6014, 10, 286,
	12, 286, 14, 286, 6017, 11, 286, 3, 287, 3, 287, 3, 287, 3, 287, 7, 287,
	6023, 10, 287, 12, 287, 14, 287, 6026, 11, 287, 3, 287, 3, 287, 3, 288,
	3, 288, 3, 288, 7, 288, 6033, 10, 288, 12, 288, 14, 288, 6036, 11, 288,
	3, 289, 3, 289, 3, 289, 7, 289, 6041, 10, 289, 12, 289, 14, 289, 6044,
	11, 289, 3, 290, 3, 290, 3, 290, 7, 290, 6049, 10, 290, 12, 290, 14, 290,
	6052, 11, 290, 3, 291, 3, 291, 3, 291, 7, 291, 6057, 10, 291, 12, 291,
	14, 291, 6060, 11, 291, 3, 292, 3, 292, 3, 292, 7, 292, 6065, 10, 292,
	12, 292, 14, 292, 6068, 11, 292, 3, 293, 3, 293, 5, 293, 6072, 10, 293,
	3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 5, 293, 6080, 10, 293,
	3, 293, 3, 293, 3, 293, 5, 293, 6085, 10, 293, 3, 294, 3, 294, 3, 294,
	5, 294, 6090, 10, 294, 3, 294, 5, 294, 6093, 10, 294, 3, 294, 3, 294, 3,
	294, 5, 294, 6098, 10, 294, 3, 294, 5, 294, 6101, 10, 294, 3, 295, 3, 295,
	5, 295, 6105, 10, 295, 3, 296, 3, 296, 3, 296, 3, 297, 3, 297, 3, 297,
	3, 297, 3, 298, 3, 298, 3, 298, 3, 298, 3, 298, 3, 298, 5, 298, 6120, 10,
	298, 3, 298, 3, 298, 3, 298, 3, 298, 3, 298, 5, 298, 6127, 10, 298, 3,
	298, 3, 298, 3, 298, 5, 298, 6132, 10, 298, 3, 299, 3, 299, 3, 299, 5,
	299, 6137, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 6, 299, 6168, 10, 299, 13, 299, 14,
	299, 6169, 3, 299, 3, 299, 5, 299, 6174, 10, 299, 3, 299, 3, 299, 3, 299,
	3, 299, 6, 299, 6180, 10, 299, 13, 299, 14, 299, 6181, 3, 299, 3, 299,
	5, 299, 6186, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299,
	3, 299, 5, 299, 6195, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299,
	3, 299, 5, 299, 6203, 10, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6208, 10,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6216, 10,
	299, 3, 299, 3, 299, 3, 299, 5, 299, 6221, 10, 299, 3, 299, 3, 299, 3,
	299, 5, 299, 6226, 10, 299, 5, 299, 6228, 10, 299, 3, 299, 3, 299, 3, 299,
	3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6237, 10, 299, 3, 299, 3, 299,
	3, 299, 5, 299, 6242, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299,
	3, 299, 5, 299, 6250, 10, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6255, 10,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6263, 10,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6271, 10,
	299, 3, 299, 5, 299, 6274, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 5, 299, 6284, 10, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6302, 10, 299, 3, 299, 3,
	299, 3, 299, 3, 299, 5, 299, 6308, 10, 299, 3, 299, 3, 299, 5, 299, 6312,
	10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6318, 10, 299, 3, 299,
	3, 299, 5, 299, 6322, 10, 299, 3, 299, 3, 299, 5, 299, 6326, 10, 299, 3,
	300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 301, 3, 301, 3, 301, 3, 301, 7,
	301, 6337, 10, 301, 12, 301, 14, 301, 6340, 11, 301, 3, 301, 3, 301, 3,
	301, 3, 301, 3, 301, 5, 301, 6347, 10, 301, 3, 302, 3, 302, 5, 302, 6351,
	10, 302, 3, 303, 3, 303, 3, 303, 5, 303, 6356, 10, 303, 3, 303, 3, 303,
	3, 303, 5, 303, 6361, 10, 303, 3, 303, 3, 303, 3, 303, 3, 303, 5, 303,
	6367, 10, 303, 3, 303, 3, 303, 3, 303, 5, 303, 6372, 10, 303, 3, 303, 3,
	303, 5, 303, 6376, 10, 303, 3, 303, 3, 303, 3, 303, 5, 303, 6381, 10, 303,
	3, 303, 3, 303, 3, 303, 5, 303, 6386, 10, 303, 3, 303, 3, 303, 3, 303,
	5, 303, 6391, 10, 303, 3, 303, 3, 303, 3, 303, 3, 303, 3, 303, 3, 303,
	7, 303, 6399, 10, 303, 12, 303, 14, 303, 6402, 11, 303, 5, 303, 6404, 10,
	303, 3, 303, 3, 303, 5, 303, 6408, 10, 303, 3, 303, 3, 303, 5, 303, 6412,
	10, 303, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 5, 304, 6419, 10, 304,
	3, 304, 3, 304, 5, 304, 6423, 10, 304, 3, 304, 3, 304, 3, 304, 3, 304,
	3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304,
	3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304,
	3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 5, 304, 6452, 10, 304, 3, 305,
	3, 305, 3, 305, 5, 305, 6457, 10, 305, 3, 305, 3, 305, 5, 305, 6461, 10,
	305, 3, 306, 5, 306, 6464, 10, 306, 3, 306, 5, 306, 6467, 10, 306, 3, 306,
	5, 306, 6470, 10, 306, 3, 306, 5, 306, 6473, 10, 306, 3, 307, 3, 307, 3,
	308, 3, 308, 3, 308, 3, 309, 3, 309, 3, 310, 3, 310, 5, 310, 6484, 10,
	310, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 312, 3, 312, 3, 312, 3,
	312, 3, 312, 3, 312, 3, 312, 5, 312, 6498, 10, 312, 3, 313, 3, 313, 3,
	313, 3, 313, 3, 313, 7, 313, 6505, 10, 313, 12, 313, 14, 313, 6508, 11,
	313, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3,
	314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3,
	314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 5, 314, 6533, 10, 314, 3,
	315, 3, 315, 3, 315, 3, 315, 3, 315, 3, 316, 3, 316, 3, 316, 3, 316, 5,
	316, 6544, 10, 316, 3, 316, 3, 316, 3, 316, 3, 316, 3, 316, 5, 316, 6551,
	10, 316, 7, 316, 6553, 10, 316, 12, 316, 14, 316, 6556, 11, 316, 3, 317,
	3, 317, 3, 317, 3, 317, 5, 317, 6562, 10, 317, 3, 318, 3, 318, 3, 318,
	3, 318, 3, 318, 3, 318, 5, 318, 6570, 10, 318, 3, 318, 3, 318, 3, 318,
	5, 318, 6575, 10, 318, 3, 318, 3, 318, 3, 318, 3, 318, 7, 318, 6581, 10,
	318, 12, 318, 14, 318, 6584, 11, 318, 3, 319, 3, 319, 3, 319, 5, 319, 6589,
	10, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319,
	5, 319, 6599, 10, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319,
	3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 5, 319, 6612, 10, 319, 3, 319,
	3, 319, 3, 319, 3, 319, 5, 319, 6618, 10, 319, 3, 319, 3, 319, 3, 319,
	3, 319, 5, 319, 6624, 10, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319,
	3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319,
	5, 319, 6640, 10, 319, 3, 319, 3, 319, 3, 319, 3, 319, 5, 319, 6646, 10,
	319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 3, 319, 7, 319, 6655,
	10, 319, 12, 319, 14, 319, 6658, 11, 319, 3, 320, 3, 320, 3, 320, 3, 320,
	3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320,
	3, 320, 7, 320, 6674, 10, 320, 12, 320, 14, 320, 6677, 11, 320, 3, 320,
	3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 6, 320, 6686, 10, 320,
	13, 320, 14, 320, 6687, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320,
	3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320,
	5, 320, 6705, 10, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320,
	3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320,
	7, 320, 6722, 10, 320, 12, 320, 14, 320, 6725, 11, 320, 3, 321, 3, 321,
	3, 322, 3, 322, 3, 322, 3, 322, 3, 322, 3, 322, 3, 322, 3, 322, 3, 322,
	3, 322, 3, 322, 3, 322, 3, 322, 3, 322, 5, 322, 6743, 10, 322, 3, 323,
	3, 323, 3, 323, 3, 323, 3, 323, 3, 323, 3, 323, 5, 323, 6752, 10, 323,
	3, 324, 3, 324, 3, 324, 3, 324, 3, 324, 3, 324, 3, 324, 5, 324, 6761, 10,
	324, 3, 325, 3, 325, 3, 326, 3, 326, 3, 326, 3, 326, 3, 326, 5, 326, 6770,
	10, 326, 3, 327, 3, 327, 3, 328, 3, 328, 3, 329, 3, 329, 3, 330, 3, 330,
	3, 331, 3, 331, 3, 332, 3, 332, 3, 333, 3, 333, 3, 333, 2, 5, 634, 636,
	638, 334, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34,
	36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70,
	72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104,
	106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134,
	136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164,
	166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194,
	196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224,
	226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254,
	256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284,
	286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314,
	316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344,
	346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374,
	376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404,
	406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434,
	436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464,
	466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494,
	496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524,
	526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554,
	556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584,
	586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614,
	616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644,
	646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 2, 137, 4, 2, 39, 39,
	144, 144, 4, 2, 505, 505, 511, 511, 5, 2, 68, 68, 151, 151, 172, 172, 5,
	2, 42, 42, 371, 371, 435, 435, 6, 2, 42, 42, 403, 403, 503, 503, 577, 577,
	4, 2, 494, 494, 1101, 1101, 4, 2, 77, 77, 135, 135, 4, 2, 16, 16, 322,
	322, 5, 2, 44, 44, 83, 83, 175, 175, 4, 2, 417, 417, 529, 529, 5, 2, 486,
	486, 616, 616, 624, 624, 4, 2, 378, 378, 440, 440, 4, 2, 340, 340, 454,
	454, 4, 2, 338, 338, 426, 426, 5, 2, 78, 78, 82, 82, 119, 119, 5, 2, 42,
	42, 388, 388, 414, 414, 5, 2, 42, 42, 384, 384, 749, 749, 4, 2, 603, 603,
	638, 638, 4, 2, 79, 79, 89, 89, 5, 2, 419, 419, 520, 520, 579, 579, 4,
	2, 68, 68, 151, 151, 3, 2, 344, 345, 3, 2, 1091, 1092, 4, 2, 1101, 1101,
	1109, 1109, 5, 2, 413, 413, 449, 449, 501, 501, 4, 2, 42, 42, 1091, 1092,
	9, 2, 42, 42, 357, 357, 359, 359, 388, 388, 414, 414, 543, 543, 1109, 1109,
	4, 2, 494, 494, 504, 504, 3, 2, 1092, 1093, 4, 2, 7, 7, 51, 51, 4, 2, 27,
	27, 31, 31, 4, 2, 439, 439, 639, 639, 4, 2, 14, 14, 166, 166, 4, 2, 183,
	183, 643, 643, 4, 2, 22, 22, 138, 138, 5, 2, 43, 43, 74, 74, 102, 102,
	4, 2, 102, 102, 361, 361, 4, 2, 352, 352, 410, 410, 4, 2, 98, 98, 569,
	569, 4, 2, 43, 43, 102, 102, 4, 2, 8, 8, 49, 49, 4, 2, 179, 179, 635, 635,
	6, 2, 413, 413, 449, 449, 500, 500, 533, 533, 4, 2, 413, 413, 500, 500,
	4, 2, 15, 15, 45, 45, 5, 2, 65, 65, 77, 77, 177, 177, 4, 2, 35, 35, 81,
	81, 4, 2, 94, 94, 142, 142, 4, 2, 8, 8, 49, 50, 3, 2, 592, 593, 4, 2, 422,
	422, 575, 575, 4, 2, 217, 217, 457, 457, 7, 2, 103, 103, 462, 463, 465,
	465, 469, 477, 545, 545, 6, 2, 459, 460, 464, 464, 466, 467, 546, 546,
	5, 2, 104, 104, 458, 458, 468, 468, 4, 2, 442, 442, 594, 594, 4, 2, 588,
	588, 590, 590, 4, 2, 332, 332, 595, 595, 4, 2, 88, 88, 560, 560, 4, 2,
	51, 51, 376, 376, 5, 2, 32, 32, 60, 60, 170, 170, 5, 2, 125, 125, 163,
	163, 420, 420, 4, 2, 100, 100, 173, 173, 4, 2, 348, 348, 580, 580, 4, 2,
	40, 40, 637, 637, 4, 2, 110, 110, 454, 454, 4, 2, 406, 406, 539, 539, 4,
	2, 163, 163, 662, 662, 6, 2, 197, 197, 199, 199, 205, 205, 604, 604, 4,
	2, 1061, 1061, 1077, 1077, 4, 2, 333, 333, 547, 547, 4, 2, 67, 67, 78,
	78, 8, 2, 125, 125, 163, 163, 168, 168, 399, 399, 420, 420, 637, 637, 4,
	2, 493, 493, 600, 600, 4, 2, 396, 396, 641, 641, 4, 2, 125, 125, 420, 420,
	5, 2, 79, 79, 90, 90, 433, 433, 5, 2, 422, 422, 454, 454, 575, 575, 4,
	2, 600, 600, 636, 636, 4, 2, 363, 363, 538, 538, 8, 2, 217, 217, 393, 393,
	395, 395, 421, 421, 544, 544, 581, 581, 4, 2, 45, 46, 61, 61, 5, 2, 406,
	406, 522, 522, 841, 841, 4, 2, 446, 446, 618, 618, 12, 2, 347, 347, 354,
	354, 365, 367, 373, 373, 487, 487, 495, 495, 605, 605, 612, 612, 793, 793,
	959, 959, 4, 2, 36, 36, 160, 160, 4, 2, 112, 112, 951, 951, 13, 2, 347,
	347, 354, 354, 365, 367, 373, 373, 487, 487, 495, 495, 561, 561, 605, 605,
	612, 612, 793, 793, 959, 959, 5, 2, 1101, 1101, 1109, 1109, 1111, 1111,
	3, 2, 1113, 1114, 6, 2, 362, 362, 744, 755, 1101, 1101, 1109, 1110, 5,
	2, 1091, 1093, 1102, 1102, 1104, 1104, 4, 2, 62, 62, 169, 169, 4, 2, 111,
	111, 1105, 1105, 7, 2, 26, 26, 213, 215, 222, 222, 224, 227, 498, 498,
	4, 2, 26, 26, 214, 214, 4, 2, 26, 26, 213, 213, 3, 2, 187, 198, 5, 2, 174,
	174, 186, 186, 578, 578, 4, 2, 202, 207, 414, 414, 8, 2, 208, 208, 219,
	219, 221, 221, 223, 223, 230, 230, 336, 337, 6, 2, 209, 212, 217, 218,
	220, 220, 334, 334, 4, 2, 147, 147, 228, 228, 4, 2, 446, 446, 760, 768,
	4, 2, 217, 217, 498, 498, 7, 2, 191, 191, 197, 197, 208, 209, 211, 211,
	446, 446, 4, 2, 174, 174, 578, 578, 4, 2, 303, 304, 310, 310, 4, 2, 37,
	37, 301, 304, 3, 2, 313, 314, 5, 2, 18, 18, 92, 92, 167, 167, 4, 2, 213,
	213, 217, 217, 4, 2, 208, 209, 211, 211, 5, 2, 15, 15, 45, 45, 949, 949,
	5, 2, 274, 274, 286, 287, 297, 297, 5, 2, 275, 277, 293, 296, 298, 300,
	4, 2, 283, 283, 285, 285, 4, 2, 281, 281, 284, 284, 4, 2, 279, 280, 290,
	292, 4, 2, 127, 127, 569, 569, 4, 2, 416, 416, 530, 530, 4, 2, 509, 509,
	523, 523, 4, 2, 109, 109, 1080, 1080, 5, 2, 62, 62, 169, 169, 628, 628,
	4, 2, 131, 131, 143, 143, 5, 2, 8, 8, 325, 325, 584, 584, 5, 2, 109, 109,
	1073, 1074, 1080, 1081, 3, 2, 1070, 1076, 4, 2, 217, 217, 703, 743, 3,
	2, 756, 759, 3, 2, 662, 670, 3, 2, 654, 661, 5, 2, 208, 212, 225, 225,
	228, 228, 32, 2, 36, 36, 48, 48, 58, 58, 72, 72, 112, 112, 118, 118, 160,
	160, 230, 230, 274, 278, 282, 282, 286, 287, 293, 300, 320, 415, 417, 438,
	440, 529, 531, 561, 563, 602, 604, 613, 615, 622, 624, 637, 640, 641, 643,
	653, 672, 680, 685, 686, 688, 694, 696, 702, 749, 749, 793, 793, 959, 959,
	1117, 1117, 20, 2, 39, 39, 94, 94, 142, 142, 144, 144, 208, 210, 212, 212,
	242, 273, 278, 278, 312, 312, 439, 439, 639, 639, 654, 661, 696, 696, 760,
	760, 763, 792, 794, 958, 960, 1060, 1076, 1076, 2, 7973, 2, 667, 3, 2,
	2, 2, 4, 686, 3, 2, 2, 2, 6, 707, 3, 2, 2, 2, 8, 709, 3, 2, 2, 2, 10, 746,
	3, 2, 2, 2, 12, 758, 3, 2, 2, 2, 14, 769, 3, 2, 2, 2, 16, 786, 3, 2, 2,
	2, 18, 791, 3, 2, 2, 2, 20, 803, 3, 2, 2, 2, 22, 830, 3, 2, 2, 2, 24, 839,
	3, 2, 2, 2, 26, 841, 3, 2, 2, 2, 28, 853, 3, 2, 2, 2, 30, 883, 3, 2, 2,
	2, 32, 919, 3, 2, 2, 2, 34, 970, 3, 2, 2, 2, 36, 996, 3, 2, 2, 2, 38, 1026,
	3, 2, 2, 2, 40, 1123, 3, 2, 2, 2, 42, 1125, 3, 2, 2, 2, 44, 1143, 3, 2,
	2, 2, 46, 1204, 3, 2, 2, 2, 48, 1223, 3, 2, 2, 2, 50, 1278, 3, 2, 2, 2,
	52, 1285, 3, 2, 2, 2, 54, 1287, 3, 2, 2, 2, 56, 1331, 3, 2, 2, 2, 58, 1337,
	3, 2, 2, 2, 60, 1339, 3, 2, 2, 2, 62, 1360, 3, 2, 2, 2, 64, 1367, 3, 2,
	2, 2, 66, 1369, 3, 2, 2, 2, 68, 1385, 3, 2, 2, 2, 70, 1388, 3, 2, 2, 2,
	72, 1393, 3, 2, 2, 2, 74, 1419, 3, 2, 2, 2, 76, 1435, 3, 2, 2, 2, 78, 1437,
	3, 2, 2, 2, 80, 1453, 3, 2, 2, 2, 82, 1455, 3, 2, 2, 2, 84, 1515, 3, 2,
	2, 2, 86, 1586, 3, 2, 2, 2, 88, 1588, 3, 2, 2, 2, 90, 1616, 3, 2, 2, 2,
	92, 1624, 3, 2, 2, 2, 94, 1654, 3, 2, 2, 2, 96, 1801, 3, 2, 2, 2, 98, 1803,
	3, 2, 2, 2, 100, 1805, 3, 2, 2, 2, 102, 1808, 3, 2, 2, 2, 104, 1882, 3,
	2, 2, 2, 106, 1905, 3, 2, 2, 2, 108, 2053, 3, 2, 2, 2, 110, 2058, 3, 2,
	2, 2, 112, 2060, 3, 2, 2, 2, 114, 2070, 3, 2, 2, 2, 116, 2126, 3, 2, 2,
	2, 118, 2146, 3, 2, 2, 2, 120, 2148, 3, 2, 2, 2, 122, 2183, 3, 2, 2, 2,
	124, 2192, 3, 2, 2, 2, 126, 2199, 3, 2, 2, 2, 128, 2222, 3, 2, 2, 2, 130,
	2231, 3, 2, 2, 2, 132, 2246, 3, 2, 2, 2, 134, 2268, 3, 2, 2, 2, 136, 2288,
	3, 2, 2, 2, 138, 2686, 3, 2, 2, 2, 140, 2688, 3, 2, 2, 2, 142, 2695, 3,
	2, 2, 2, 144, 2702, 3, 2, 2, 2, 146, 2725, 3, 2, 2, 2, 148, 2733, 3, 2,
	2, 2, 150, 2740, 3, 2, 2, 2, 152, 2747, 3, 2, 2, 2, 154, 2754, 3, 2, 2,
	2, 156, 2766, 3, 2, 2, 2, 158, 2776, 3, 2, 2, 2, 160, 2783, 3, 2, 2, 2,
	162, 2799, 3, 2, 2, 2, 164, 2809, 3, 2, 2, 2, 166, 2813, 3, 2, 2, 2, 168,
	2819, 3, 2, 2, 2, 170, 2831, 3, 2, 2, 2, 172, 2833, 3, 2, 2, 2, 174, 2840,
	3, 2, 2, 2, 176, 2842, 3, 2, 2, 2, 178, 2893, 3, 2, 2, 2, 180, 2967, 3,
	2, 2, 2, 182, 3026, 3, 2, 2, 2, 184, 3114, 3, 2, 2, 2, 186, 3118, 3, 2,
	2, 2, 188, 3138, 3, 2, 2, 2, 190, 3140, 3, 2, 2, 2, 192, 3148, 3, 2, 2,
	2, 194, 3156, 3, 2, 2, 2, 196, 3158, 3, 2, 2, 2, 198, 3188, 3, 2, 2, 2,
	200, 3243, 3, 2, 2, 2, 202, 3252, 3, 2, 2, 2, 204, 3272, 3, 2, 2, 2, 206,
	3284, 3, 2, 2, 2, 208, 3288, 3, 2, 2, 2, 210, 3321, 3, 2, 2, 2, 212, 3342,
	3, 2, 2, 2, 214, 3352, 3, 2, 2, 2, 216, 3356, 3, 2, 2, 2, 218, 3381, 3,
	2, 2, 2, 220, 3423, 3, 2, 2, 2, 222, 3425, 3, 2, 2, 2, 224, 3440, 3, 2,
	2, 2, 226, 3486, 3, 2, 2, 2, 228, 3496, 3, 2, 2, 2, 230, 3506, 3, 2, 2,
	2, 232, 3566, 3, 2, 2, 2, 234, 3568, 3, 2, 2, 2, 236, 3594, 3, 2, 2, 2,
	238, 3600, 3, 2, 2, 2, 240, 3616, 3, 2, 2, 2, 242, 3620, 3, 2, 2, 2, 244,
	3658, 3, 2, 2, 2, 246, 3696, 3, 2, 2, 2, 248, 3710, 3, 2, 2, 2, 250, 3718,
	3, 2, 2, 2, 252, 3722, 3, 2, 2, 2, 254, 3728, 3, 2, 2, 2, 256, 3742, 3,
	2, 2, 2, 258, 3745, 3, 2, 2, 2, 260, 3763, 3, 2, 2, 2, 262, 3767, 3, 2,
	2, 2, 264, 3783, 3, 2, 2, 2, 266, 3785, 3, 2, 2, 2, 268, 3797, 3, 2, 2,
	2, 270, 3801, 3, 2, 2, 2, 272, 3818, 3, 2, 2, 2, 274, 3835, 3, 2, 2, 2,
	276, 3838, 3, 2, 2, 2, 278, 3848, 3, 2, 2, 2, 280, 3852, 3, 2, 2, 2, 282,
	3862, 3, 2, 2, 2, 284, 3865, 3, 2, 2, 2, 286, 3870, 3, 2, 2, 2, 288, 3890,
	3, 2, 2, 2, 290, 3892, 3, 2, 2, 2, 292, 3909, 3, 2, 2, 2, 294, 3918, 3,
	2, 2, 2, 296, 3927, 3, 2, 2, 2, 298, 3929, 3, 2, 2, 2, 300, 3943, 3, 2,
	2, 2, 302, 3954, 3, 2, 2, 2, 304, 3963, 3, 2, 2, 2, 306, 3966, 3, 2, 2,
	2, 308, 3974, 3, 2, 2, 2, 310, 3999, 3, 2, 2, 2, 312, 4011, 3, 2, 2, 2,
	314, 4014, 3, 2, 2, 2, 316, 4046, 3, 2, 2, 2, 318, 4048, 3, 2, 2, 2, 320,
	4050, 3, 2, 2, 2, 322, 4052, 3, 2, 2, 2, 324, 4054, 3, 2, 2, 2, 326, 4107,
	3, 2, 2, 2, 328, 4109, 3, 2, 2, 2, 330, 4115, 3, 2, 2, 2, 332, 4135, 3,
	2, 2, 2, 334, 4149, 3, 2, 2, 2, 336, 4160, 3, 2, 2, 2, 338, 4162, 3, 2,
	2, 2, 340, 4168, 3, 2, 2, 2, 342, 4178, 3, 2, 2, 2, 344, 4182, 3, 2, 2,
	2, 346, 4189, 3, 2, 2, 2, 348, 4193, 3, 2, 2, 2, 350, 4199, 3, 2, 2, 2,
	352, 4206, 3, 2, 2, 2, 354, 4212, 3, 2, 2, 2, 356, 4218, 3, 2, 2, 2, 358,
	4223, 3, 2, 2, 2, 360, 4270, 3, 2, 2, 2, 362, 4291, 3, 2, 2, 2, 364, 4316,
	3, 2, 2, 2, 366, 4319, 3, 2, 2, 2, 368, 4325, 3, 2, 2, 2, 370, 4341, 3,
	2, 2, 2, 372, 4356, 3, 2, 2, 2, 374, 4362, 3, 2, 2, 2, 376, 4392, 3, 2,
	2, 2, 378, 4394, 3, 2, 2, 2, 380, 4401, 3, 2, 2, 2, 382, 4413, 3, 2, 2,
	2, 384, 4419, 3, 2, 2, 2, 386, 4444, 3, 2, 2, 2, 388, 4448, 3, 2, 2, 2,
	390, 4452, 3, 2, 2, 2, 392, 4463, 3, 2, 2, 2, 394, 4525, 3, 2, 2, 2, 396,
	4581, 3, 2, 2, 2, 398, 4583, 3, 2, 2, 2, 400, 4689, 3, 2, 2, 2, 402, 4713,
	3, 2, 2, 2, 404, 4715, 3, 2, 2, 2, 406, 4733, 3, 2, 2, 2, 408, 4807, 3,
	2, 2, 2, 410, 4809, 3, 2, 2, 2, 412, 4822, 3, 2, 2, 2, 414, 4833, 3, 2,
	2, 2, 416, 4864, 3, 2, 2, 2, 418, 4874, 3, 2, 2, 2, 420, 4884, 3, 2, 2,
	2, 422, 4886, 3, 2, 2, 2, 424, 4896, 3, 2, 2, 2, 426, 4899, 3, 2, 2, 2,
	428, 4985, 3, 2, 2, 2, 430, 5003, 3, 2, 2, 2, 432, 5005, 3, 2, 2, 2, 434,
	5009, 3, 2, 2, 2, 436, 5047, 3, 2, 2, 2, 438, 5056, 3, 2, 2, 2, 440, 5062,
	3, 2, 2, 2, 442, 5069, 3, 2, 2, 2, 444, 5091, 3, 2, 2, 2, 446, 5093, 3,
	2, 2, 2, 448, 5104, 3, 2, 2, 2, 450, 5110, 3, 2, 2, 2, 452, 5161, 3, 2,
	2, 2, 454, 5314, 3, 2, 2, 2, 456, 5326, 3, 2, 2, 2, 458, 5341, 3, 2, 2,
	2, 460, 5347, 3, 2, 2, 2, 462, 5366, 3, 2, 2, 2, 464, 5376, 3, 2, 2, 2,
	466, 5390, 3, 2, 2, 2, 468, 5392, 3, 2, 2, 2, 470, 5395, 3, 2, 2, 2, 472,
	5417, 3, 2, 2, 2, 474, 5429, 3, 2, 2, 2, 476, 5438, 3, 2, 2, 2, 478, 5450,
	3, 2, 2, 2, 480, 5454, 3, 2, 2, 2, 482, 5456, 3, 2, 2, 2, 484, 5496, 3,
	2, 2, 2, 486, 5503, 3, 2, 2, 2, 488, 5505, 3, 2, 2, 2, 490, 5528, 3, 2,
	2, 2, 492, 5534, 3, 2, 2, 2, 494, 5542, 3, 2, 2, 2, 496, 5545, 3, 2, 2,
	2, 498, 5548, 3, 2, 2, 2, 500, 5569, 3, 2, 2, 2, 502, 5590, 3, 2, 2, 2,
	504, 5598, 3, 2, 2, 2, 506, 5636, 3, 2, 2, 2, 508, 5648, 3, 2, 2, 2, 510,
	5650, 3, 2, 2, 2, 512, 5656, 3, 2, 2, 2, 514, 5670, 3, 2, 2, 2, 516, 5683,
	3, 2, 2, 2, 518, 5688, 3, 2, 2, 2, 520, 5690, 3, 2, 2, 2, 522, 5696, 3,
	2, 2, 2, 524, 5700, 3, 2, 2, 2, 526, 5702, 3, 2, 2, 2, 528, 5704, 3, 2,
	2, 2, 530, 5722, 3, 2, 2, 2, 532, 5738, 3, 2, 2, 2, 534, 5742, 3, 2, 2,
	2, 536, 5747, 3, 2, 2, 2, 538, 5758, 3, 2, 2, 2, 540, 5763, 3, 2, 2, 2,
	542, 5765, 3, 2, 2, 2, 544, 5769, 3, 2, 2, 2, 546, 5794, 3, 2, 2, 2, 548,
	5796, 3, 2, 2, 2, 550, 5799, 3, 2, 2, 2, 552, 5804, 3, 2, 2, 2, 554, 5820,
	3, 2, 2, 2, 556, 5944, 3, 2, 2, 2, 558, 5946, 3, 2, 2, 2, 560, 5979, 3,
	2, 2, 2, 562, 5984, 3, 2, 2, 2, 564, 5988, 3, 2, 2, 2, 566, 5994, 3, 2,
	2, 2, 568, 6002, 3, 2, 2, 2, 570, 6010, 3, 2, 2, 2, 572, 6018, 3, 2, 2,
	2, 574, 6029, 3, 2, 2, 2, 576, 6037, 3, 2, 2, 2, 578, 6045, 3, 2, 2, 2,
	580, 6053, 3, 2, 2, 2, 582, 6061, 3, 2, 2, 2, 584, 6079, 3, 2, 2, 2, 586,
	6100, 3, 2, 2, 2, 588, 6104, 3, 2, 2, 2, 590, 6106, 3, 2, 2, 2, 592, 6109,
	3, 2, 2, 2, 594, 6131, 3, 2, 2, 2, 596, 6325, 3, 2, 2, 2, 598, 6327, 3,
	2, 2, 2, 600, 6346, 3, 2, 2, 2, 602, 6348, 3, 2, 2, 2, 604, 6411, 3, 2,
	2, 2, 606, 6451, 3, 2, 2, 2, 608, 6453, 3, 2, 2, 2, 610, 6463, 3, 2, 2,
	2, 612, 6474, 3, 2, 2, 2, 614, 6476, 3, 2, 2, 2, 616, 6479, 3, 2, 2, 2,
	618, 6483, 3, 2, 2, 2, 620, 6485, 3, 2, 2, 2, 622, 6497, 3, 2, 2, 2, 624,
	6499, 3, 2, 2, 2, 626, 6532, 3, 2, 2, 2, 628, 6534, 3, 2, 2, 2, 630, 6543,
	3, 2, 2, 2, 632, 6561, 3, 2, 2, 2, 634, 6574, 3, 2, 2, 2, 636, 6585, 3,
	2, 2, 2, 638, 6704, 3, 2, 2, 2, 640, 6726, 3, 2, 2, 2, 642, 6742, 3, 2,
	2, 2, 644, 6751, 3, 2, 2, 2, 646, 6760, 3, 2, 2, 2, 648, 6762, 3, 2, 2,
	2, 650, 6769, 3, 2, 2, 2, 652, 6771, 3, 2, 2, 2, 654, 6773, 3, 2, 2, 2,
	656, 6775, 3, 2, 2, 2, 658, 6777, 3, 2, 2, 2, 660, 6779, 3, 2, 2, 2, 662,
	6781, 3, 2, 2, 2, 664, 6783, 3, 2, 2, 2, 666, 668, 5, 4, 3, 2, 667, 666,
	3, 2, 2, 2, 667, 668, 3, 2, 2, 2, 668, 671, 3, 2, 2, 2, 669, 670, 7, 1074,
	2, 2, 670, 672, 7, 1074, 2, 2, 671, 669, 3, 2, 2, 2, 671, 672, 3, 2, 2,
	2, 672, 673, 3, 2, 2, 2, 673, 674, 7, 2, 2, 3, 674, 3, 3, 2, 2, 2, 675,
	678, 5, 6, 4, 2, 676, 677, 7, 1074, 2, 2, 677, 679, 7, 1074, 2, 2, 678,
	676, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 681, 3, 2, 2, 2, 680, 682,
	7, 1089, 2, 2, 681, 680, 3, 2, 2, 2, 681, 682, 3, 2, 2, 2, 682, 685, 3,
	2, 2, 2, 683, 685, 5, 8, 5, 2, 684, 675, 3, 2, 2, 2, 684, 683, 3, 2, 2,
	2, 685, 688, 3, 2, 2, 2, 686, 684, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687,
	698, 3, 2, 2, 2, 688, 686, 3, 2, 2, 2, 689, 695, 5, 6, 4, 2, 690, 691,
	7, 1074, 2, 2, 691, 693, 7, 1074, 2, 2, 692, 690, 3, 2, 2, 2, 692, 693,
	3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 696, 7, 1089, 2, 2, 695, 692, 3,
	2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 699, 3, 2, 2, 2, 697, 699, 5, 8, 5,
	2, 698, 689, 3, 2, 2, 2, 698, 697, 3, 2, 2, 2, 699, 5, 3, 2, 2, 2, 700,
	708, 5, 10, 6, 2, 701, 708, 5, 12, 7, 2, 702, 708, 5, 14, 8, 2, 703, 708,
	5, 16, 9, 2, 704, 708, 5, 18, 10, 2, 705, 708, 5, 22, 12, 2, 706, 708,
	5, 24, 13, 2, 707, 700, 3, 2, 2, 2, 707, 701, 3, 2, 2, 2, 707, 702, 3,
	2, 2, 2, 707, 703, 3, 2, 2, 2, 707, 704, 3, 2, 2, 2, 707, 705, 3, 2, 2,
	2, 707, 706, 3, 2, 2, 2, 708, 7, 3, 2, 2, 2, 709, 710, 7, 1089, 2, 2, 710,
	9, 3, 2, 2, 2, 711, 747, 5, 26, 14, 2, 712, 747, 5, 28, 15, 2, 713, 747,
	5, 30, 16, 2, 714, 747, 5, 32, 17, 2, 715, 747, 5, 34, 18, 2, 716, 747,
	5, 36, 19, 2, 717, 747, 5, 38, 20, 2, 718, 747, 5, 40, 21, 2, 719, 747,
	5, 42, 22, 2, 720, 747, 5, 44, 23, 2, 721, 747, 5, 46, 24, 2, 722, 747,
	5, 48, 25, 2, 723, 747, 5, 118, 60, 2, 724, 747, 5, 120, 61, 2, 725, 747,
	5, 122, 62, 2, 726, 747, 5, 124, 63, 2, 727, 747, 5, 126, 64, 2, 728, 747,
	5, 128, 65, 2, 729, 747, 5, 130, 66, 2, 730, 747, 5, 132, 67, 2, 731, 747,
	5, 134, 68, 2, 732, 747, 5, 136, 69, 2, 733, 747, 5, 140, 71, 2, 734, 747,
	5, 142, 72, 2, 735, 747, 5, 144, 73, 2, 736, 747, 5, 146, 74, 2, 737, 747,
	5, 148, 75, 2, 738, 747, 5, 150, 76, 2, 739, 747, 5, 152, 77, 2, 740, 747,
	5, 154, 78, 2, 741, 747, 5, 156, 79, 2, 742, 747, 5, 158, 80, 2, 743, 747,
	5, 160, 81, 2, 744, 747, 5, 162, 82, 2, 745, 747, 5, 166, 84, 2, 746, 711,
	3, 2, 2, 2, 746, 712, 3, 2, 2, 2, 746, 713, 3, 2, 2, 2, 746, 714, 3, 2,
	2, 2, 746, 715, 3, 2, 2, 2, 746, 716, 3, 2, 2, 2, 746, 717, 3, 2, 2, 2,
	746, 718, 3, 2, 2, 2, 746, 719, 3, 2, 2, 2, 746, 720, 3, 2, 2, 2, 746,
	721, 3, 2, 2, 2, 746, 722, 3, 2, 2, 2, 746, 723, 3, 2, 2, 2, 746, 724,
	3, 2, 2, 2, 746, 725, 3, 2, 2, 2, 746, 726, 3, 2, 2, 2, 746, 727, 3, 2,
	2, 2, 746, 728, 3, 2, 2, 2, 746, 729, 3, 2, 2, 2, 746, 730, 3, 2, 2, 2,
	746, 731, 3, 2, 2, 2, 746, 732, 3, 2, 2, 2, 746, 733, 3, 2, 2, 2, 746,
	734, 3, 2, 2, 2, 746, 735, 3, 2, 2, 2, 746, 736, 3, 2, 2, 2, 746, 737,
	3, 2, 2, 2, 746, 738, 3, 2, 2, 2, 746, 739, 3, 2, 2, 2, 746, 740, 3, 2,
	2, 2, 746, 741, 3, 2, 2, 2, 746, 742, 3, 2, 2, 2, 746, 743, 3, 2, 2, 2,
	746, 744, 3, 2, 2, 2, 746, 745, 3, 2, 2, 2, 747, 11, 3, 2, 2, 2, 748, 759,
	5, 184, 93, 2, 749, 759, 5, 176, 89, 2, 750, 759, 5, 186, 94, 2, 751, 759,
	5, 170, 86, 2, 752, 759, 5, 182, 92, 2, 753, 759, 5, 168, 85, 2, 754, 759,
	5, 178, 90, 2, 755, 759, 5, 180, 91, 2, 756, 759, 5, 172, 87, 2, 757, 759,
	5, 174, 88, 2, 758, 748, 3, 2, 2, 2, 758, 749, 3, 2, 2, 2, 758, 750, 3,
	2, 2, 2, 758, 751, 3, 2, 2, 2, 758, 752, 3, 2, 2, 2, 758, 753, 3, 2, 2,
	2, 758, 754, 3, 2, 2, 2, 758, 755, 3, 2, 2, 2, 758, 756, 3, 2, 2, 2, 758,
	757, 3, 2, 2, 2, 759, 13, 3, 2, 2, 2, 760, 770, 5, 266, 134, 2, 761, 770,
	5, 268, 135, 2, 762, 770, 5, 270, 136, 2, 763, 770, 5, 272, 137, 2, 764,
	770, 5, 274, 138, 2, 765, 770, 5, 276, 139, 2, 766, 770, 5, 278, 140, 2,
	767, 770, 5, 280, 141, 2, 768, 770, 5, 282, 142, 2, 769, 760, 3, 2, 2,
	2, 769, 761, 3, 2, 2, 2, 769, 762, 3, 2, 2, 2, 769, 763, 3, 2, 2, 2, 769,
	764, 3, 2, 2, 2, 769, 765, 3, 2, 2, 2, 769, 766, 3, 2, 2, 2, 769, 767,
	3, 2, 2, 2, 769, 768, 3, 2, 2, 2, 770, 15, 3, 2, 2, 2, 771, 787, 5, 298,
	150, 2, 772, 787, 5, 300, 151, 2, 773, 787, 5, 302, 152, 2, 774, 787, 5,
	304, 153, 2, 775, 787, 5, 306, 154, 2, 776, 787, 5, 308, 155, 2, 777, 787,
	5, 310, 156, 2, 778, 787, 5, 312, 157, 2, 779, 787, 5, 314, 158, 2, 780,
	787, 5, 338, 170, 2, 781, 787, 5, 340, 171, 2, 782, 787, 5, 342, 172, 2,
	783, 787, 5, 344, 173, 2, 784, 787, 5, 346, 174, 2, 785, 787, 5, 348, 175,
	2, 786, 771, 3, 2, 2, 2, 786, 772, 3, 2, 2, 2, 786, 773, 3, 2, 2, 2, 786,
	774, 3, 2, 2, 2, 786, 775, 3, 2, 2, 2, 786, 776, 3, 2, 2, 2, 786, 777,
	3, 2, 2, 2, 786, 778, 3, 2, 2, 2, 786, 779, 3, 2, 2, 2, 786, 780, 3, 2,
	2, 2, 786, 781, 3, 2, 2, 2, 786, 782, 3, 2, 2, 2, 786, 783, 3, 2, 2, 2,
	786, 784, 3, 2, 2, 2, 786, 785, 3, 2, 2, 2, 787, 17, 3, 2, 2, 2, 788, 792,
	5, 350, 176, 2, 789, 792, 5, 352, 177, 2, 790, 792, 5, 354, 178, 2, 791,
	788, 3, 2, 2, 2, 791, 789, 3, 2, 2, 2, 791, 790, 3, 2, 2, 2, 792, 19, 3,
	2, 2, 2, 793, 804, 5, 358, 180, 2, 794, 804, 5, 360, 181, 2, 795, 804,
	5, 362, 182, 2, 796, 804, 5, 366, 184, 2, 797, 804, 5, 368, 185, 2, 798,
	804, 5, 370, 186, 2, 799, 804, 5, 374, 188, 2, 800, 804, 5, 364, 183, 2,
	801, 804, 5, 372, 187, 2, 802, 804, 5, 376, 189, 2, 803, 793, 3, 2, 2,
	2, 803, 794, 3, 2, 2, 2, 803, 795, 3, 2, 2, 2, 803, 796, 3, 2, 2, 2, 803,
	797, 3, 2, 2, 2, 803, 798, 3, 2, 2, 2, 803, 799, 3, 2, 2, 2, 803, 800,
	3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 803, 802, 3, 2, 2, 2, 804, 21, 3, 2,
	2, 2, 805, 831, 5, 394, 198, 2, 806, 831, 5, 396, 199, 2, 807, 831, 5,
	398, 200, 2, 808, 831, 5, 400, 201, 2, 809, 831, 5, 404, 203, 2, 810, 831,
	5, 406, 204, 2, 811, 831, 5, 408, 205, 2, 812, 831, 5, 410, 206, 2, 813,
	831, 5, 434, 218, 2, 814, 831, 5, 436, 219, 2, 815, 831, 5, 438, 220, 2,
	816, 831, 5, 440, 221, 2, 817, 831, 5, 442, 222, 2, 818, 831, 5, 446, 224,
	2, 819, 831, 5, 448, 225, 2, 820, 831, 5, 450, 226, 2, 821, 831, 5, 452,
	227, 2, 822, 831, 5, 454, 228, 2, 823, 831, 5, 468, 235, 2, 824, 831, 5,
	470, 236, 2, 825, 831, 5, 472, 237, 2, 826, 831, 5, 474, 238, 2, 827, 831,
	5, 476, 239, 2, 828, 831, 5, 478, 240, 2, 829, 831, 5, 480, 241, 2, 830,
	805, 3, 2, 2, 2, 830, 806, 3, 2, 2, 2, 830, 807, 3, 2, 2, 2, 830, 808,
	3, 2, 2, 2, 830, 809, 3, 2, 2, 2, 830, 810, 3, 2, 2, 2, 830, 811, 3, 2,
	2, 2, 830, 812, 3, 2, 2, 2, 830, 813, 3, 2, 2, 2, 830, 814, 3, 2, 2, 2,
	830, 815, 3, 2, 2, 2, 830, 816, 3, 2, 2, 2, 830, 817, 3, 2, 2, 2, 830,
	818, 3, 2, 2, 2, 830, 819, 3, 2, 2, 2, 830, 820, 3, 2, 2, 2, 830, 821,
	3, 2, 2, 2, 830, 822, 3, 2, 2, 2, 830, 823, 3, 2, 2, 2, 830, 824, 3, 2,
	2, 2, 830, 825, 3, 2, 2, 2, 830, 826, 3, 2, 2, 2, 830, 827, 3, 2, 2, 2,
	830, 828, 3, 2, 2, 2, 830, 829, 3, 2, 2, 2, 831, 23, 3, 2, 2, 2, 832, 840,
	5, 490, 246, 2, 833, 840, 5, 492, 247, 2, 834, 840, 5, 494, 248, 2, 835,
	840, 5, 496, 249, 2, 836, 840, 5, 498, 250, 2, 837, 840, 5, 500, 251, 2,
	838, 840, 5, 504, 253, 2, 839, 832, 3, 2, 2, 2, 839, 833, 3, 2, 2, 2, 839,
	834, 3, 2, 2, 2, 839, 835, 3, 2, 2, 2, 839, 836, 3, 2, 2, 2, 839, 837,
	3, 2, 2, 2, 839, 838, 3, 2, 2, 2, 840, 25, 3, 2, 2, 2, 841, 842, 7, 34,
	2, 2, 842, 844, 9, 2, 2, 2, 843, 845, 5, 592, 297, 2, 844, 843, 3, 2, 2,
	2, 844, 845, 3, 2, 2, 2, 845, 846, 3, 2, 2, 2, 846, 850, 5, 536, 269, 2,
	847, 849, 5, 50, 26, 2, 848, 847, 3, 2, 2, 2, 849, 852, 3, 2, 2, 2, 850,
	848, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 27, 3, 2, 2, 2, 852, 850, 3,
	2, 2, 2, 853, 855, 7, 34, 2, 2, 854, 856, 5, 54, 28, 2, 855, 854, 3, 2,
	2, 2, 855, 856, 3, 2, 2, 2, 856, 857, 3, 2, 2, 2, 857, 859, 7, 399, 2,
	2, 858, 860, 5, 592, 297, 2, 859, 858, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2,
	860, 861, 3, 2, 2, 2, 861, 862, 5, 510, 256, 2, 862, 863, 7, 113, 2, 2,
	863, 864, 7, 572, 2, 2, 864, 871, 5, 56, 29, 2, 865, 866, 7, 113, 2, 2,
	866, 868, 7, 358, 2, 2, 867, 869, 7, 109, 2, 2, 868, 867, 3, 2, 2, 2, 868,
	869, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 872, 7, 532, 2, 2, 871, 865,
	3, 2, 2, 2, 871, 872, 3, 2, 2, 2, 872, 874, 3, 2, 2, 2, 873, 875, 5, 64,
	33, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 878, 3, 2, 2, 2,
	876, 877, 7, 355, 2, 2, 877, 879, 7, 1101, 2, 2, 878, 876, 3, 2, 2, 2,
	878, 879, 3, 2, 2, 2, 879, 880, 3, 2, 2, 2, 880, 881, 7, 385, 2, 2, 881,
	882, 5, 356, 179, 2, 882, 29, 3, 2, 2, 2, 883, 885, 7, 34, 2, 2, 884, 886,
	9, 3, 2, 2, 885, 884, 3, 2, 2, 2, 885, 886, 3, 2, 2, 2, 886, 888, 3, 2,
	2, 2, 887, 889, 9, 4, 2, 2, 888, 887, 3, 2, 2, 2, 888, 889, 3, 2, 2, 2,
	889, 890, 3, 2, 2, 2, 890, 891, 7, 79, 2, 2, 891, 893, 5, 536, 269, 2,
	892, 894, 5, 66, 34, 2, 893, 892, 3, 2, 2, 2, 893, 894, 3, 2, 2, 2, 894,
	895, 3, 2, 2, 2, 895, 896, 7, 113, 2, 2, 896, 897, 5, 512, 257, 2, 897,
	901, 5, 572, 287, 2, 898, 900, 5, 68, 35, 2, 899, 898, 3, 2, 2, 2, 900,
	903, 3, 2, 2, 2, 901, 899, 3, 2, 2, 2, 901, 902, 3, 2, 2, 2, 902, 916,
	3, 2, 2, 2, 903, 901, 3, 2, 2, 2, 904, 906, 7, 324, 2, 2, 905, 907, 7,
	1077, 2, 2, 906, 905, 3, 2, 2, 2, 906, 907, 3, 2, 2, 2, 907, 908, 3, 2,
	2, 2, 908, 915, 9, 5, 2, 2, 909, 911, 7, 100, 2, 2, 910, 912, 7, 1077,
	2, 2, 911, 910, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2,
	913, 915, 9, 6, 2, 2, 914, 904, 3, 2, 2, 2, 914, 909, 3, 2, 2, 2, 915,
	918, 3, 2, 2, 2, 916, 914, 3, 2, 2, 2, 916, 917, 3, 2, 2, 2, 917, 31, 3,
	2, 2, 2, 918, 916, 3, 2, 2, 2, 919, 920, 7, 34, 2, 2, 920, 921, 7, 455,
	2, 2, 921, 922, 7, 72, 2, 2, 922, 923, 5, 536, 269, 2, 923, 924, 7, 7,
	2, 2, 924, 925, 7, 625, 2, 2, 925, 931, 7, 1101, 2, 2, 926, 928, 7, 434,
	2, 2, 927, 929, 7, 1077, 2, 2, 928, 927, 3, 2, 2, 2, 928, 929, 3, 2, 2,
	2, 929, 930, 3, 2, 2, 2, 930, 932, 5, 544, 273, 2, 931, 926, 3, 2, 2, 2,
	931, 932, 3, 2, 2, 2, 932, 938, 3, 2, 2, 2, 933, 935, 7, 626, 2, 2, 934,
	936, 7, 1077, 2, 2, 935, 934, 3, 2, 2, 2, 935, 936, 3, 2, 2, 2, 936, 937,
	3, 2, 2, 2, 937, 939, 5, 544, 273, 2, 938, 933, 3, 2, 2, 2, 938, 939, 3,
	2, 2, 2, 939, 945, 3, 2, 2, 2, 940, 942, 7, 542, 2, 2, 941, 943, 7, 1077,
	2, 2, 942, 941, 3, 2, 2, 2, 942, 943, 3, 2, 2, 2, 943, 944, 3, 2, 2, 2,
	944, 946, 5, 544, 273, 2, 945, 940, 3, 2, 2, 2, 945, 946, 3, 2, 2, 2, 946,
	952, 3, 2, 2, 2, 947, 949, 7, 502, 2, 2, 948, 950, 7, 1077, 2, 2, 949,
	948, 3, 2, 2, 2, 949, 950, 3, 2, 2, 2, 950, 951, 3, 2, 2, 2, 951, 953,
	5, 536, 269, 2, 952, 947, 3, 2, 2, 2, 952, 953, 3, 2, 2, 2, 953, 955, 3,
	2, 2, 2, 954, 956, 7, 640, 2, 2, 955, 954, 3, 2, 2, 2, 955, 956, 3, 2,
	2, 2, 956, 962, 3, 2, 2, 2, 957, 959, 7, 355, 2, 2, 958, 960, 7, 1077,
	2, 2, 959, 958, 3, 2, 2, 2, 959, 960, 3, 2, 2, 2, 960, 961, 3, 2, 2, 2,
	961, 963, 7, 1101, 2, 2, 962, 957, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963,
	964, 3, 2, 2, 2, 964, 966, 7, 393, 2, 2, 965, 967, 7, 1077, 2, 2, 966,
	965, 3, 2, 2, 2, 966, 967, 3, 2, 2, 2, 967, 968, 3, 2, 2, 2, 968, 969,
	5, 526, 264, 2, 969, 33, 3, 2, 2, 2, 970, 972, 7, 34, 2, 2, 971, 973, 5,
	54, 28, 2, 972, 971, 3, 2, 2, 2, 972, 973, 3, 2, 2, 2, 973, 974, 3, 2,
	2, 2, 974, 975, 7, 125, 2, 2, 975, 976, 5, 510, 256, 2, 976, 978, 7, 1086,
	2, 2, 977, 979, 5, 70, 36, 2, 978, 977, 3, 2, 2, 2, 978, 979, 3, 2, 2,
	2, 979, 984, 3, 2, 2, 2, 980, 981, 7, 1088, 2, 2, 981, 983, 5, 70, 36,
	2, 982, 980, 3, 2, 2, 2, 983, 986, 3, 2, 2, 2, 984, 982, 3, 2, 2, 2, 984,
	985, 3, 2, 2, 2, 985, 987, 3, 2, 2, 2, 986, 984, 3, 2, 2, 2, 987, 991,
	7, 1087, 2, 2, 988, 990, 5, 74, 38, 2, 989, 988, 3, 2, 2, 2, 990, 993,
	3, 2, 2, 2, 991, 989, 3, 2, 2, 2, 991, 992, 3, 2, 2, 2, 992, 994, 3, 2,
	2, 2, 993, 991, 3, 2, 2, 2, 994, 995, 5, 356, 179, 2, 995, 35, 3, 2, 2,
	2, 996, 998, 7, 34, 2, 2, 997, 999, 5, 54, 28, 2, 998, 997, 3, 2, 2, 2,
	998, 999, 3, 2, 2, 2, 999, 1000, 3, 2, 2, 2, 1000, 1001, 7, 420, 2, 2,
	1001, 1002, 5, 510, 256, 2, 1002, 1004, 7, 1086, 2, 2, 1003, 1005, 5, 72,
	37, 2, 1004, 1003, 3, 2, 2, 2, 1004, 1005, 3, 2, 2, 2, 1005, 1010, 3, 2,
	2, 2, 1006, 1007, 7, 1088, 2, 2, 1007, 1009, 5, 72, 37, 2, 1008, 1006,
	3, 2, 2, 2, 1009, 1012, 3, 2, 2, 2, 1010, 1008, 3, 2, 2, 2, 1010, 1011,
	3, 2, 2, 2, 1011, 1013, 3, 2, 2, 2, 1012, 1010, 3, 2, 2, 2, 1013, 1014,
	7, 1087, 2, 2, 1014, 1015, 7, 563, 2, 2, 1015, 1019, 5, 556, 279, 2, 1016,
	1018, 5, 74, 38, 2, 1017, 1016, 3, 2, 2, 2, 1018, 1021, 3, 2, 2, 2, 1019,
	1017, 3, 2, 2, 2, 1019, 1020, 3, 2, 2, 2, 1020, 1024, 3, 2, 2, 2, 1021,
	1019, 3, 2, 2, 2, 1022, 1025, 5, 356, 179, 2, 1023, 1025, 5, 372, 187,
	2, 1024, 1022, 3, 2, 2, 2, 1024, 1023, 3, 2, 2, 2, 1025, 37, 3, 2, 2, 2,
	1026, 1027, 7, 34, 2, 2, 1027, 1028, 7, 574, 2, 2, 1028, 1029, 5, 536,
	269, 2, 1029, 1030, 7, 66, 2, 2, 1030, 1031, 7, 374, 2, 2, 1031, 1032,
	7, 645, 2, 2, 1032, 1033, 9, 7, 2, 2, 1033, 1034, 7, 515, 2, 2, 1034, 1035,
	7, 1086, 2, 2, 1035, 1040, 5, 76, 39, 2, 1036, 1037, 7, 1088, 2, 2, 1037,
	1039, 5, 76, 39, 2, 1038, 1036, 3, 2, 2, 2, 1039, 1042, 3, 2, 2, 2, 1040,
	1038, 3, 2, 2, 2, 1040, 1041, 3, 2, 2, 2, 1041, 1043, 3, 2, 2, 2, 1042,
	1040, 3, 2, 2, 2, 1043, 1044, 7, 1087, 2, 2, 1044, 39, 3, 2, 2, 2, 1045,
	1047, 7, 34, 2, 2, 1046, 1048, 7, 615, 2, 2, 1047, 1046, 3, 2, 2, 2, 1047,
	1048, 3, 2, 2, 2, 1048, 1049, 3, 2, 2, 2, 1049, 1051, 7, 163, 2, 2, 1050,
	1052, 5, 592, 297, 2, 1051, 1050, 3, 2, 2, 2, 1051, 1052, 3, 2, 2, 2, 1052,
	1053, 3, 2, 2, 2, 1053, 1061, 5, 512, 257, 2, 1054, 1055, 7, 95, 2, 2,
	1055, 1062, 5, 512, 257, 2, 1056, 1057, 7, 1086, 2, 2, 1057, 1058, 7, 95,
	2, 2, 1058, 1059, 5, 512, 257, 2, 1059, 1060, 7, 1087, 2, 2, 1060, 1062,
	3, 2, 2, 2, 1061, 1054, 3, 2, 2, 2, 1061, 1056, 3, 2, 2, 2, 1062, 1124,
	3, 2, 2, 2, 1063, 1065, 7, 34, 2, 2, 1064, 1066, 7, 615, 2, 2, 1065, 1064,
	3, 2, 2, 2, 1065, 1066, 3, 2, 2, 2, 1066, 1067, 3, 2, 2, 2, 1067, 1069,
	7, 163, 2, 2, 1068, 1070, 5, 592, 297, 2, 1069, 1068, 3, 2, 2, 2, 1069,
	1070, 3, 2, 2, 2, 1070, 1071, 3, 2, 2, 2, 1071, 1073, 5, 512, 257, 2, 1072,
	1074, 5, 78, 40, 2, 1073, 1072, 3, 2, 2, 2, 1073, 1074, 3, 2, 2, 2, 1074,
	1085, 3, 2, 2, 2, 1075, 1082, 5, 96, 49, 2, 1076, 1078, 7, 1088, 2, 2,
	1077, 1076, 3, 2, 2, 2, 1077, 1078, 3, 2, 2, 2, 1078, 1079, 3, 2, 2, 2,
	1079, 1081, 5, 96, 49, 2, 1080, 1077, 3, 2, 2, 2, 1081, 1084, 3, 2, 2,
	2, 1082, 1080, 3, 2, 2, 2, 1082, 1083, 3, 2, 2, 2, 1083, 1086, 3, 2, 2,
	2, 1084, 1082, 3, 2, 2, 2, 1085, 1075, 3, 2, 2, 2, 1085, 1086, 3, 2, 2,
	2, 1086, 1088, 3, 2, 2, 2, 1087, 1089, 5, 102, 52, 2, 1088, 1087, 3, 2,
	2, 2, 1088, 1089, 3, 2, 2, 2, 1089, 1091, 3, 2, 2, 2, 1090, 1092, 9, 8,
	2, 2, 1091, 1090, 3, 2, 2, 2, 1091, 1092, 3, 2, 2, 2, 1092, 1094, 3, 2,
	2, 2, 1093, 1095, 7, 14, 2, 2, 1094, 1093, 3, 2, 2, 2, 1094, 1095, 3, 2,
	2, 2, 1095, 1096, 3, 2, 2, 2, 1096, 1097, 5, 184, 93, 2, 1097, 1124, 3,
	2, 2, 2, 1098, 1100, 7, 34, 2, 2, 1099, 1101, 7, 615, 2, 2, 1100, 1099,
	3, 2, 2, 2, 1100, 1101, 3, 2, 2, 2, 1101, 1102, 3, 2, 2, 2, 1102, 1104,
	7, 163, 2, 2, 1103, 1105, 5, 592, 297, 2, 1104, 1103, 3, 2, 2, 2, 1104,
	1105, 3, 2, 2, 2, 1105, 1106, 3, 2, 2, 2, 1106, 1107, 5, 512, 257, 2, 1107,
	1118, 5, 78, 40, 2, 1108, 1115, 5, 96, 49, 2, 1109, 1111, 7, 1088, 2, 2,
	1110, 1109, 3, 2, 2, 2, 1110, 1111, 3, 2, 2, 2, 1111, 1112, 3, 2, 2, 2,
	1112, 1114, 5, 96, 49, 2, 1113, 1110, 3, 2, 2, 2, 1114, 1117, 3, 2, 2,
	2, 1115, 1113, 3, 2, 2, 2, 1115, 1116, 3, 2, 2, 2, 1116, 1119, 3, 2, 2,
	2, 1117, 1115, 3, 2, 2, 2, 1118, 1108, 3, 2, 2, 2, 1118, 1119, 3, 2, 2,
	2, 1119, 1121, 3, 2, 2, 2, 1120, 1122, 5, 102, 52, 2, 1121, 1120, 3, 2,
	2, 2, 1121, 1122, 3, 2, 2, 2, 1122, 1124, 3, 2, 2, 2, 1123, 1045, 3, 2,
	2, 2, 1123, 1063, 3, 2, 2, 2, 1123, 1098, 3, 2, 2, 2, 1124, 41, 3, 2, 2,
	2, 1125, 1126, 7, 34, 2, 2, 1126, 1127, 7, 613, 2, 2, 1127, 1128, 5, 536,
	269, 2, 1128, 1129, 7, 7, 2, 2, 1129, 1130, 7, 375, 2, 2, 1130, 1134, 7,
	1101, 2, 2, 1131, 1132, 7, 411, 2, 2, 1132, 1133, 7, 1077, 2, 2, 1133,
	1135, 5, 544, 273, 2, 1134, 1131, 3, 2, 2, 2, 1134, 1135, 3, 2, 2, 2, 1135,
	1141, 3, 2, 2, 2, 1136, 1138, 7, 393, 2, 2, 1137, 1139, 7, 1077, 2, 2,
	1138, 1137, 3, 2, 2, 2, 1138, 1139, 3, 2, 2, 2, 1139, 1140, 3, 2, 2, 2,
	1140, 1142, 5, 526, 264, 2, 1141, 1136, 3, 2, 2, 2, 1141, 1142, 3, 2, 2,
	2, 1142, 43, 3, 2, 2, 2, 1143, 1144, 7, 34, 2, 2, 1144, 1145, 7, 613, 2,
	2, 1145, 1146, 5, 536, 269, 2, 1146, 1147, 7, 7, 2, 2, 1147, 1148, 7, 375,
	2, 2, 1148, 1149, 7, 1101, 2, 2, 1149, 1150, 7, 177, 2, 2, 1150, 1151,
	7, 455, 2, 2, 1151, 1152, 7, 72, 2, 2, 1152, 1158, 5, 536, 269, 2, 1153,
	1155, 7, 407, 2, 2, 1154, 1156, 7, 1077, 2, 2, 1155, 1154, 3, 2, 2, 2,
	1155, 1156, 3, 2, 2, 2, 1156, 1157, 3, 2, 2, 2, 1157, 1159, 5, 544, 273,
	2, 1158, 1153, 3, 2, 2, 2, 1158, 1159, 3, 2, 2, 2, 1159, 1165, 3, 2, 2,
	2, 1160, 1162, 7, 434, 2, 2, 1161, 1163, 7, 1077, 2, 2, 1162, 1161, 3,
	2, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 3, 2, 2, 2, 1164, 1166, 5,
	544, 273, 2, 1165, 1160, 3, 2, 2, 2, 1165, 1166, 3, 2, 2, 2, 1166, 1172,
	3, 2, 2, 2, 1167, 1169, 7, 329, 2, 2, 1168, 1170, 7, 1077, 2, 2, 1169,
	1168, 3, 2, 2, 2, 1169, 1170, 3, 2, 2, 2, 1170, 1171, 3, 2, 2, 2, 1171,
	1173, 5, 544, 273, 2, 1172, 1167, 3, 2, 2, 2, 1172, 1173, 3, 2, 2, 2, 1173,
	1179, 3, 2, 2, 2, 1174, 1176, 7, 481, 2, 2, 1175, 1177, 7, 1077, 2, 2,
	1176, 1175, 3, 2, 2, 2, 1176, 1177, 3, 2, 2, 2, 1177, 1178, 3, 2, 2, 2,
	1178, 1180, 5, 544, 273, 2, 1179, 1174, 3, 2, 2, 2, 1179, 1180, 3, 2, 2,
	2, 1180, 1186, 3, 2, 2, 2, 1181, 1183, 7, 502, 2, 2, 1182, 1184, 7, 1077,
	2, 2, 1183, 1182, 3, 2, 2, 2, 1183, 1184, 3, 2, 2, 2, 1184, 1185, 3, 2,
	2, 2, 1185, 1187, 5, 536, 269, 2, 1186, 1181, 3, 2, 2, 2, 1186, 1187, 3,
	2, 2, 2, 1187, 1189, 3, 2, 2, 2, 1188, 1190, 7, 640, 2, 2, 1189, 1188,
	3, 2, 2, 2, 1189, 1190, 3, 2, 2, 2, 1190, 1196, 3, 2, 2, 2, 1191, 1193,
	7, 355, 2, 2, 1192, 1194, 7, 1077, 2, 2, 1193, 1192, 3, 2, 2, 2, 1193,
	1194, 3, 2, 2, 2, 1194, 1195, 3, 2, 2, 2, 1195, 1197, 7, 1101, 2, 2, 1196,
	1191, 3, 2, 2, 2, 1196, 1197, 3, 2, 2, 2, 1197, 1198, 3, 2, 2, 2, 1198,
	1200, 7, 393, 2, 2, 1199, 1201, 7, 1077, 2, 2, 1200, 1199, 3, 2, 2, 2,
	1200, 1201, 3, 2, 2, 2, 1201, 1202, 3, 2, 2, 2, 1202, 1203, 5, 526, 264,
	2, 1203, 45, 3, 2, 2, 2, 1204, 1206, 7, 34, 2, 2, 1205, 1207, 5, 54, 28,
	2, 1206, 1205, 3, 2, 2, 2, 1206, 1207, 3, 2, 2, 2, 1207, 1208, 3, 2, 2,
	2, 1208, 1209, 7, 168, 2, 2, 1209, 1210, 5, 510, 256, 2, 1210, 1211, 9,
	9, 2, 2, 1211, 1212, 9, 10, 2, 2, 1212, 1213, 7, 113, 2, 2, 1213, 1214,
	5, 512, 257, 2, 1214, 1215, 7, 64, 2, 2, 1215, 1216, 7, 52, 2, 2, 1216,
	1219, 7, 568, 2, 2, 1217, 1218, 9, 11, 2, 2, 1218, 1220, 5, 510, 256, 2,
	1219, 1217, 3, 2, 2, 2, 1219, 1220, 3, 2, 2, 2, 1220, 1221, 3, 2, 2, 2,
	1221, 1222, 5, 356, 179, 2, 1222, 47, 3, 2, 2, 2, 1223, 1226, 7, 34, 2,
	2, 1224, 1225, 7, 117, 2, 2, 1225, 1227, 7, 135, 2, 2, 1226, 1224, 3, 2,
	2, 2, 1226, 1227, 3, 2, 2, 2, 1227, 1231, 3, 2, 2, 2, 1228, 1229, 7, 324,
	2, 2, 1229, 1230, 7, 1077, 2, 2, 1230, 1232, 9, 12, 2, 2, 1231, 1228, 3,
	2, 2, 2, 1231, 1232, 3, 2, 2, 2, 1232, 1234, 3, 2, 2, 2, 1233, 1235, 5,
	54, 28, 2, 1234, 1233, 3, 2, 2, 2, 1234, 1235, 3, 2, 2, 2, 1235, 1239,
	3, 2, 2, 2, 1236, 1237, 7, 152, 2, 2, 1237, 1238, 7, 573, 2, 2, 1238, 1240,
	9, 13, 2, 2, 1239, 1236, 3, 2, 2, 2, 1239, 1240, 3, 2, 2, 2, 1240, 1241,
	3, 2, 2, 2, 1241, 1242, 7, 637, 2, 2, 1242, 1247, 5, 510, 256, 2, 1243,
	1244, 7, 1086, 2, 2, 1244, 1245, 5, 568, 285, 2, 1245, 1246, 7, 1087, 2,
	2, 1246, 1248, 3, 2, 2, 2, 1247, 1243, 3, 2, 2, 2, 1247, 1248, 3, 2, 2,
	2, 1248, 1249, 3, 2, 2, 2, 1249, 1250, 7, 14, 2, 2, 1250, 1257, 5, 184,
	93, 2, 1251, 1253, 7, 183, 2, 2, 1252, 1254, 9, 14, 2, 2, 1253, 1252, 3,
	2, 2, 2, 1253, 1254, 3, 2, 2, 2, 1254, 1255, 3, 2, 2, 2, 1255, 1256, 7,
	27, 2, 2, 1256, 1258, 7, 115, 2, 2, 1257, 1251, 3, 2, 2, 2, 1257, 1258,
	3, 2, 2, 2, 1258, 49, 3, 2, 2, 2, 1259, 1261, 7, 42, 2, 2, 1260, 1259,
	3, 2, 2, 2, 1260, 1261, 3, 2, 2, 2, 1261, 1262, 3, 2, 2, 2, 1262, 1264,
	5, 52, 27, 2, 1263, 1265, 7, 1077, 2, 2, 1264, 1263, 3, 2, 2, 2, 1264,
	1265, 3, 2, 2, 2, 1265, 1268, 3, 2, 2, 2, 1266, 1269, 5, 522, 262, 2, 1267,
	1269, 7, 42, 2, 2, 1268, 1266, 3, 2, 2, 2, 1268, 1267, 3, 2, 2, 2, 1269,
	1279, 3, 2, 2, 2, 1270, 1272, 7, 42, 2, 2, 1271, 1270, 3, 2, 2, 2, 1271,
	1272, 3, 2, 2, 2, 1272, 1273, 3, 2, 2, 2, 1273, 1275, 7, 28, 2, 2, 1274,
	1276, 7, 1077, 2, 2, 1275, 1274, 3, 2, 2, 2, 1275, 1276, 3, 2, 2, 2, 1276,
	1277, 3, 2, 2, 2, 1277, 1279, 5, 524, 263, 2, 1278, 1260, 3, 2, 2, 2, 1278,
	1271, 3, 2, 2, 2, 1279, 51, 3, 2, 2, 2, 1280, 1281, 7, 26, 2, 2, 1281,
	1286, 7, 147, 2, 2, 1282, 1286, 7, 798, 2, 2, 1283, 1284, 7, 213, 2, 2,
	1284, 1286, 7, 147, 2, 2, 1285, 1280, 3, 2, 2, 2, 1285, 1282, 3, 2, 2,
	2, 1285, 1283, 3, 2, 2, 2, 1286, 53, 3, 2, 2, 2, 1287, 1288, 7, 378, 2,
	2, 1288, 1295, 7, 1077, 2, 2, 1289, 1296, 5, 518, 260, 2, 1290, 1293, 7,
	37, 2, 2, 1291, 1292, 7, 1086, 2, 2, 1292, 1294, 7, 1087, 2, 2, 1293, 1291,
	3, 2, 2, 2, 1293, 1294, 3, 2, 2, 2, 1294, 1296, 3, 2, 2, 2, 1295, 1289,
	3, 2, 2, 2, 1295, 1290, 3, 2, 2, 2, 1296, 55, 3, 2, 2, 2, 1297, 1298, 7,
	326, 2, 2, 1298, 1302, 5, 58, 30, 2, 1299, 1301, 5, 60, 31, 2, 1300, 1299,
	3, 2, 2, 2, 1301, 1304, 3, 2, 2, 2, 1302, 1300, 3, 2, 2, 2, 1302, 1303,
	3, 2, 2, 2, 1303, 1332, 3, 2, 2, 2, 1304, 1302, 3, 2, 2, 2, 1305, 1308,
	7, 401, 2, 2, 1306, 1309, 5, 542, 272, 2, 1307, 1309, 5, 634, 318, 2, 1308,
	1306, 3, 2, 2, 2, 1308, 1307, 3, 2, 2, 2, 1309, 1310, 3, 2, 2, 2, 1310,
	1319, 5, 62, 32, 2, 1311, 1312, 7, 596, 2, 2, 1312, 1316, 5, 58, 30, 2,
	1313, 1315, 5, 60, 31, 2, 1314, 1313, 3, 2, 2, 2, 1315, 1318, 3, 2, 2,
	2, 1316, 1314, 3, 2, 2, 2, 1316, 1317, 3, 2, 2, 2, 1317, 1320, 3, 2, 2,
	2, 1318, 1316, 3, 2, 2, 2, 1319, 1311, 3, 2, 2, 2, 1319, 1320, 3, 2, 2,
	2, 1320, 1329, 3, 2, 2, 2, 1321, 1322, 7, 392, 2, 2, 1322, 1326, 5, 58,
	30, 2, 1323, 1325, 5, 60, 31, 2, 1324, 1323, 3, 2, 2, 2, 1325, 1328, 3,
	2, 2, 2, 1326, 1324, 3, 2, 2, 2, 1326, 1327, 3, 2, 2, 2, 1327, 1330, 3,
	2, 2, 2, 1328, 1326, 3, 2, 2, 2, 1329, 1321, 3, 2, 2, 2, 1329, 1330, 3,
	2, 2, 2, 1330, 1332, 3, 2, 2, 2, 1331, 1297, 3, 2, 2, 2, 1331, 1305, 3,
	2, 2, 2, 1332, 57, 3, 2, 2, 2, 1333, 1338, 7, 303, 2, 2, 1334, 1338, 5,
	546, 274, 2, 1335, 1338, 5, 542, 272, 2, 1336, 1338, 5, 634, 318, 2, 1337,
	1333, 3, 2, 2, 2, 1337, 1334, 3, 2, 2, 2, 1337, 1335, 3, 2, 2, 2, 1337,
	1336, 3, 2, 2, 2, 1338, 59, 3, 2, 2, 2, 1339, 1340, 7, 1073, 2, 2, 1340,
	1343, 7, 84, 2, 2, 1341, 1344, 5, 542, 272, 2, 1342, 1344, 5, 634, 318,
	2, 1343, 1341, 3, 2, 2, 2, 1343, 1342, 3, 2, 2, 2, 1344, 1345, 3, 2, 2,
	2, 1345, 1346, 5, 62, 32, 2, 1346, 61, 3, 2, 2, 2, 1347, 1361, 5, 658,
	330, 2, 1348, 1361, 7, 212, 2, 2, 1349, 1361, 7, 231, 2, 2, 1350, 1361,
	7, 232, 2, 2, 1351, 1361, 7, 233, 2, 2, 1352, 1361, 7, 234, 2, 2, 1353,
	1361, 7, 235, 2, 2, 1354, 1361, 7, 236, 2, 2, 1355, 1361, 7, 237, 2, 2,
	1356, 1361, 7, 238, 2, 2, 1357, 1361, 7, 239, 2, 2, 1358, 1361, 7, 240,
	2, 2, 1359, 1361, 7, 241, 2, 2, 1360, 1347, 3, 2, 2, 2, 1360, 1348, 3,
	2, 2, 2, 1360, 1349, 3, 2, 2, 2, 1360, 1350, 3, 2, 2, 2, 1360, 1351, 3,
	2, 2, 2, 1360, 1352, 3, 2, 2, 2, 1360, 1353, 3, 2, 2, 2, 1360, 1354, 3,
	2, 2, 2, 1360, 1355, 3, 2, 2, 2, 1360, 1356, 3, 2, 2, 2, 1360, 1357, 3,
	2, 2, 2, 1360, 1358, 3, 2, 2, 2, 1360, 1359, 3, 2, 2, 2, 1361, 63, 3, 2,
	2, 2, 1362, 1368, 7, 389, 2, 2, 1363, 1368, 7, 382, 2, 2, 1364, 1365, 7,
	382, 2, 2, 1365, 1366, 7, 113, 2, 2, 1366, 1368, 7, 580, 2, 2, 1367, 1362,
	3, 2, 2, 2, 1367, 1363, 3, 2, 2, 2, 1367, 1364, 3, 2, 2, 2, 1368, 65, 3,
	2, 2, 2, 1369, 1370, 7, 178, 2, 2, 1370, 1371, 9, 15, 2, 2, 1371, 67, 3,
	2, 2, 2, 1372, 1374, 7, 447, 2, 2, 1373, 1375, 7, 1077, 2, 2, 1374, 1373,
	3, 2, 2, 2, 1374, 1375, 3, 2, 2, 2, 1375, 1376, 3, 2, 2, 2, 1376, 1386,
	5, 544, 273, 2, 1377, 1386, 5, 66, 34, 2, 1378, 1379, 7, 183, 2, 2, 1379,
	1380, 7, 519, 2, 2, 1380, 1386, 5, 536, 269, 2, 1381, 1382, 7, 355, 2,
	2, 1382, 1386, 7, 1101, 2, 2, 1383, 1386, 7, 439, 2, 2, 1384, 1386, 7,
	639, 2, 2, 1385, 1372, 3, 2, 2, 2, 1385, 1377, 3, 2, 2, 2, 1385, 1378,
	3, 2, 2, 2, 1385, 1381, 3, 2, 2, 2, 1385, 1383, 3, 2, 2, 2, 1385, 1384,
	3, 2, 2, 2, 1386, 69, 3, 2, 2, 2, 1387, 1389, 9, 16, 2, 2, 1388, 1387,
	3, 2, 2, 2, 1388, 1389, 3, 2, 2, 2, 1389, 1390, 3, 2, 2, 2, 1390, 1391,
	5, 536, 269, 2, 1391, 1392, 5, 556, 279, 2, 1392, 71, 3, 2, 2, 2, 1393,
	1394, 5, 536, 269, 2, 1394, 1395, 5, 556, 279, 2, 1395, 73, 3, 2, 2, 2,
	1396, 1397, 7, 355, 2, 2, 1397, 1420, 7, 1101, 2, 2, 1398, 1399, 7, 448,
	2, 2, 1399, 1420, 7, 152, 2, 2, 1400, 1402, 7, 109, 2, 2, 1401, 1400, 3,
	2, 2, 2, 1401, 1402, 3, 2, 2, 2, 1402, 1403, 3, 2, 2, 2, 1403, 1420, 7,
	47, 2, 2, 1404, 1405, 7, 368, 2, 2, 1405, 1415, 7, 152, 2, 2, 1406, 1407,
	7, 501, 2, 2, 1407, 1415, 7, 152, 2, 2, 1408, 1409, 7, 129, 2, 2, 1409,
	1410, 7, 152, 2, 2, 1410, 1415, 7, 374, 2, 2, 1411, 1412, 7, 107, 2, 2,
	1412, 1413, 7, 152, 2, 2, 1413, 1415, 7, 374, 2, 2, 1414, 1404, 3, 2, 2,
	2, 1414, 1406, 3, 2, 2, 2, 1414, 1408, 3, 2, 2, 2, 1414, 1411, 3, 2, 2,
	2, 1415, 1420, 3, 2, 2, 2, 1416, 1417, 7, 152, 2, 2, 1417, 1418, 7, 573,
	2, 2, 1418, 1420, 9, 13, 2, 2, 1419, 1396, 3, 2, 2, 2, 1419, 1398, 3, 2,
	2, 2, 1419, 1401, 3, 2, 2, 2, 1419, 1414, 3, 2, 2, 2, 1419, 1416, 3, 2,
	2, 2, 1420, 75, 3, 2, 2, 2, 1421, 1422, 7, 428, 2, 2, 1422, 1436, 7, 1101,
	2, 2, 1423, 1424, 7, 39, 2, 2, 1424, 1436, 7, 1101, 2, 2, 1425, 1426, 7,
	631, 2, 2, 1426, 1436, 7, 1101, 2, 2, 1427, 1428, 7, 523, 2, 2, 1428, 1436,
	7, 1101, 2, 2, 1429, 1430, 7, 583, 2, 2, 1430, 1436, 7, 1101, 2, 2, 1431,
	1432, 7, 516, 2, 2, 1432, 1436, 7, 1101, 2, 2, 1433, 1434, 7, 528, 2, 2,
	1434, 1436, 5, 542, 272, 2, 1435, 1421, 3, 2, 2, 2, 1435, 1423, 3, 2, 2,
	2, 1435, 1425, 3, 2, 2, 2, 1435, 1427, 3, 2, 2, 2, 1435, 1429, 3, 2, 2,
	2, 1435, 1431, 3, 2, 2, 2, 1435, 1433, 3, 2, 2, 2, 1436, 77, 3, 2, 2, 2,
	1437, 1438, 7, 1086, 2, 2, 1438, 1443, 5, 80, 41, 2, 1439, 1440, 7, 1088,
	2, 2, 1440, 1442, 5, 80, 41, 2, 1441, 1439, 3, 2, 2, 2, 1442, 1445, 3,
	2, 2, 2, 1443, 1441, 3, 2, 2, 2, 1443, 1444, 3, 2, 2, 2, 1444, 1446, 3,
	2, 2, 2, 1445, 1443, 3, 2, 2, 2, 1446, 1447, 7, 1087, 2, 2, 1447, 79, 3,
	2, 2, 2, 1448, 1449, 5, 536, 269, 2, 1449, 1450, 5, 82, 42, 2, 1450, 1454,
	3, 2, 2, 2, 1451, 1454, 5, 86, 44, 2, 1452, 1454, 5, 94, 48, 2, 1453, 1448,
	3, 2, 2, 2, 1453, 1451, 3, 2, 2, 2, 1453, 1452, 3, 2, 2, 2, 1454, 81, 3,
	2, 2, 2, 1455, 1459, 5, 556, 279, 2, 1456, 1458, 5, 84, 43, 2, 1457, 1456,
	3, 2, 2, 2, 1458, 1461, 3, 2, 2, 2, 1459, 1457, 3, 2, 2, 2, 1459, 1460,
	3, 2, 2, 2, 1460, 83, 3, 2, 2, 2, 1461, 1459, 3, 2, 2, 2, 1462, 1516, 5,
	552, 277, 2, 1463, 1464, 7, 42, 2, 2, 1464, 1516, 5, 584, 293, 2, 1465,
	1516, 7, 639, 2, 2, 1466, 1516, 7, 439, 2, 2, 1467, 1472, 7, 330, 2, 2,
	1468, 1469, 7, 113, 2, 2, 1469, 1470, 7, 175, 2, 2, 1470, 1472, 5, 586,
	294, 2, 1471, 1467, 3, 2, 2, 2, 1471, 1468, 3, 2, 2, 2, 1472, 1516, 3,
	2, 2, 2, 1473, 1475, 7, 124, 2, 2, 1474, 1473, 3, 2, 2, 2, 1474, 1475,
	3, 2, 2, 2, 1475, 1476, 3, 2, 2, 2, 1476, 1516, 7, 89, 2, 2, 1477, 1479,
	7, 172, 2, 2, 1478, 1480, 7, 89, 2, 2, 1479, 1478, 3, 2, 2, 2, 1479, 1480,
	3, 2, 2, 2, 1480, 1516, 3, 2, 2, 2, 1481, 1482, 7, 355, 2, 2, 1482, 1516,
	7, 1101, 2, 2, 1483, 1484, 7, 353, 2, 2, 1484, 1516, 9, 17, 2, 2, 1485,
	1486, 7, 602, 2, 2, 1486, 1516, 9, 18, 2, 2, 1487, 1516, 5, 88, 45, 2,
	1488, 1489, 7, 28, 2, 2, 1489, 1516, 5, 524, 263, 2, 1490, 1491, 7, 69,
	2, 2, 1491, 1493, 7, 10, 2, 2, 1492, 1490, 3, 2, 2, 2, 1492, 1493, 3, 2,
	2, 2, 1493, 1494, 3, 2, 2, 2, 1494, 1495, 7, 14, 2, 2, 1495, 1496, 7, 1086,
	2, 2, 1496, 1497, 5, 634, 318, 2, 1497, 1499, 7, 1087, 2, 2, 1498, 1500,
	9, 19, 2, 2, 1499, 1498, 3, 2, 2, 2, 1499, 1500, 3, 2, 2, 2, 1500, 1516,
	3, 2, 2, 2, 1501, 1502, 7, 230, 2, 2, 1502, 1503, 7, 42, 2, 2, 1503, 1516,
	7, 635, 2, 2, 1504, 1506, 7, 31, 2, 2, 1505, 1507, 5, 536, 269, 2, 1506,
	1505, 3, 2, 2, 2, 1506, 1507, 3, 2, 2, 2, 1507, 1509, 3, 2, 2, 2, 1508,
	1504, 3, 2, 2, 2, 1508, 1509, 3, 2, 2, 2, 1509, 1510, 3, 2, 2, 2, 1510,
	1511, 7, 27, 2, 2, 1511, 1512, 7, 1086, 2, 2, 1512, 1513, 5, 634, 318,
	2, 1513, 1514, 7, 1087, 2, 2, 1514, 1516, 3, 2, 2, 2, 1515, 1462, 3, 2,
	2, 2, 1515, 1463, 3, 2, 2, 2, 1515, 1465, 3, 2, 2, 2, 1515, 1466, 3, 2,
	2, 2, 1515, 1471, 3, 2, 2, 2, 1515, 1474, 3, 2, 2, 2, 1515, 1477, 3, 2,
	2, 2, 1515, 1481, 3, 2, 2, 2, 1515, 1483, 3, 2, 2, 2, 1515, 1485, 3, 2,
	2, 2, 1515, 1487, 3, 2, 2, 2, 1515, 1488, 3, 2, 2, 2, 1515, 1492, 3, 2,
	2, 2, 1515, 1501, 3, 2, 2, 2, 1515, 1508, 3, 2, 2, 2, 1516, 85, 3, 2, 2,
	2, 1517, 1519, 7, 31, 2, 2, 1518, 1520, 5, 536, 269, 2, 1519, 1518, 3,
	2, 2, 2, 1519, 1520, 3, 2, 2, 2, 1520, 1522, 3, 2, 2, 2, 1521, 1517, 3,
	2, 2, 2, 1521, 1522, 3, 2, 2, 2, 1522, 1523, 3, 2, 2, 2, 1523, 1524, 7,
	124, 2, 2, 1524, 1526, 7, 89, 2, 2, 1525, 1527, 5, 536, 269, 2, 1526, 1525,
	3, 2, 2, 2, 1526, 1527, 3, 2, 2, 2, 1527, 1529, 3, 2, 2, 2, 1528, 1530,
	5, 66, 34, 2, 1529, 1528, 3, 2, 2, 2, 1529, 1530, 3, 2, 2, 2, 1530, 1531,
	3, 2, 2, 2, 1531, 1535, 5, 572, 287, 2, 1532, 1534, 5, 68, 35, 2, 1533,
	1532, 3, 2, 2, 2, 1534, 1537, 3, 2, 2, 2, 1535, 1533, 3, 2, 2, 2, 1535,
	1536, 3, 2, 2, 2, 1536, 1587, 3, 2, 2, 2, 1537, 1535, 3, 2, 2, 2, 1538,
	1540, 7, 31, 2, 2, 1539, 1541, 5, 536, 269, 2, 1540, 1539, 3, 2, 2, 2,
	1540, 1541, 3, 2, 2, 2, 1541, 1543, 3, 2, 2, 2, 1542, 1538, 3, 2, 2, 2,
	1542, 1543, 3, 2, 2, 2, 1543, 1544, 3, 2, 2, 2, 1544, 1546, 7, 172, 2,
	2, 1545, 1547, 9, 20, 2, 2, 1546, 1545, 3, 2, 2, 2, 1546, 1547, 3, 2, 2,
	2, 1547, 1549, 3, 2, 2, 2, 1548, 1550, 5, 536, 269, 2, 1549, 1548, 3, 2,
	2, 2, 1549, 1550, 3, 2, 2, 2, 1550, 1552, 3, 2, 2, 2, 1551, 1553, 5, 66,
	34, 2, 1552, 1551, 3, 2, 2, 2, 1552, 1553, 3, 2, 2, 2, 1553, 1554, 3, 2,
	2, 2, 1554, 1558, 5, 572, 287, 2, 1555, 1557, 5, 68, 35, 2, 1556, 1555,
	3, 2, 2, 2, 1557, 1560, 3, 2, 2, 2, 1558, 1556, 3, 2, 2, 2, 1558, 1559,
	3, 2, 2, 2, 1559, 1587, 3, 2, 2, 2, 1560, 1558, 3, 2, 2, 2, 1561, 1563,
	7, 31, 2, 2, 1562, 1564, 5, 536, 269, 2, 1563, 1562, 3, 2, 2, 2, 1563,
	1564, 3, 2, 2, 2, 1564, 1566, 3, 2, 2, 2, 1565, 1561, 3, 2, 2, 2, 1565,
	1566, 3, 2, 2, 2, 1566, 1567, 3, 2, 2, 2, 1567, 1568, 7, 66, 2, 2, 1568,
	1570, 7, 89, 2, 2, 1569, 1571, 5, 536, 269, 2, 1570, 1569, 3, 2, 2, 2,
	1570, 1571, 3, 2, 2, 2, 1571, 1572, 3, 2, 2, 2, 1572, 1573, 5, 572, 287,
	2, 1573, 1574, 5, 88, 45, 2, 1574, 1587, 3, 2, 2, 2, 1575, 1577, 7, 31,
	2, 2, 1576, 1578, 5, 536, 269, 2, 1577, 1576, 3, 2, 2, 2, 1577, 1578, 3,
	2, 2, 2, 1578, 1580, 3, 2, 2, 2, 1579, 1575, 3, 2, 2, 2, 1579, 1580, 3,
	2, 2, 2, 1580, 1581, 3, 2, 2, 2, 1581, 1582, 7, 27, 2, 2, 1582, 1583, 7,
	1086, 2, 2, 1583, 1584, 5, 634, 318, 2, 1584, 1585, 7, 1087, 2, 2, 1585,
	1587, 3, 2, 2, 2, 1586, 1521, 3, 2, 2, 2, 1586, 1542, 3, 2, 2, 2, 1586,
	1565, 3, 2, 2, 2, 1586, 1579, 3, 2, 2, 2, 1587, 87, 3, 2, 2, 2, 1588, 1589,
	7, 130, 2, 2, 1589, 1591, 5, 512, 257, 2, 1590, 1592, 5, 572, 287, 2, 1591,
	1590, 3, 2, 2, 2, 1591, 1592, 3, 2, 2, 2, 1592, 1595, 3, 2, 2, 2, 1593,
	1594, 7, 105, 2, 2, 1594, 1596, 9, 21, 2, 2, 1595, 1593, 3, 2, 2, 2, 1595,
	1596, 3, 2, 2, 2, 1596, 1598, 3, 2, 2, 2, 1597, 1599, 5, 90, 46, 2, 1598,
	1597, 3, 2, 2, 2, 1598, 1599, 3, 2, 2, 2, 1599, 89, 3, 2, 2, 2, 1600, 1601,
	7, 113, 2, 2, 1601, 1602, 7, 44, 2, 2, 1602, 1606, 5, 92, 47, 2, 1603,
	1604, 7, 113, 2, 2, 1604, 1605, 7, 175, 2, 2, 1605, 1607, 5, 92, 47, 2,
	1606, 1603, 3, 2, 2, 2, 1606, 1607, 3, 2, 2, 2, 1607, 1617, 3, 2, 2, 2,
	1608, 1609, 7, 113, 2, 2, 1609, 1610, 7, 175, 2, 2, 1610, 1614, 5, 92,
	47, 2, 1611, 1612, 7, 113, 2, 2, 1612, 1613, 7, 44, 2, 2, 1613, 1615, 5,
	92, 47, 2, 1614, 1611, 3, 2, 2, 2, 1614, 1615, 3, 2, 2, 2, 1615, 1617,
	3, 2, 2, 2, 1616, 1600, 3, 2, 2, 2, 1616, 1608, 3, 2, 2, 2, 1617, 91, 3,
	2, 2, 2, 1618, 1625, 7, 138, 2, 2, 1619, 1625, 7, 22, 2, 2, 1620, 1621,
	7, 147, 2, 2, 1621, 1625, 7, 111, 2, 2, 1622, 1623, 7, 501, 2, 2, 1623,
	1625, 7, 321, 2, 2, 1624, 1618, 3, 2, 2, 2, 1624, 1619, 3, 2, 2, 2, 1624,
	1620, 3, 2, 2, 2, 1624, 1622, 3, 2, 2, 2, 1625, 93, 3, 2, 2, 2, 1626, 1628,
	9, 20, 2, 2, 1627, 1629, 5, 536, 269, 2, 1628, 1627, 3, 2, 2, 2, 1628,
	1629, 3, 2, 2, 2, 1629, 1631, 3, 2, 2, 2, 1630, 1632, 5, 66, 34, 2, 1631,
	1630, 3, 2, 2, 2, 1631, 1632, 3, 2, 2, 2, 1632, 1633, 3, 2, 2, 2, 1633,
	1637, 5, 572, 287, 2, 1634, 1636, 5, 68, 35, 2, 1635, 1634, 3, 2, 2, 2,
	1636, 1639, 3, 2, 2, 2, 1637, 1635, 3, 2, 2, 2, 1637, 1638, 3, 2, 2, 2,
	1638, 1655, 3, 2, 2, 2, 1639, 1637, 3, 2, 2, 2, 1640, 1642, 9, 22, 2, 2,
	1641, 1643, 9, 20, 2, 2, 1642, 1641, 3, 2, 2, 2, 1642, 1643, 3, 2, 2, 2,
	1643, 1645, 3, 2, 2, 2, 1644, 1646, 5, 536, 269, 2, 1645, 1644, 3, 2, 2,
	2, 1645, 1646, 3, 2, 2, 2, 1646, 1647, 3, 2, 2, 2, 1647, 1651, 5, 572,
	287, 2, 1648, 1650, 5, 68, 35, 2, 1649, 1648, 3, 2, 2, 2, 1650, 1653, 3,
	2, 2, 2, 1651, 1649, 3, 2, 2, 2, 1651, 1652, 3, 2, 2, 2, 1652, 1655, 3,
	2, 2, 2, 1653, 1651, 3, 2, 2, 2, 1654, 1626, 3, 2, 2, 2, 1654, 1640, 3,
	2, 2, 2, 1655, 95, 3, 2, 2, 2, 1656, 1658, 7, 393, 2, 2, 1657, 1659, 7,
	1077, 2, 2, 1658, 1657, 3, 2, 2, 2, 1658, 1659, 3, 2, 2, 2, 1659, 1661,
	3, 2, 2, 2, 1660, 1662, 5, 526, 264, 2, 1661, 1660, 3, 2, 2, 2, 1661, 1662,
	3, 2, 2, 2, 1662, 1802, 3, 2, 2, 2, 1663, 1665, 7, 330, 2, 2, 1664, 1666,
	7, 1077, 2, 2, 1665, 1664, 3, 2, 2, 2, 1665, 1666, 3, 2, 2, 2, 1666, 1667,
	3, 2, 2, 2, 1667, 1802, 5, 542, 272, 2, 1668, 1670, 7, 331, 2, 2, 1669,
	1671, 7, 1077, 2, 2, 1670, 1669, 3, 2, 2, 2, 1670, 1671, 3, 2, 2, 2, 1671,
	1672, 3, 2, 2, 2, 1672, 1802, 5, 542, 272, 2, 1673, 1675, 7, 42, 2, 2,
	1674, 1673, 3, 2, 2, 2, 1674, 1675, 3, 2, 2, 2, 1675, 1676, 3, 2, 2, 2,
	1676, 1678, 5, 52, 27, 2, 1677, 1679, 7, 1077, 2, 2, 1678, 1677, 3, 2,
	2, 2, 1678, 1679, 3, 2, 2, 2, 1679, 1682, 3, 2, 2, 2, 1680, 1683, 5, 522,
	262, 2, 1681, 1683, 7, 42, 2, 2, 1682, 1680, 3, 2, 2, 2, 1682, 1681, 3,
	2, 2, 2, 1683, 1802, 3, 2, 2, 2, 1684, 1686, 9, 23, 2, 2, 1685, 1687, 7,
	1077, 2, 2, 1686, 1685, 3, 2, 2, 2, 1686, 1687, 3, 2, 2, 2, 1687, 1688,
	3, 2, 2, 2, 1688, 1802, 9, 24, 2, 2, 1689, 1691, 7, 42, 2, 2, 1690, 1689,
	3, 2, 2, 2, 1690, 1691, 3, 2, 2, 2, 1691, 1692, 3, 2, 2, 2, 1692, 1694,
	7, 28, 2, 2, 1693, 1695, 7, 1077, 2, 2, 1694, 1693, 3, 2, 2, 2, 1694, 1695,
	3, 2, 2, 2, 1695, 1696, 3, 2, 2, 2, 1696, 1802, 5, 524, 263, 2, 1697, 1699,
	7, 355, 2, 2, 1698, 1700, 7, 1077, 2, 2, 1699, 1698, 3, 2, 2, 2, 1699,
	1700, 3, 2, 2, 2, 1700, 1701, 3, 2, 2, 2, 1701, 1802, 7, 1101, 2, 2, 1702,
	1704, 7, 360, 2, 2, 1703, 1705, 7, 1077, 2, 2, 1704, 1703, 3, 2, 2, 2,
	1704, 1705, 3, 2, 2, 2, 1705, 1706, 3, 2, 2, 2, 1706, 1802, 9, 25, 2, 2,
	1707, 1709, 7, 363, 2, 2, 1708, 1710, 7, 1077, 2, 2, 1709, 1708, 3, 2,
	2, 2, 1709, 1710, 3, 2, 2, 2, 1710, 1711, 3, 2, 2, 2, 1711, 1802, 7, 1101,
	2, 2, 1712, 1713, 7, 374, 2, 2, 1713, 1715, 7, 381, 2, 2, 1714, 1716, 7,
	1077, 2, 2, 1715, 1714, 3, 2, 2, 2, 1715, 1716, 3, 2, 2, 2, 1716, 1717,
	3, 2, 2, 2, 1717, 1802, 7, 1101, 2, 2, 1718, 1720, 7, 379, 2, 2, 1719,
	1721, 7, 1077, 2, 2, 1720, 1719, 3, 2, 2, 2, 1720, 1721, 3, 2, 2, 2, 1721,
	1722, 3, 2, 2, 2, 1722, 1802, 9, 24, 2, 2, 1723, 1725, 7, 390, 2, 2, 1724,
	1726, 7, 1077, 2, 2, 1725, 1724, 3, 2, 2, 2, 1725, 1726, 3, 2, 2, 2, 1726,
	1727, 3, 2, 2, 2, 1727, 1802, 7, 1101, 2, 2, 1728, 1729, 7, 79, 2, 2, 1729,
	1731, 7, 381, 2, 2, 1730, 1732, 7, 1077, 2, 2, 1731, 1730, 3, 2, 2, 2,
	1731, 1732, 3, 2, 2, 2, 1732, 1733, 3, 2, 2, 2, 1733, 1802, 7, 1101, 2,
	2, 1734, 1736, 7, 436, 2, 2, 1735, 1737, 7, 1077, 2, 2, 1736, 1735, 3,
	2, 2, 2, 1736, 1737, 3, 2, 2, 2, 1737, 1738, 3, 2, 2, 2, 1738, 1802, 9,
	26, 2, 2, 1739, 1741, 7, 447, 2, 2, 1740, 1742, 7, 1077, 2, 2, 1741, 1740,
	3, 2, 2, 2, 1741, 1742, 3, 2, 2, 2, 1742, 1743, 3, 2, 2, 2, 1743, 1802,
	5, 544, 273, 2, 1744, 1746, 7, 480, 2, 2, 1745, 1747, 7, 1077, 2, 2, 1746,
	1745, 3, 2, 2, 2, 1746, 1747, 3, 2, 2, 2, 1747, 1748, 3, 2, 2, 2, 1748,
	1802, 5, 542, 272, 2, 1749, 1751, 7, 490, 2, 2, 1750, 1752, 7, 1077, 2,
	2, 1751, 1750, 3, 2, 2, 2, 1751, 1752, 3, 2, 2, 2, 1752, 1753, 3, 2, 2,
	2, 1753, 1802, 5, 542, 272, 2, 1754, 1756, 7, 517, 2, 2, 1755, 1757, 7,
	1077, 2, 2, 1756, 1755, 3, 2, 2, 2, 1756, 1757, 3, 2, 2, 2, 1757, 1758,
	3, 2, 2, 2, 1758, 1802, 9, 27, 2, 2, 1759, 1761, 7, 523, 2, 2, 1760, 1762,
	7, 1077, 2, 2, 1761, 1760, 3, 2, 2, 2, 1761, 1762, 3, 2, 2, 2, 1762, 1763,
	3, 2, 2, 2, 1763, 1802, 7, 1101, 2, 2, 1764, 1766, 7, 570, 2, 2, 1765,
	1767, 7, 1077, 2, 2, 1766, 1765, 3, 2, 2, 2, 1766, 1767, 3, 2, 2, 2, 1767,
	1768, 3, 2, 2, 2, 1768, 1802, 9, 28, 2, 2, 1769, 1771, 7, 597, 2, 2, 1770,
	1772, 7, 1077, 2, 2, 1771, 1770, 3, 2, 2, 2, 1771, 1772, 3, 2, 2, 2, 1772,
	1773, 3, 2, 2, 2, 1773, 1802, 9, 27, 2, 2, 1774, 1776, 7, 598, 2, 2, 1775,
	1777, 7, 1077, 2, 2, 1776, 1775, 3, 2, 2, 2, 1776, 1777, 3, 2, 2, 2, 1777,
	1778, 3, 2, 2, 2, 1778, 1802, 9, 27, 2, 2, 1779, 1781, 7, 599, 2, 2, 1780,
	1782, 7, 1077, 2, 2, 1781, 1780, 3, 2, 2, 2, 1781, 1782, 3, 2, 2, 2, 1782,
	1783, 3, 2, 2, 2, 1783, 1802, 5, 542, 272, 2, 1784, 1785, 7, 613, 2, 2,
	1785, 1787, 5, 536, 269, 2, 1786, 1788, 5, 100, 51, 2, 1787, 1786, 3, 2,
	2, 2, 1787, 1788, 3, 2, 2, 2, 1788, 1802, 3, 2, 2, 2, 1789, 1790, 7, 614,
	2, 2, 1790, 1791, 7, 1077, 2, 2, 1791, 1802, 5, 98, 50, 2, 1792, 1802,
	5, 100, 51, 2, 1793, 1795, 7, 171, 2, 2, 1794, 1796, 7, 1077, 2, 2, 1795,
	1794, 3, 2, 2, 2, 1795, 1796, 3, 2, 2, 2, 1796, 1797, 3, 2, 2, 2, 1797,
	1798, 7, 1086, 2, 2, 1798, 1799, 5, 570, 286, 2, 1799, 1800, 7, 1087, 2,
	2, 1800, 1802, 3, 2, 2, 2, 1801, 1656, 3, 2, 2, 2, 1801, 1663, 3, 2, 2,
	2, 1801, 1668, 3, 2, 2, 2, 1801, 1674, 3, 2, 2, 2, 1801, 1684, 3, 2, 2,
	2, 1801, 1690, 3, 2, 2, 2, 1801, 1697, 3, 2, 2, 2, 1801, 1702, 3, 2, 2,
	2, 1801, 1707, 3, 2, 2, 2, 1801, 1712, 3, 2, 2, 2, 1801, 1718, 3, 2, 2,
	2, 1801, 1723, 3, 2, 2, 2, 1801, 1728, 3, 2, 2, 2, 1801, 1734, 3, 2, 2,
	2, 1801, 1739, 3, 2, 2, 2, 1801, 1744, 3, 2, 2, 2, 1801, 1749, 3, 2, 2,
	2, 1801, 1754, 3, 2, 2, 2, 1801, 1759, 3, 2, 2, 2, 1801, 1764, 3, 2, 2,
	2, 1801, 1769, 3, 2, 2, 2, 1801, 1774, 3, 2, 2, 2, 1801, 1779, 3, 2, 2,
	2, 1801, 1784, 3, 2, 2, 2, 1801, 1789, 3, 2, 2, 2, 1801, 1792, 3, 2, 2,
	2, 1801, 1793, 3, 2, 2, 2, 1802, 97, 3, 2, 2, 2, 1803, 1804, 9, 29, 2,
	2, 1804, 99, 3, 2, 2, 2, 1805, 1806, 7, 602, 2, 2, 1806, 1807, 9, 18, 2,
	2, 1807, 101, 3, 2, 2, 2, 1808, 1809, 7, 123, 2, 2, 1809, 1810, 7, 20,
	2, 2, 1810, 1813, 5, 104, 53, 2, 1811, 1812, 7, 522, 2, 2, 1812, 1814,
	5, 542, 272, 2, 1813, 1811, 3, 2, 2, 2, 1813, 1814, 3, 2, 2, 2, 1814, 1822,
	3, 2, 2, 2, 1815, 1816, 7, 607, 2, 2, 1816, 1817, 7, 20, 2, 2, 1817, 1820,
	5, 106, 54, 2, 1818, 1819, 7, 608, 2, 2, 1819, 1821, 5, 542, 272, 2, 1820,
	1818, 3, 2, 2, 2, 1820, 1821, 3, 2, 2, 2, 1821, 1823, 3, 2, 2, 2, 1822,
	1815, 3, 2, 2, 2, 1822, 1823, 3, 2, 2, 2, 1823, 1835, 3, 2, 2, 2, 1824,
	1825, 7, 1086, 2, 2, 1825, 1830, 5, 108, 55, 2, 1826, 1827, 7, 1088, 2,
	2, 1827, 1829, 5, 108, 55, 2, 1828, 1826, 3, 2, 2, 2, 1829, 1832, 3, 2,
	2, 2, 1830, 1828, 3, 2, 2, 2, 1830, 1831, 3, 2, 2, 2, 1831, 1833, 3, 2,
	2, 2, 1832, 1830, 3, 2, 2, 2, 1833, 1834, 7, 1087, 2, 2, 1834, 1836, 3,
	2, 2, 2, 1835, 1824, 3, 2, 2, 2, 1835, 1836, 3, 2, 2, 2, 1836, 103, 3,
	2, 2, 2, 1837, 1839, 7, 97, 2, 2, 1838, 1837, 3, 2, 2, 2, 1838, 1839, 3,
	2, 2, 2, 1839, 1840, 3, 2, 2, 2, 1840, 1841, 7, 426, 2, 2, 1841, 1842,
	7, 1086, 2, 2, 1842, 1843, 5, 634, 318, 2, 1843, 1844, 7, 1087, 2, 2, 1844,
	1883, 3, 2, 2, 2, 1845, 1847, 7, 97, 2, 2, 1846, 1845, 3, 2, 2, 2, 1846,
	1847, 3, 2, 2, 2, 1847, 1848, 3, 2, 2, 2, 1848, 1852, 7, 89, 2, 2, 1849,
	1850, 7, 324, 2, 2, 1850, 1851, 7, 1077, 2, 2, 1851, 1853, 9, 30, 2, 2,
	1852, 1849, 3, 2, 2, 2, 1852, 1853, 3, 2, 2, 2, 1853, 1854, 3, 2, 2, 2,
	1854, 1855, 7, 1086, 2, 2, 1855, 1856, 5, 568, 285, 2, 1856, 1857, 7, 1087,
	2, 2, 1857, 1883, 3, 2, 2, 2, 1858, 1868, 7, 127, 2, 2, 1859, 1860, 7,
	1086, 2, 2, 1860, 1861, 5, 634, 318, 2, 1861, 1862, 7, 1087, 2, 2, 1862,
	1869, 3, 2, 2, 2, 1863, 1864, 7, 352, 2, 2, 1864, 1865, 7, 1086, 2, 2,
	1865, 1866, 5, 568, 285, 2, 1866, 1867, 7, 1087, 2, 2, 1867, 1869, 3, 2,
	2, 2, 1868, 1859, 3, 2, 2, 2, 1868, 1863, 3, 2, 2, 2, 1869, 1883, 3, 2,
	2, 2, 1870, 1880, 7, 453, 2, 2, 1871, 1872, 7, 1086, 2, 2, 1872, 1873,
	5, 634, 318, 2, 1873, 1874, 7, 1087, 2, 2, 1874, 1881, 3, 2, 2, 2, 1875,
	1876, 7, 352, 2, 2, 1876, 1877, 7, 1086, 2, 2, 1877, 1878, 5, 568, 285,
	2, 1878, 1879, 7, 1087, 2, 2, 1879, 1881, 3, 2, 2, 2, 1880, 1871, 3, 2,
	2, 2, 1880, 1875, 3, 2, 2, 2, 1881, 1883, 3, 2, 2, 2, 1882, 1838, 3, 2,
	2, 2, 1882, 1846, 3, 2, 2, 2, 1882, 1858, 3, 2, 2, 2, 1882, 1870, 3, 2,
	2, 2, 1883, 105, 3, 2, 2, 2, 1884, 1886, 7, 97, 2, 2, 1885, 1884, 3, 2,
	2, 2, 1885, 1886, 3, 2, 2, 2, 1886, 1887, 3, 2, 2, 2, 1887, 1888, 7, 426,
	2, 2, 1888, 1889, 7, 1086, 2, 2, 1889, 1890, 5, 634, 318, 2, 1890, 1891,
	7, 1087, 2, 2, 1891, 1906, 3, 2, 2, 2, 1892, 1894, 7, 97, 2, 2, 1893, 1892,
	3, 2, 2, 2, 1893, 1894, 3, 2, 2, 2, 1894, 1895, 3, 2, 2, 2, 1895, 1899,
	7, 89, 2, 2, 1896, 1897, 7, 324, 2, 2, 1897, 1898, 7, 1077, 2, 2, 1898,
	1900, 9, 30, 2, 2, 1899, 1896, 3, 2, 2, 2, 1899, 1900, 3, 2, 2, 2, 1900,
	1901, 3, 2, 2, 2, 1901, 1902, 7, 1086, 2, 2, 1902, 1903, 5, 568, 285, 2,
	1903, 1904, 7, 1087, 2, 2, 1904, 1906, 3, 2, 2, 2, 1905, 1885, 3, 2, 2,
	2, 1905, 1893, 3, 2, 2, 2, 1906, 107, 3, 2, 2, 2, 1907, 1908, 7, 123, 2,
	2, 1908, 1909, 5, 536, 269, 2, 1909, 1910, 7, 179, 2, 2, 1910, 1911, 7,
	451, 2, 2, 1911, 1912, 7, 617, 2, 2, 1912, 1913, 7, 1086, 2, 2, 1913, 1918,
	5, 110, 56, 2, 1914, 1915, 7, 1088, 2, 2, 1915, 1917, 5, 110, 56, 2, 1916,
	1914, 3, 2, 2, 2, 1917, 1920, 3, 2, 2, 2, 1918, 1916, 3, 2, 2, 2, 1918,
	1919, 3, 2, 2, 2, 1919, 1921, 3, 2, 2, 2, 1920, 1918, 3, 2, 2, 2, 1921,
	1925, 7, 1087, 2, 2, 1922, 1924, 5, 116, 59, 2, 1923, 1922, 3, 2, 2, 2,
	1924, 1927, 3, 2, 2, 2, 1925, 1923, 3, 2, 2, 2, 1925, 1926, 3, 2, 2, 2,
	1926, 1939, 3, 2, 2, 2, 1927, 1925, 3, 2, 2, 2, 1928, 1929, 7, 1086, 2,
	2, 1929, 1934, 5, 114, 58, 2, 1930, 1931, 7, 1088, 2, 2, 1931, 1933, 5,
	114, 58, 2, 1932, 1930, 3, 2, 2, 2, 1933, 1936, 3, 2, 2, 2, 1934, 1932,
	3, 2, 2, 2, 1934, 1935, 3, 2, 2, 2, 1935, 1937, 3, 2, 2, 2, 1936, 1934,
	3, 2, 2, 2, 1937, 1938, 7, 1087, 2, 2, 1938, 1940, 3, 2, 2, 2, 1939, 1928,
	3, 2, 2, 2, 1939, 1940, 3, 2, 2, 2, 1940, 2054, 3, 2, 2, 2, 1941, 1942,
	7, 123, 2, 2, 1942, 1943, 5, 536, 269, 2, 1943, 1944, 7, 179, 2, 2, 1944,
	1945, 7, 451, 2, 2, 1945, 1946, 7, 617, 2, 2, 1946, 1950, 5, 110, 56, 2,
	1947, 1949, 5, 116, 59, 2, 1948, 1947, 3, 2, 2, 2, 1949, 1952, 3, 2, 2,
	2, 1950, 1948, 3, 2, 2, 2, 1950, 1951, 3, 2, 2, 2, 1951, 1964, 3, 2, 2,
	2, 1952, 1950, 3, 2, 2, 2, 1953, 1954, 7, 1086, 2, 2, 1954, 1959, 5, 114,
	58, 2, 1955, 1956, 7, 1088, 2, 2, 1956, 1958, 5, 114, 58, 2, 1957, 1955,
	3, 2, 2, 2, 1958, 1961, 3, 2, 2, 2, 1959, 1957, 3, 2, 2, 2, 1959, 1960,
	3, 2, 2, 2, 1960, 1962, 3, 2, 2, 2, 1961, 1959, 3, 2, 2, 2, 1962, 1963,
	7, 1087, 2, 2, 1963, 1965, 3, 2, 2, 2, 1964, 1953, 3, 2, 2, 2, 1964, 1965,
	3, 2, 2, 2, 1965, 2054, 3, 2, 2, 2, 1966, 1967, 7, 123, 2, 2, 1967, 1968,
	5, 536, 269, 2, 1968, 1969, 7, 179, 2, 2, 1969, 1970, 7, 78, 2, 2, 1970,
	1971, 7, 1086, 2, 2, 1971, 1976, 5, 110, 56, 2, 1972, 1973, 7, 1088, 2,
	2, 1973, 1975, 5, 110, 56, 2, 1974, 1972, 3, 2, 2, 2, 1975, 1978, 3, 2,
	2, 2, 1976, 1974, 3, 2, 2, 2, 1976, 1977, 3, 2, 2, 2, 1977, 1979, 3, 2,
	2, 2, 1978, 1976, 3, 2, 2, 2, 1979, 1983, 7, 1087, 2, 2, 1980, 1982, 5,
	116, 59, 2, 1981, 1980, 3, 2, 2, 2, 1982, 1985, 3, 2, 2, 2, 1983, 1981,
	3, 2, 2, 2, 1983, 1984, 3, 2, 2, 2, 1984, 1997, 3, 2, 2, 2, 1985, 1983,
	3, 2, 2, 2, 1986, 1987, 7, 1086, 2, 2, 1987, 1992, 5, 114, 58, 2, 1988,
	1989, 7, 1088, 2, 2, 1989, 1991, 5, 114, 58, 2, 1990, 1988, 3, 2, 2, 2,
	1991, 1994, 3, 2, 2, 2, 1992, 1990, 3, 2, 2, 2, 1992, 1993, 3, 2, 2, 2,
	1993, 1995, 3, 2, 2, 2, 1994, 1992, 3, 2, 2, 2, 1995, 1996, 7, 1087, 2,
	2, 1996, 1998, 3, 2, 2, 2, 1997, 1986, 3, 2, 2, 2, 1997, 1998, 3, 2, 2,
	2, 1998, 2054, 3, 2, 2, 2, 1999, 2000, 7, 123, 2, 2, 2000, 2001, 5, 536,
	269, 2, 2001, 2002, 7, 179, 2, 2, 2002, 2003, 7, 78, 2, 2, 2003, 2004,
	7, 1086, 2, 2, 2004, 2009, 5, 112, 57, 2, 2005, 2006, 7, 1088, 2, 2, 2006,
	2008, 5, 112, 57, 2, 2007, 2005, 3, 2, 2, 2, 2008, 2011, 3, 2, 2, 2, 2009,
	2007, 3, 2, 2, 2, 2009, 2010, 3, 2, 2, 2, 2010, 2012, 3, 2, 2, 2, 2011,
	2009, 3, 2, 2, 2, 2012, 2016, 7, 1087, 2, 2, 2013, 2015, 5, 116, 59, 2,
	2014, 2013, 3, 2, 2, 2, 2015, 2018, 3, 2, 2, 2, 2016, 2014, 3, 2, 2, 2,
	2016, 2017, 3, 2, 2, 2, 2017, 2030, 3, 2, 2, 2, 2018, 2016, 3, 2, 2, 2,
	2019, 2020, 7, 1086, 2, 2, 2020, 2025, 5, 114, 58, 2, 2021, 2022, 7, 1088,
	2, 2, 2022, 2024, 5, 114, 58, 2, 2023, 2021, 3, 2, 2, 2, 2024, 2027, 3,
	2, 2, 2, 2025, 2023, 3, 2, 2, 2, 2025, 2026, 3, 2, 2, 2, 2026, 2028, 3,
	2, 2, 2, 2027, 2025, 3, 2, 2, 2, 2028, 2029, 7, 1087, 2, 2, 2029, 2031,
	3, 2, 2, 2, 2030, 2019, 3, 2, 2, 2, 2030, 2031, 3, 2, 2, 2, 2031, 2054,
	3, 2, 2, 2, 2032, 2033, 7, 123, 2, 2, 2033, 2037, 5, 536, 269, 2, 2034,
	2036, 5, 116, 59, 2, 2035, 2034, 3, 2, 2, 2, 2036, 2039, 3, 2, 2, 2, 2037,
	2035, 3, 2, 2, 2, 2037, 2038, 3, 2, 2, 2, 2038, 2051, 3, 2, 2, 2, 2039,
	2037, 3, 2, 2, 2, 2040, 2041, 7, 1086, 2, 2, 2041, 2046, 5, 114, 58, 2,
	2042, 2043, 7, 1088, 2, 2, 2043, 2045, 5, 114, 58, 2, 2044, 2042, 3, 2,
	2, 2, 2045, 2048, 3, 2, 2, 2, 2046, 2044, 3, 2, 2, 2, 2046, 2047, 3, 2,
	2, 2, 2047, 2049, 3, 2, 2, 2, 2048, 2046, 3, 2, 2, 2, 2049, 2050, 7, 1087,
	2, 2, 2050, 2052, 3, 2, 2, 2, 2051, 2040, 3, 2, 2, 2, 2051, 2052, 3, 2,
	2, 2, 2052, 2054, 3, 2, 2, 2, 2053, 1907, 3, 2, 2, 2, 2053, 1941, 3, 2,
	2, 2, 2053, 1966, 3, 2, 2, 2, 2053, 1999, 3, 2, 2, 2, 2053, 2032, 3, 2,
	2, 2, 2054, 109, 3, 2, 2, 2, 2055, 2059, 5, 554, 278, 2, 2056, 2059, 5,
	634, 318, 2, 2057, 2059, 7, 106, 2, 2, 2058, 2055, 3, 2, 2, 2, 2058, 2056,
	3, 2, 2, 2, 2058, 2057, 3, 2, 2, 2, 2059, 111, 3, 2, 2, 2, 2060, 2061,
	7, 1086, 2, 2, 2061, 2064, 5, 110, 56, 2, 2062, 2063, 7, 1088, 2, 2, 2063,
	2065, 5, 110, 56, 2, 2064, 2062, 3, 2, 2, 2, 2065, 2066, 3, 2, 2, 2, 2066,
	2064, 3, 2, 2, 2, 2066, 2067, 3, 2, 2, 2, 2067, 2068, 3, 2, 2, 2, 2068,
	2069, 7, 1087, 2, 2, 2069, 113, 3, 2, 2, 2, 2070, 2071, 7, 607, 2, 2, 2071,
	2075, 5, 536, 269, 2, 2072, 2074, 5, 116, 59, 2, 2073, 2072, 3, 2, 2, 2,
	2074, 2077, 3, 2, 2, 2, 2075, 2073, 3, 2, 2, 2, 2075, 2076, 3, 2, 2, 2,
	2076, 115, 3, 2, 2, 2, 2077, 2075, 3, 2, 2, 2, 2078, 2080, 7, 42, 2, 2,
	2079, 2078, 3, 2, 2, 2, 2079, 2080, 3, 2, 2, 2, 2080, 2082, 3, 2, 2, 2,
	2081, 2083, 7, 602, 2, 2, 2082, 2081, 3, 2, 2, 2, 2082, 2083, 3, 2, 2,
	2, 2083, 2084, 3, 2, 2, 2, 2084, 2086, 7, 393, 2, 2, 2085, 2087, 7, 1077,
	2, 2, 2086, 2085, 3, 2, 2, 2, 2086, 2087, 3, 2, 2, 2, 2087, 2088, 3, 2,
	2, 2, 2088, 2127, 5, 526, 264, 2, 2089, 2091, 7, 355, 2, 2, 2090, 2092,
	7, 1077, 2, 2, 2091, 2090, 3, 2, 2, 2, 2091, 2092, 3, 2, 2, 2, 2092, 2093,
	3, 2, 2, 2, 2093, 2127, 7, 1101, 2, 2, 2094, 2095, 7, 374, 2, 2, 2095,
	2097, 7, 381, 2, 2, 2096, 2098, 7, 1077, 2, 2, 2097, 2096, 3, 2, 2, 2,
	2097, 2098, 3, 2, 2, 2, 2098, 2099, 3, 2, 2, 2, 2099, 2127, 7, 1101, 2,
	2, 2100, 2101, 7, 79, 2, 2, 2101, 2103, 7, 381, 2, 2, 2102, 2104, 7, 1077,
	2, 2, 2103, 2102, 3, 2, 2, 2, 2103, 2104, 3, 2, 2, 2, 2104, 2105, 3, 2,
	2, 2, 2105, 2127, 7, 1101, 2, 2, 2106, 2108, 7, 480, 2, 2, 2107, 2109,
	7, 1077, 2, 2, 2108, 2107, 3, 2, 2, 2, 2108, 2109, 3, 2, 2, 2, 2109, 2110,
	3, 2, 2, 2, 2110, 2127, 5, 542, 272, 2, 2111, 2113, 7, 490, 2, 2, 2112,
	2114, 7, 1077, 2, 2, 2113, 2112, 3, 2, 2, 2, 2113, 2114, 3, 2, 2, 2, 2114,
	2115, 3, 2, 2, 2, 2115, 2127, 5, 542, 272, 2, 2116, 2118, 7, 613, 2, 2,
	2117, 2119, 7, 1077, 2, 2, 2118, 2117, 3, 2, 2, 2, 2118, 2119, 3, 2, 2,
	2, 2119, 2120, 3, 2, 2, 2, 2120, 2127, 5, 536, 269, 2, 2121, 2123, 7, 502,
	2, 2, 2122, 2124, 7, 1077, 2, 2, 2123, 2122, 3, 2, 2, 2, 2123, 2124, 3,
	2, 2, 2, 2124, 2125, 3, 2, 2, 2, 2125, 2127, 5, 536, 269, 2, 2126, 2079,
	3, 2, 2, 2, 2126, 2089, 3, 2, 2, 2, 2126, 2094, 3, 2, 2, 2, 2126, 2100,
	3, 2, 2, 2, 2126, 2106, 3, 2, 2, 2, 2126, 2111, 3, 2, 2, 2, 2126, 2116,
	3, 2, 2, 2, 2126, 2121, 3, 2, 2, 2, 2127, 117, 3, 2, 2, 2, 2128, 2129,
	7, 9, 2, 2, 2129, 2131, 9, 2, 2, 2, 2130, 2132, 5, 536, 269, 2, 2131, 2130,
	3, 2, 2, 2, 2131, 2132, 3, 2, 2, 2, 2132, 2134, 3, 2, 2, 2, 2133, 2135,
	5, 50, 26, 2, 2134, 2133, 3, 2, 2, 2, 2135, 2136, 3, 2, 2, 2, 2136, 2134,
	3, 2, 2, 2, 2136, 2137, 3, 2, 2, 2, 2137, 2147, 3, 2, 2, 2, 2138, 2139,
	7, 9, 2, 2, 2139, 2140, 9, 2, 2, 2, 2140, 2141, 5, 536, 269, 2, 2141, 2142,
	7, 630, 2, 2, 2142, 2143, 7, 374, 2, 2, 2143, 2144, 7, 381, 2, 2, 2144,
	2145, 7, 496, 2, 2, 2145, 2147, 3, 2, 2, 2, 2146, 2128, 3, 2, 2, 2, 2146,
	2138, 3, 2, 2, 2, 2147, 119, 3, 2, 2, 2, 2148, 2150, 7, 9, 2, 2, 2149,
	2151, 5, 54, 28, 2, 2150, 2149, 3, 2, 2, 2, 2150, 2151, 3, 2, 2, 2, 2151,
	2152, 3, 2, 2, 2, 2152, 2153, 7, 399, 2, 2, 2153, 2157, 5, 510, 256, 2,
	2154, 2155, 7, 113, 2, 2, 2155, 2156, 7, 572, 2, 2, 2156, 2158, 5, 56,
	29, 2, 2157, 2154, 3, 2, 2, 2, 2157, 2158, 3, 2, 2, 2, 2158, 2165, 3, 2,
	2, 2, 2159, 2160, 7, 113, 2, 2, 2160, 2162, 7, 358, 2, 2, 2161, 2163, 7,
	109, 2, 2, 2162, 2161, 3, 2, 2, 2, 2162, 2163, 3, 2, 2, 2, 2163, 2164,
	3, 2, 2, 2, 2164, 2166, 7, 532, 2, 2, 2165, 2159, 3, 2, 2, 2, 2165, 2166,
	3, 2, 2, 2, 2166, 2170, 3, 2, 2, 2, 2167, 2168, 7, 133, 2, 2, 2168, 2169,
	7, 166, 2, 2, 2169, 2171, 5, 510, 256, 2, 2170, 2167, 3, 2, 2, 2, 2170,
	2171, 3, 2, 2, 2, 2171, 2173, 3, 2, 2, 2, 2172, 2174, 5, 64, 33, 2, 2173,
	2172, 3, 2, 2, 2, 2173, 2174, 3, 2, 2, 2, 2174, 2177, 3, 2, 2, 2, 2175,
	2176, 7, 355, 2, 2, 2176, 2178, 7, 1101, 2, 2, 2177, 2175, 3, 2, 2, 2,
	2177, 2178, 3, 2, 2, 2, 2178, 2181, 3, 2, 2, 2, 2179, 2180, 7, 385, 2,
	2, 2180, 2182, 5, 356, 179, 2, 2181, 2179, 3, 2, 2, 2, 2181, 2182, 3, 2,
	2, 2, 2182, 121, 3, 2, 2, 2, 2183, 2184, 7, 9, 2, 2, 2184, 2185, 7, 420,
	2, 2, 2185, 2189, 5, 510, 256, 2, 2186, 2188, 5, 74, 38, 2, 2187, 2186,
	3, 2, 2, 2, 2188, 2191, 3, 2, 2, 2, 2189, 2187, 3, 2, 2, 2, 2189, 2190,
	3, 2, 2, 2, 2190, 123, 3, 2, 2, 2, 2191, 2189, 3, 2, 2, 2, 2192, 2193,
	7, 9, 2, 2, 2193, 2194, 7, 438, 2, 2, 2194, 2195, 7, 567, 2, 2, 2195, 2196,
	7, 748, 2, 2, 2196, 2197, 7, 457, 2, 2, 2197, 2198, 7, 89, 2, 2, 2198,
	125, 3, 2, 2, 2, 2199, 2200, 7, 9, 2, 2, 2200, 2201, 7, 455, 2, 2, 2201,
	2202, 7, 72, 2, 2, 2202, 2203, 5, 536, 269, 2, 2203, 2204, 7, 7, 2, 2,
	2204, 2205, 7, 625, 2, 2, 2205, 2211, 7, 1101, 2, 2, 2206, 2208, 7, 434,
	2, 2, 2207, 2209, 7, 1077, 2, 2, 2208, 2207, 3, 2, 2, 2, 2208, 2209, 3,
	2, 2, 2, 2209, 2210, 3, 2, 2, 2, 2210, 2212, 5, 544, 273, 2, 2211, 2206,
	3, 2, 2, 2, 2211, 2212, 3, 2, 2, 2, 2212, 2214, 3, 2, 2, 2, 2213, 2215,
	7, 640, 2, 2, 2214, 2213, 3, 2, 2, 2, 2214, 2215, 3, 2, 2, 2, 2215, 2216,
	3, 2, 2, 2, 2216, 2218, 7, 393, 2, 2, 2217, 2219, 7, 1077, 2, 2, 2218,
	2217, 3, 2, 2, 2, 2218, 2219, 3, 2, 2, 2, 2219, 2220, 3, 2, 2, 2, 2220,
	2221, 5, 526, 264, 2, 2221, 127, 3, 2, 2, 2, 2222, 2223, 7, 9, 2, 2, 2223,
	2224, 7, 125, 2, 2, 2224, 2228, 5, 510, 256, 2, 2225, 2227, 5, 74, 38,
	2, 2226, 2225, 3, 2, 2, 2, 2227, 2230, 3, 2, 2, 2, 2228, 2226, 3, 2, 2,
	2, 2228, 2229, 3, 2, 2, 2, 2229, 129, 3, 2, 2, 2, 2230, 2228, 3, 2, 2,
	2, 2231, 2232, 7, 9, 2, 2, 2232, 2233, 7, 574, 2, 2, 2233, 2234, 5, 536,
	269, 2, 2234, 2235, 7, 515, 2, 2, 2235, 2236, 7, 1086, 2, 2, 2236, 2241,
	5, 76, 39, 2, 2237, 2238, 7, 1088, 2, 2, 2238, 2240, 5, 76, 39, 2, 2239,
	2237, 3, 2, 2, 2, 2240, 2243, 3, 2, 2, 2, 2241, 2239, 3, 2, 2, 2, 2241,
	2242, 3, 2, 2, 2, 2242, 2244, 3, 2, 2, 2, 2243, 2241, 3, 2, 2, 2, 2244,
	2245, 7, 1087, 2, 2, 2245, 131, 3, 2, 2, 2, 2246, 2248, 7, 9, 2, 2, 2247,
	2249, 9, 3, 2, 2, 2248, 2247, 3, 2, 2, 2, 2248, 2249, 3, 2, 2, 2, 2249,
	2251, 3, 2, 2, 2, 2250, 2252, 7, 77, 2, 2, 2251, 2250, 3, 2, 2, 2, 2251,
	2252, 3, 2, 2, 2, 2252, 2253, 3, 2, 2, 2, 2253, 2254, 7, 163, 2, 2, 2254,
	2263, 5, 512, 257, 2, 2255, 2260, 5, 138, 70, 2, 2256, 2257, 7, 1088, 2,
	2, 2257, 2259, 5, 138, 70, 2, 2258, 2256, 3, 2, 2, 2, 2259, 2262, 3, 2,
	2, 2, 2260, 2258, 3, 2, 2, 2, 2260, 2261, 3, 2, 2, 2, 2261, 2264, 3, 2,
	2, 2, 2262, 2260, 3, 2, 2, 2, 2263, 2255, 3, 2, 2, 2, 2263, 2264, 3, 2,
	2, 2, 2264, 2266, 3, 2, 2, 2, 2265, 2267, 5, 102, 52, 2, 2266, 2265, 3,
	2, 2, 2, 2266, 2267, 3, 2, 2, 2, 2267, 133, 3, 2, 2, 2, 2268, 2269, 7,
	9, 2, 2, 2269, 2270, 7, 613, 2, 2, 2270, 2271, 5, 536, 269, 2, 2271, 2272,
	9, 31, 2, 2, 2272, 2273, 7, 375, 2, 2, 2273, 2277, 7, 1101, 2, 2, 2274,
	2275, 7, 434, 2, 2, 2275, 2276, 7, 1077, 2, 2, 2276, 2278, 5, 544, 273,
	2, 2277, 2274, 3, 2, 2, 2, 2277, 2278, 3, 2, 2, 2, 2278, 2280, 3, 2, 2,
	2, 2279, 2281, 7, 640, 2, 2, 2280, 2279, 3, 2, 2, 2, 2280, 2281, 3, 2,
	2, 2, 2281, 2282, 3, 2, 2, 2, 2282, 2284, 7, 393, 2, 2, 2283, 2285, 7,
	1077, 2, 2, 2284, 2283, 3, 2, 2, 2, 2284, 2285, 3, 2, 2, 2, 2285, 2286,
	3, 2, 2, 2, 2286, 2287, 5, 526, 264, 2, 2287, 135, 3, 2, 2, 2, 2288, 2292,
	7, 9, 2, 2, 2289, 2290, 7, 324, 2, 2, 2290, 2291, 7, 1077, 2, 2, 2291,
	2293, 9, 12, 2, 2, 2292, 2289, 3, 2, 2, 2, 2292, 2293, 3, 2, 2, 2, 2293,
	2295, 3, 2, 2, 2, 2294, 2296, 5, 54, 28, 2, 2295, 2294, 3, 2, 2, 2, 2295,
	2296, 3, 2, 2, 2, 2296, 2300, 3, 2, 2, 2, 2297, 2298, 7, 152, 2, 2, 2298,
	2299, 7, 573, 2, 2, 2299, 2301, 9, 13, 2, 2, 2300, 2297, 3, 2, 2, 2, 2300,
	2301, 3, 2, 2, 2, 2301, 2302, 3, 2, 2, 2, 2302, 2303, 7, 637, 2, 2, 2303,
	2308, 5, 510, 256, 2, 2304, 2305, 7, 1086, 2, 2, 2305, 2306, 5, 568, 285,
	2, 2306, 2307, 7, 1087, 2, 2, 2307, 2309, 3, 2, 2, 2, 2308, 2304, 3, 2,
	2, 2, 2308, 2309, 3, 2, 2, 2, 2309, 2310, 3, 2, 2, 2, 2310, 2311, 7, 14,
	2, 2, 2311, 2318, 5, 184, 93, 2, 2312, 2314, 7, 183, 2, 2, 2313, 2315,
	9, 14, 2, 2, 2314, 2313, 3, 2, 2, 2, 2314, 2315, 3, 2, 2, 2, 2315, 2316,
	3, 2, 2, 2, 2316, 2317, 7, 27, 2, 2, 2317, 2319, 7, 115, 2, 2, 2318, 2312,
	3, 2, 2, 2, 2318, 2319, 3, 2, 2, 2, 2319, 137, 3, 2, 2, 2, 2320, 2327,
	5, 96, 49, 2, 2321, 2323, 7, 1088, 2, 2, 2322, 2321, 3, 2, 2, 2, 2322,
	2323, 3, 2, 2, 2, 2323, 2324, 3, 2, 2, 2, 2324, 2326, 5, 96, 49, 2, 2325,
	2322, 3, 2, 2, 2, 2326, 2329, 3, 2, 2, 2, 2327, 2325, 3, 2, 2, 2, 2327,
	2328, 3, 2, 2, 2, 2328, 2687, 3, 2, 2, 2, 2329, 2327, 3, 2, 2, 2, 2330,
	2332, 7, 7, 2, 2, 2331, 2333, 7, 29, 2, 2, 2332, 2331, 3, 2, 2, 2, 2332,
	2333, 3, 2, 2, 2, 2333, 2334, 3, 2, 2, 2, 2334, 2335, 5, 536, 269, 2, 2335,
	2339, 5, 82, 42, 2, 2336, 2340, 7, 413, 2, 2, 2337, 2338, 7, 322, 2, 2,
	2338, 2340, 5, 536, 269, 2, 2339, 2336, 3, 2, 2, 2, 2339, 2337, 3, 2, 2,
	2, 2339, 2340, 3, 2, 2, 2, 2340, 2687, 3, 2, 2, 2, 2341, 2343, 7, 7, 2,
	2, 2342, 2344, 7, 29, 2, 2, 2343, 2342, 3, 2, 2, 2, 2343, 2344, 3, 2, 2,
	2, 2344, 2345, 3, 2, 2, 2, 2345, 2346, 7, 1086, 2, 2, 2346, 2347, 5, 536,
	269, 2, 2347, 2354, 5, 82, 42, 2, 2348, 2349, 7, 1088, 2, 2, 2349, 2350,
	5, 536, 269, 2, 2350, 2351, 5, 82, 42, 2, 2351, 2353, 3, 2, 2, 2, 2352,
	2348, 3, 2, 2, 2, 2353, 2356, 3, 2, 2, 2, 2354, 2352, 3, 2, 2, 2, 2354,
	2355, 3, 2, 2, 2, 2355, 2357, 3, 2, 2, 2, 2356, 2354, 3, 2, 2, 2, 2357,
	2358, 7, 1087, 2, 2, 2358, 2687, 3, 2, 2, 2, 2359, 2360, 7, 7, 2, 2, 2360,
	2362, 9, 20, 2, 2, 2361, 2363, 5, 536, 269, 2, 2362, 2361, 3, 2, 2, 2,
	2362, 2363, 3, 2, 2, 2, 2363, 2365, 3, 2, 2, 2, 2364, 2366, 5, 66, 34,
	2, 2365, 2364, 3, 2, 2, 2, 2365, 2366, 3, 2, 2, 2, 2366, 2367, 3, 2, 2,
	2, 2367, 2371, 5, 572, 287, 2, 2368, 2370, 5, 68, 35, 2, 2369, 2368, 3,
	2, 2, 2, 2370, 2373, 3, 2, 2, 2, 2371, 2369, 3, 2, 2, 2, 2371, 2372, 3,
	2, 2, 2, 2372, 2687, 3, 2, 2, 2, 2373, 2371, 3, 2, 2, 2, 2374, 2379, 7,
	7, 2, 2, 2375, 2377, 7, 31, 2, 2, 2376, 2378, 5, 536, 269, 2, 2377, 2376,
	3, 2, 2, 2, 2377, 2378, 3, 2, 2, 2, 2378, 2380, 3, 2, 2, 2, 2379, 2375,
	3, 2, 2, 2, 2379, 2380, 3, 2, 2, 2, 2380, 2381, 3, 2, 2, 2, 2381, 2382,
	7, 124, 2, 2, 2382, 2384, 7, 89, 2, 2, 2383, 2385, 5, 536, 269, 2, 2384,
	2383, 3, 2, 2, 2, 2384, 2385, 3, 2, 2, 2, 2385, 2387, 3, 2, 2, 2, 2386,
	2388, 5, 66, 34, 2, 2387, 2386, 3, 2, 2, 2, 2387, 2388, 3, 2, 2, 2, 2388,
	2389, 3, 2, 2, 2, 2389, 2393, 5, 572, 287, 2, 2390, 2392, 5, 68, 35, 2,
	2391, 2390, 3, 2, 2, 2, 2392, 2395, 3, 2, 2, 2, 2393, 2391, 3, 2, 2, 2,
	2393, 2394, 3, 2, 2, 2, 2394, 2687, 3, 2, 2, 2, 2395, 2393, 3, 2, 2, 2,
	2396, 2401, 7, 7, 2, 2, 2397, 2399, 7, 31, 2, 2, 2398, 2400, 5, 536, 269,
	2, 2399, 2398, 3, 2, 2, 2, 2399, 2400, 3, 2, 2, 2, 2400, 2402, 3, 2, 2,
	2, 2401, 2397, 3, 2, 2, 2, 2401, 2402, 3, 2, 2, 2, 2402, 2403, 3, 2, 2,
	2, 2403, 2405, 7, 172, 2, 2, 2404, 2406, 9, 20, 2, 2, 2405, 2404, 3, 2,
	2, 2, 2405, 2406, 3, 2, 2, 2, 2406, 2408, 3, 2, 2, 2, 2407, 2409, 5, 536,
	269, 2, 2408, 2407, 3, 2, 2, 2, 2408, 2409, 3, 2, 2, 2, 2409, 2411, 3,
	2, 2, 2, 2410, 2412, 5, 66, 34, 2, 2411, 2410, 3, 2, 2, 2, 2411, 2412,
	3, 2, 2, 2, 2412, 2413, 3, 2, 2, 2, 2413, 2417, 5, 572, 287, 2, 2414, 2416,
	5, 68, 35, 2, 2415, 2414, 3, 2, 2, 2, 2416, 2419, 3, 2, 2, 2, 2417, 2415,
	3, 2, 2, 2, 2417, 2418, 3, 2, 2, 2, 2418, 2687, 3, 2, 2, 2, 2419, 2417,
	3, 2, 2, 2, 2420, 2421, 7, 7, 2, 2, 2421, 2423, 9, 22, 2, 2, 2422, 2424,
	9, 20, 2, 2, 2423, 2422, 3, 2, 2, 2, 2423, 2424, 3, 2, 2, 2, 2424, 2426,
	3, 2, 2, 2, 2425, 2427, 5, 536, 269, 2, 2426, 2425, 3, 2, 2, 2, 2426, 2427,
	3, 2, 2, 2, 2427, 2428, 3, 2, 2, 2, 2428, 2432, 5, 572, 287, 2, 2429, 2431,
	5, 68, 35, 2, 2430, 2429, 3, 2, 2, 2, 2431, 2434, 3, 2, 2, 2, 2432, 2430,
	3, 2, 2, 2, 2432, 2433, 3, 2, 2, 2, 2433, 2687, 3, 2, 2, 2, 2434, 2432,
	3, 2, 2, 2, 2435, 2440, 7, 7, 2, 2, 2436, 2438, 7, 31, 2, 2, 2437, 2439,
	5, 536, 269, 2, 2438, 2437, 3, 2, 2, 2, 2438, 2439, 3, 2, 2, 2, 2439, 2441,
	3, 2, 2, 2, 2440, 2436, 3, 2, 2, 2, 2440, 2441, 3, 2, 2, 2, 2441, 2442,
	3, 2, 2, 2, 2442, 2443, 7, 66, 2, 2, 2443, 2445, 7, 89, 2, 2, 2444, 2446,
	5, 536, 269, 2, 2445, 2444, 3, 2, 2, 2, 2445, 2446, 3, 2, 2, 2, 2446, 2447,
	3, 2, 2, 2, 2447, 2448, 5, 572, 287, 2, 2448, 2449, 5, 88, 45, 2, 2449,
	2687, 3, 2, 2, 2, 2450, 2455, 7, 7, 2, 2, 2451, 2453, 7, 31, 2, 2, 2452,
	2454, 5, 536, 269, 2, 2453, 2452, 3, 2, 2, 2, 2453, 2454, 3, 2, 2, 2, 2454,
	2456, 3, 2, 2, 2, 2455, 2451, 3, 2, 2, 2, 2455, 2456, 3, 2, 2, 2, 2456,
	2457, 3, 2, 2, 2, 2457, 2458, 7, 27, 2, 2, 2458, 2459, 7, 1086, 2, 2, 2459,
	2460, 5, 634, 318, 2, 2460, 2461, 7, 1087, 2, 2, 2461, 2687, 3, 2, 2, 2,
	2462, 2464, 7, 324, 2, 2, 2463, 2465, 7, 1077, 2, 2, 2464, 2463, 3, 2,
	2, 2, 2464, 2465, 3, 2, 2, 2, 2465, 2466, 3, 2, 2, 2, 2466, 2687, 9, 5,
	2, 2, 2467, 2469, 7, 9, 2, 2, 2468, 2470, 7, 29, 2, 2, 2469, 2468, 3, 2,
	2, 2, 2469, 2470, 3, 2, 2, 2, 2470, 2471, 3, 2, 2, 2, 2471, 2477, 5, 536,
	269, 2, 2472, 2473, 7, 147, 2, 2, 2473, 2474, 7, 42, 2, 2, 2474, 2478,
	5, 584, 293, 2, 2475, 2476, 7, 51, 2, 2, 2476, 2478, 7, 42, 2, 2, 2477,
	2472, 3, 2, 2, 2, 2477, 2475, 3, 2, 2, 2, 2478, 2687, 3, 2, 2, 2, 2479,
	2481, 7, 25, 2, 2, 2480, 2482, 7, 29, 2, 2, 2481, 2480, 3, 2, 2, 2, 2481,
	2482, 3, 2, 2, 2, 2482, 2483, 3, 2, 2, 2, 2483, 2484, 5, 536, 269, 2, 2484,
	2485, 5, 536, 269, 2, 2485, 2489, 5, 82, 42, 2, 2486, 2490, 7, 413, 2,
	2, 2487, 2488, 7, 322, 2, 2, 2488, 2490, 5, 536, 269, 2, 2489, 2486, 3,
	2, 2, 2, 2489, 2487, 3, 2, 2, 2, 2489, 2490, 3, 2, 2, 2, 2490, 2687, 3,
	2, 2, 2, 2491, 2492, 7, 133, 2, 2, 2492, 2493, 7, 29, 2, 2, 2493, 2494,
	5, 536, 269, 2, 2494, 2495, 7, 166, 2, 2, 2495, 2496, 5, 536, 269, 2, 2496,
	2687, 3, 2, 2, 2, 2497, 2499, 7, 100, 2, 2, 2498, 2500, 7, 1077, 2, 2,
	2499, 2498, 3, 2, 2, 2, 2499, 2500, 3, 2, 2, 2, 2500, 2501, 3, 2, 2, 2,
	2501, 2687, 9, 6, 2, 2, 2502, 2504, 7, 492, 2, 2, 2503, 2505, 7, 29, 2,
	2, 2504, 2503, 3, 2, 2, 2, 2504, 2505, 3, 2, 2, 2, 2505, 2506, 3, 2, 2,
	2, 2506, 2507, 5, 536, 269, 2, 2507, 2511, 5, 82, 42, 2, 2508, 2512, 7,
	413, 2, 2, 2509, 2510, 7, 322, 2, 2, 2510, 2512, 5, 536, 269, 2, 2511,
	2508, 3, 2, 2, 2, 2511, 2509, 3, 2, 2, 2, 2511, 2512, 3, 2, 2, 2, 2512,
	2687, 3, 2, 2, 2, 2513, 2515, 7, 51, 2, 2, 2514, 2516, 7, 29, 2, 2, 2515,
	2514, 3, 2, 2, 2, 2515, 2516, 3, 2, 2, 2, 2516, 2517, 3, 2, 2, 2, 2517,
	2519, 5, 536, 269, 2, 2518, 2520, 7, 138, 2, 2, 2519, 2518, 3, 2, 2, 2,
	2519, 2520, 3, 2, 2, 2, 2520, 2687, 3, 2, 2, 2, 2521, 2522, 7, 51, 2, 2,
	2522, 2523, 9, 32, 2, 2, 2523, 2687, 5, 536, 269, 2, 2524, 2525, 7, 51,
	2, 2, 2525, 2526, 7, 124, 2, 2, 2526, 2687, 7, 89, 2, 2, 2527, 2528, 7,
	133, 2, 2, 2528, 2529, 9, 20, 2, 2, 2529, 2530, 5, 536, 269, 2, 2530, 2531,
	7, 166, 2, 2, 2531, 2532, 5, 536, 269, 2, 2532, 2687, 3, 2, 2, 2, 2533,
	2534, 7, 9, 2, 2, 2534, 2535, 7, 79, 2, 2, 2535, 2536, 5, 536, 269, 2,
	2536, 2537, 9, 33, 2, 2, 2537, 2687, 3, 2, 2, 2, 2538, 2539, 7, 51, 2,
	2, 2539, 2540, 9, 20, 2, 2, 2540, 2687, 5, 536, 269, 2, 2541, 2542, 7,
	51, 2, 2, 2542, 2543, 7, 66, 2, 2, 2543, 2544, 7, 89, 2, 2, 2544, 2687,
	5, 536, 269, 2, 2545, 2546, 7, 382, 2, 2, 2546, 2687, 7, 90, 2, 2, 2547,
	2548, 7, 389, 2, 2, 2548, 2687, 7, 90, 2, 2, 2549, 2551, 7, 133, 2, 2,
	2550, 2552, 9, 34, 2, 2, 2551, 2550, 3, 2, 2, 2, 2551, 2552, 3, 2, 2, 2,
	2552, 2555, 3, 2, 2, 2, 2553, 2556, 5, 536, 269, 2, 2554, 2556, 5, 510,
	256, 2, 2555, 2553, 3, 2, 2, 2, 2555, 2554, 3, 2, 2, 2, 2556, 2687, 3,
	2, 2, 2, 2557, 2558, 7, 118, 2, 2, 2558, 2559, 7, 20, 2, 2, 2559, 2687,
	5, 568, 285, 2, 2560, 2561, 7, 33, 2, 2, 2561, 2562, 7, 166, 2, 2, 2562,
	2563, 7, 26, 2, 2, 2563, 2564, 7, 147, 2, 2, 2564, 2567, 5, 522, 262, 2,
	2565, 2566, 7, 28, 2, 2, 2566, 2568, 5, 524, 263, 2, 2567, 2565, 3, 2,
	2, 2, 2567, 2568, 3, 2, 2, 2, 2568, 2687, 3, 2, 2, 2, 2569, 2571, 7, 42,
	2, 2, 2570, 2569, 3, 2, 2, 2, 2570, 2571, 3, 2, 2, 2, 2571, 2572, 3, 2,
	2, 2, 2572, 2573, 7, 26, 2, 2, 2573, 2574, 7, 147, 2, 2, 2574, 2575, 7,
	1077, 2, 2, 2575, 2579, 5, 522, 262, 2, 2576, 2577, 7, 28, 2, 2, 2577,
	2578, 7, 1077, 2, 2, 2578, 2580, 5, 524, 263, 2, 2579, 2576, 3, 2, 2, 2,
	2579, 2580, 3, 2, 2, 2, 2580, 2687, 3, 2, 2, 2, 2581, 2582, 7, 383, 2,
	2, 2582, 2687, 7, 613, 2, 2, 2583, 2584, 7, 432, 2, 2, 2584, 2687, 7, 613,
	2, 2, 2585, 2687, 7, 65, 2, 2, 2586, 2587, 9, 35, 2, 2, 2587, 2687, 7,
	634, 2, 2, 2588, 2589, 7, 7, 2, 2, 2589, 2590, 7, 123, 2, 2, 2590, 2591,
	7, 1086, 2, 2, 2591, 2596, 5, 108, 55, 2, 2592, 2593, 7, 1088, 2, 2, 2593,
	2595, 5, 108, 55, 2, 2594, 2592, 3, 2, 2, 2, 2595, 2598, 3, 2, 2, 2, 2596,
	2594, 3, 2, 2, 2, 2596, 2597, 3, 2, 2, 2, 2597, 2599, 3, 2, 2, 2, 2598,
	2596, 3, 2, 2, 2, 2599, 2600, 7, 1087, 2, 2, 2600, 2687, 3, 2, 2, 2, 2601,
	2602, 7, 51, 2, 2, 2602, 2603, 7, 123, 2, 2, 2603, 2687, 5, 568, 285, 2,
	2604, 2605, 7, 383, 2, 2, 2605, 2608, 7, 123, 2, 2, 2606, 2609, 5, 568,
	285, 2, 2607, 2609, 7, 8, 2, 2, 2608, 2606, 3, 2, 2, 2, 2608, 2607, 3,
	2, 2, 2, 2609, 2610, 3, 2, 2, 2, 2610, 2687, 7, 613, 2, 2, 2611, 2612,
	7, 432, 2, 2, 2612, 2615, 7, 123, 2, 2, 2613, 2616, 5, 568, 285, 2, 2614,
	2616, 7, 8, 2, 2, 2615, 2613, 3, 2, 2, 2, 2615, 2614, 3, 2, 2, 2, 2616,
	2617, 3, 2, 2, 2, 2617, 2687, 7, 613, 2, 2, 2618, 2619, 7, 622, 2, 2, 2619,
	2622, 7, 123, 2, 2, 2620, 2623, 5, 568, 285, 2, 2621, 2623, 7, 8, 2, 2,
	2622, 2620, 3, 2, 2, 2, 2622, 2621, 3, 2, 2, 2, 2623, 2687, 3, 2, 2, 2,
	2624, 2625, 7, 350, 2, 2, 2625, 2626, 7, 123, 2, 2, 2626, 2687, 5, 542,
	272, 2, 2627, 2628, 7, 549, 2, 2, 2628, 2629, 7, 123, 2, 2, 2629, 2630,
	5, 568, 285, 2, 2630, 2631, 7, 85, 2, 2, 2631, 2632, 7, 1086, 2, 2, 2632,
	2637, 5, 108, 55, 2, 2633, 2634, 7, 1088, 2, 2, 2634, 2636, 5, 108, 55,
	2, 2635, 2633, 3, 2, 2, 2, 2636, 2639, 3, 2, 2, 2, 2637, 2635, 3, 2, 2,
	2, 2637, 2638, 3, 2, 2, 2, 2638, 2640, 3, 2, 2, 2, 2639, 2637, 3, 2, 2,
	2, 2640, 2641, 7, 1087, 2, 2, 2641, 2687, 3, 2, 2, 2, 2642, 2643, 7, 402,
	2, 2, 2643, 2644, 7, 123, 2, 2, 2644, 2645, 5, 536, 269, 2, 2645, 2646,
	7, 183, 2, 2, 2646, 2647, 7, 163, 2, 2, 2647, 2650, 5, 512, 257, 2, 2648,
	2649, 9, 35, 2, 2, 2649, 2651, 7, 634, 2, 2, 2650, 2648, 3, 2, 2, 2, 2650,
	2651, 3, 2, 2, 2, 2651, 2687, 3, 2, 2, 2, 2652, 2653, 7, 11, 2, 2, 2653,
	2656, 7, 123, 2, 2, 2654, 2657, 5, 568, 285, 2, 2655, 2657, 7, 8, 2, 2,
	2656, 2654, 3, 2, 2, 2, 2656, 2655, 3, 2, 2, 2, 2657, 2687, 3, 2, 2, 2,
	2658, 2659, 7, 27, 2, 2, 2659, 2662, 7, 123, 2, 2, 2660, 2663, 5, 568,
	285, 2, 2661, 2663, 7, 8, 2, 2, 2662, 2660, 3, 2, 2, 2, 2662, 2661, 3,
	2, 2, 2, 2663, 2687, 3, 2, 2, 2, 2664, 2665, 7, 114, 2, 2, 2665, 2668,
	7, 123, 2, 2, 2666, 2669, 5, 568, 285, 2, 2667, 2669, 7, 8, 2, 2, 2668,
	2666, 3, 2, 2, 2, 2668, 2667, 3, 2, 2, 2, 2669, 2687, 3, 2, 2, 2, 2670,
	2671, 7, 540, 2, 2, 2671, 2674, 7, 123, 2, 2, 2672, 2675, 5, 568, 285,
	2, 2673, 2675, 7, 8, 2, 2, 2674, 2672, 3, 2, 2, 2, 2674, 2673, 3, 2, 2,
	2, 2675, 2687, 3, 2, 2, 2, 2676, 2677, 7, 550, 2, 2, 2677, 2680, 7, 123,
	2, 2, 2678, 2681, 5, 568, 285, 2, 2679, 2681, 7, 8, 2, 2, 2680, 2678, 3,
	2, 2, 2, 2680, 2679, 3, 2, 2, 2, 2681, 2687, 3, 2, 2, 2, 2682, 2683, 7,
	548, 2, 2, 2683, 2687, 7, 521, 2, 2, 2684, 2685, 7, 630, 2, 2, 2685, 2687,
	7, 521, 2, 2, 2686, 2320, 3, 2, 2, 2, 2686, 2330, 3, 2, 2, 2, 2686, 2341,
	3, 2, 2, 2, 2686, 2359, 3, 2, 2, 2, 2686, 2374, 3, 2, 2, 2, 2686, 2396,
	3, 2, 2, 2, 2686, 2420, 3, 2, 2, 2, 2686, 2435, 3, 2, 2, 2, 2686, 2450,
	3, 2, 2, 2, 2686, 2462, 3, 2, 2, 2, 2686, 2467, 3, 2, 2, 2, 2686, 2479,
	3, 2, 2, 2, 2686, 2491, 3, 2, 2, 2, 2686, 2497, 3, 2, 2, 2, 2686, 2502,
	3, 2, 2, 2, 2686, 2513, 3, 2, 2, 2, 2686, 2521, 3, 2, 2, 2, 2686, 2524,
	3, 2, 2, 2, 2686, 2527, 3, 2, 2, 2, 2686, 2533, 3, 2, 2, 2, 2686, 2538,
	3, 2, 2, 2, 2686, 2541, 3, 2, 2, 2, 2686, 2545, 3, 2, 2, 2, 2686, 2547,
	3, 2, 2, 2, 2686, 2549, 3, 2, 2, 2, 2686, 2557, 3, 2, 2, 2, 2686, 2560,
	3, 2, 2, 2, 2686, 2570, 3, 2, 2, 2, 2686, 2581, 3, 2, 2, 2, 2686, 2583,
	3, 2, 2, 2, 2686, 2585, 3, 2, 2, 2, 2686, 2586, 3, 2, 2, 2, 2686, 2588,
	3, 2, 2, 2, 2686, 2601, 3, 2, 2, 2, 2686, 2604, 3, 2, 2, 2, 2686, 2611,
	3, 2, 2, 2, 2686, 2618, 3, 2, 2, 2, 2686, 2624, 3, 2, 2, 2, 2686, 2627,
	3, 2, 2, 2, 2686, 2642, 3, 2, 2, 2, 2686, 2652, 3, 2, 2, 2, 2686, 2658,
	3, 2, 2, 2, 2686, 2664, 3, 2, 2, 2, 2686, 2670, 3, 2, 2, 2, 2686, 2676,
	3, 2, 2, 2, 2686, 2682, 3, 2, 2, 2, 2686, 2684, 3, 2, 2, 2, 2687, 139,
	3, 2, 2, 2, 2688, 2689, 7, 51, 2, 2, 2689, 2691, 9, 2, 2, 2, 2690, 2692,
	5, 590, 296, 2, 2691, 2690, 3, 2, 2, 2, 2691, 2692, 3, 2, 2, 2, 2692, 2693,
	3, 2, 2, 2, 2693, 2694, 5, 536, 269, 2, 2694, 141, 3, 2, 2, 2, 2695, 2696,
	7, 51, 2, 2, 2696, 2698, 7, 399, 2, 2, 2697, 2699, 5, 590, 296, 2, 2698,
	2697, 3, 2, 2, 2, 2698, 2699, 3, 2, 2, 2, 2699, 2700, 3, 2, 2, 2, 2700,
	2701, 5, 510, 256, 2, 2701, 143, 3, 2, 2, 2, 2702, 2703, 7, 51, 2, 2, 2703,
	2705, 7, 79, 2, 2, 2704, 2706, 9, 3, 2, 2, 2705, 2704, 3, 2, 2, 2, 2705,
	2706, 3, 2, 2, 2, 2706, 2707, 3, 2, 2, 2, 2707, 2708, 5, 536, 269, 2, 2708,
	2709, 7, 113, 2, 2, 2709, 2722, 5, 512, 257, 2, 2710, 2712, 7, 324, 2,
	2, 2711, 2713, 7, 1077, 2, 2, 2712, 2711, 3, 2, 2, 2, 2712, 2713, 3, 2,
	2, 2, 2713, 2714, 3, 2, 2, 2, 2714, 2721, 9, 5, 2, 2, 2715, 2717, 7, 100,
	2, 2, 2716, 2718, 7, 1077, 2, 2, 2717, 2716, 3, 2, 2, 2, 2717, 2718, 3,
	2, 2, 2, 2718, 2719, 3, 2, 2, 2, 2719, 2721, 9, 6, 2, 2, 2720, 2710, 3,
	2, 2, 2, 2720, 2715, 3, 2, 2, 2, 2721, 2724, 3, 2, 2, 2, 2722, 2720, 3,
	2, 2, 2, 2722, 2723, 3, 2, 2, 2, 2723, 145, 3, 2, 2, 2, 2724, 2722, 3,
	2, 2, 2, 2725, 2726, 7, 51, 2, 2, 2726, 2727, 7, 455, 2, 2, 2727, 2728,
	7, 72, 2, 2, 2728, 2729, 5, 536, 269, 2, 2729, 2730, 7, 393, 2, 2, 2730,
	2731, 7, 1077, 2, 2, 2731, 2732, 5, 526, 264, 2, 2732, 147, 3, 2, 2, 2,
	2733, 2734, 7, 51, 2, 2, 2734, 2736, 7, 125, 2, 2, 2735, 2737, 5, 590,
	296, 2, 2736, 2735, 3, 2, 2, 2, 2736, 2737, 3, 2, 2, 2, 2737, 2738, 3,
	2, 2, 2, 2738, 2739, 5, 510, 256, 2, 2739, 149, 3, 2, 2, 2, 2740, 2741,
	7, 51, 2, 2, 2741, 2743, 7, 420, 2, 2, 2742, 2744, 5, 590, 296, 2, 2743,
	2742, 3, 2, 2, 2, 2743, 2744, 3, 2, 2, 2, 2744, 2745, 3, 2, 2, 2, 2745,
	2746, 5, 510, 256, 2, 2746, 151, 3, 2, 2, 2, 2747, 2748, 7, 51, 2, 2, 2748,
	2750, 7, 574, 2, 2, 2749, 2751, 5, 590, 296, 2, 2750, 2749, 3, 2, 2, 2,
	2750, 2751, 3, 2, 2, 2, 2751, 2752, 3, 2, 2, 2, 2752, 2753, 5, 536, 269,
	2, 2753, 153, 3, 2, 2, 2, 2754, 2756, 7, 51, 2, 2, 2755, 2757, 7, 615,
	2, 2, 2756, 2755, 3, 2, 2, 2, 2756, 2757, 3, 2, 2, 2, 2757, 2758, 3, 2,
	2, 2, 2758, 2760, 7, 163, 2, 2, 2759, 2761, 5, 590, 296, 2, 2760, 2759,
	3, 2, 2, 2, 2760, 2761, 3, 2, 2, 2, 2761, 2762, 3, 2, 2, 2, 2762, 2764,
	5, 570, 286, 2, 2763, 2765, 9, 36, 2, 2, 2764, 2763, 3, 2, 2, 2, 2764,
	2765, 3, 2, 2, 2, 2765, 155, 3, 2, 2, 2, 2766, 2767, 7, 51, 2, 2, 2767,
	2768, 7, 613, 2, 2, 2768, 2774, 5, 536, 269, 2, 2769, 2771, 7, 393, 2,
	2, 2770, 2772, 7, 1077, 2, 2, 2771, 2770, 3, 2, 2, 2, 2771, 2772, 3, 2,
	2, 2, 2772, 2773, 3, 2, 2, 2, 2773, 2775, 5, 526, 264, 2, 2774, 2769, 3,
	2, 2, 2, 2774, 2775, 3, 2, 2, 2, 2775, 157, 3, 2, 2, 2, 2776, 2777, 7,
	51, 2, 2, 2777, 2779, 7, 168, 2, 2, 2778, 2780, 5, 590, 296, 2, 2779, 2778,
	3, 2, 2, 2, 2779, 2780, 3, 2, 2, 2, 2780, 2781, 3, 2, 2, 2, 2781, 2782,
	5, 510, 256, 2, 2782, 159, 3, 2, 2, 2, 2783, 2784, 7, 51, 2, 2, 2784, 2786,
	7, 637, 2, 2, 2785, 2787, 5, 590, 296, 2, 2786, 2785, 3, 2, 2, 2, 2786,
	2787, 3, 2, 2, 2, 2787, 2788, 3, 2, 2, 2, 2788, 2793, 5, 510, 256, 2, 2789,
	2790, 7, 1088, 2, 2, 2790, 2792, 5, 510, 256, 2, 2791, 2789, 3, 2, 2, 2,
	2792, 2795, 3, 2, 2, 2, 2793, 2791, 3, 2, 2, 2, 2793, 2794, 3, 2, 2, 2,
	2794, 2797, 3, 2, 2, 2, 2795, 2793, 3, 2, 2, 2, 2796, 2798, 9, 36, 2, 2,
	2797, 2796, 3, 2, 2, 2, 2797, 2798, 3, 2, 2, 2, 2798, 161, 3, 2, 2, 2,
	2799, 2800, 7, 133, 2, 2, 2800, 2801, 7, 163, 2, 2, 2801, 2806, 5, 164,
	83, 2, 2802, 2803, 7, 1088, 2, 2, 2803, 2805, 5, 164, 83, 2, 2804, 2802,
	3, 2, 2, 2, 2805, 2808, 3, 2, 2, 2, 2806, 2804, 3, 2, 2, 2, 2806, 2807,
	3, 2, 2, 2, 2807, 163, 3, 2, 2, 2, 2808, 2806, 3, 2, 2, 2, 2809, 2810,
	5, 512, 257, 2, 2810, 2811, 7, 166, 2, 2, 2811, 2812, 5, 512, 257, 2, 2812,
	165, 3, 2, 2, 2, 2813, 2815, 7, 622, 2, 2, 2814, 2816, 7, 163, 2, 2, 2815,
	2814, 3, 2, 2, 2, 2815, 2816, 3, 2, 2, 2, 2816, 2817, 3, 2, 2, 2, 2817,
	2818, 5, 512, 257, 2, 2818, 167, 3, 2, 2, 2, 2819, 2820, 7, 21, 2, 2, 2820,
	2827, 5, 510, 256, 2, 2821, 2824, 7, 1086, 2, 2, 2822, 2825, 5, 578, 290,
	2, 2823, 2825, 5, 574, 288, 2, 2824, 2822, 3, 2, 2, 2, 2824, 2823, 3, 2,
	2, 2, 2824, 2825, 3, 2, 2, 2, 2825, 2826, 3, 2, 2, 2, 2826, 2828, 7, 1087,
	2, 2, 2827, 2821, 3, 2, 2, 2, 2827, 2828, 3, 2, 2, 2, 2828, 169, 3, 2,
	2, 2, 2829, 2832, 5, 196, 99, 2, 2830, 2832, 5, 198, 100, 2, 2831, 2829,
	3, 2, 2, 2, 2831, 2830, 3, 2, 2, 2, 2832, 171, 3, 2, 2, 2, 2833, 2834,
	7, 385, 2, 2, 2834, 2835, 5, 574, 288, 2, 2835, 173, 3, 2, 2, 2, 2836,
	2841, 5, 200, 101, 2, 2837, 2841, 5, 202, 102, 2, 2838, 2841, 5, 204, 103,
	2, 2839, 2841, 5, 206, 104, 2, 2840, 2836, 3, 2, 2, 2, 2840, 2837, 3, 2,
	2, 2, 2840, 2838, 3, 2, 2, 2, 2840, 2839, 3, 2, 2, 2, 2841, 175, 3, 2,
	2, 2, 2842, 2844, 7, 83, 2, 2, 2843, 2845, 9, 37, 2, 2, 2844, 2843, 3,
	2, 2, 2, 2844, 2845, 3, 2, 2, 2, 2845, 2847, 3, 2, 2, 2, 2846, 2848, 7,
	77, 2, 2, 2847, 2846, 3, 2, 2, 2, 2847, 2848, 3, 2, 2, 2, 2848, 2850, 3,
	2, 2, 2, 2849, 2851, 7, 85, 2, 2, 2850, 2849, 3, 2, 2, 2, 2850, 2851, 3,
	2, 2, 2, 2851, 2852, 3, 2, 2, 2, 2852, 2859, 5, 512, 257, 2, 2853, 2854,
	7, 123, 2, 2, 2854, 2856, 7, 1086, 2, 2, 2855, 2857, 5, 568, 285, 2, 2856,
	2855, 3, 2, 2, 2, 2856, 2857, 3, 2, 2, 2, 2857, 2858, 3, 2, 2, 2, 2858,
	2860, 7, 1087, 2, 2, 2859, 2853, 3, 2, 2, 2, 2859, 2860, 3, 2, 2, 2, 2860,
	2877, 3, 2, 2, 2, 2861, 2862, 7, 1086, 2, 2, 2862, 2863, 5, 568, 285, 2,
	2863, 2864, 7, 1087, 2, 2, 2864, 2866, 3, 2, 2, 2, 2865, 2861, 3, 2, 2,
	2, 2865, 2866, 3, 2, 2, 2, 2866, 2867, 3, 2, 2, 2, 2867, 2878, 5, 188,
	95, 2, 2868, 2869, 7, 147, 2, 2, 2869, 2874, 5, 190, 96, 2, 2870, 2871,
	7, 1088, 2, 2, 2871, 2873, 5, 190, 96, 2, 2872, 2870, 3, 2, 2, 2, 2873,
	2876, 3, 2, 2, 2, 2874, 2872, 3, 2, 2, 2, 2874, 2875, 3, 2, 2, 2, 2875,
	2878, 3, 2, 2, 2, 2876, 2874, 3, 2, 2, 2, 2877, 2865, 3, 2, 2, 2, 2877,
	2868, 3, 2, 2, 2, 2878, 2891, 3, 2, 2, 2, 2879, 2880, 7, 113, 2, 2, 2880,
	2881, 7, 387, 2, 2, 2881, 2882, 7, 89, 2, 2, 2882, 2883, 7, 175, 2, 2,
	2883, 2888, 5, 190, 96, 2, 2884, 2885, 7, 1088, 2, 2, 2885, 2887, 5, 190,
	96, 2, 2886, 2884, 3, 2, 2, 2, 2887, 2890, 3, 2, 2, 2, 2888, 2886, 3, 2,
	2, 2, 2888, 2889, 3, 2, 2, 2, 2889, 2892, 3, 2, 2, 2, 2890, 2888, 3, 2,
	2, 2, 2891, 2879, 3, 2, 2, 2, 2891, 2892, 3, 2, 2, 2, 2892, 177, 3, 2,
	2, 2, 2893, 2894, 7, 99, 2, 2, 2894, 2896, 7, 374, 2, 2, 2895, 2897, 9,
	38, 2, 2, 2896, 2895, 3, 2, 2, 2, 2896, 2897, 3, 2, 2, 2, 2897, 2899, 3,
	2, 2, 2, 2898, 2900, 7, 454, 2, 2, 2899, 2898, 3, 2, 2, 2, 2899, 2900,
	3, 2, 2, 2, 2900, 2901, 3, 2, 2, 2, 2901, 2902, 7, 80, 2, 2, 2902, 2904,
	7, 1101, 2, 2, 2903, 2905, 9, 8, 2, 2, 2904, 2903, 3, 2, 2, 2, 2904, 2905,
	3, 2, 2, 2, 2905, 2906, 3, 2, 2, 2, 2906, 2907, 7, 85, 2, 2, 2907, 2908,
	7, 163, 2, 2, 2908, 2914, 5, 512, 257, 2, 2909, 2910, 7, 123, 2, 2, 2910,
	2911, 7, 1086, 2, 2, 2911, 2912, 5, 568, 285, 2, 2912, 2913, 7, 1087, 2,
	2, 2913, 2915, 3, 2, 2, 2, 2914, 2909, 3, 2, 2, 2, 2914, 2915, 3, 2, 2,
	2, 2915, 2919, 3, 2, 2, 2, 2916, 2917, 7, 26, 2, 2, 2917, 2918, 7, 147,
	2, 2, 2918, 2920, 5, 522, 262, 2, 2919, 2916, 3, 2, 2, 2, 2919, 2920, 3,
	2, 2, 2, 2920, 2927, 3, 2, 2, 2, 2921, 2923, 9, 39, 2, 2, 2922, 2924, 5,
	248, 125, 2, 2923, 2922, 3, 2, 2, 2, 2924, 2925, 3, 2, 2, 2, 2925, 2923,
	3, 2, 2, 2, 2925, 2926, 3, 2, 2, 2, 2926, 2928, 3, 2, 2, 2, 2927, 2921,
	3, 2, 2, 2, 2927, 2928, 3, 2, 2, 2, 2928, 2935, 3, 2, 2, 2, 2929, 2931,
	7, 98, 2, 2, 2930, 2932, 5, 250, 126, 2, 2931, 2930, 3, 2, 2, 2, 2932,
	2933, 3, 2, 2, 2, 2933, 2931, 3, 2, 2, 2, 2933, 2934, 3, 2, 2, 2, 2934,
	2936, 3, 2, 2, 2, 2935, 2929, 3, 2, 2, 2, 2935, 2936, 3, 2, 2, 2, 2936,
	2941, 3, 2, 2, 2, 2937, 2938, 7, 77, 2, 2, 2938, 2939, 5, 542, 272, 2,
	2939, 2940, 9, 40, 2, 2, 2940, 2942, 3, 2, 2, 2, 2941, 2937, 3, 2, 2, 2,
	2941, 2942, 3, 2, 2, 2, 2942, 2954, 3, 2, 2, 2, 2943, 2944, 7, 1086, 2,
	2, 2944, 2949, 5, 192, 97, 2, 2945, 2946, 7, 1088, 2, 2, 2946, 2948, 5,
	192, 97, 2, 2947, 2945, 3, 2, 2, 2, 2948, 2951, 3, 2, 2, 2, 2949, 2947,
	3, 2, 2, 2, 2949, 2950, 3, 2, 2, 2, 2950, 2952, 3, 2, 2, 2, 2951, 2949,
	3, 2, 2, 2, 2952, 2953, 7, 1087, 2, 2, 2953, 2955, 3, 2, 2, 2, 2954, 2943,
	3, 2, 2, 2, 2954, 2955, 3, 2, 2, 2, 2955, 2965, 3, 2, 2, 2, 2956, 2957,
	7, 147, 2, 2, 2957, 2962, 5, 190, 96, 2, 2958, 2959, 7, 1088, 2, 2, 2959,
	2961, 5, 190, 96, 2, 2960, 2958, 3, 2, 2, 2, 2961, 2964, 3, 2, 2, 2, 2962,
	2960, 3, 2, 2, 2, 2962, 2963, 3, 2, 2, 2, 2963, 2966, 3, 2, 2, 2, 2964,
	2962, 3, 2, 2, 2, 2965, 2956, 3, 2, 2, 2, 2965, 2966, 3, 2, 2, 2, 2966,
	179, 3, 2, 2, 2, 2967, 2968, 7, 99, 2, 2, 2968, 2970, 7, 648, 2, 2, 2969,
	2971, 9, 38, 2, 2, 2970, 2969, 3, 2, 2, 2, 2970, 2971, 3, 2, 2, 2, 2971,
	2973, 3, 2, 2, 2, 2972, 2974, 7, 454, 2, 2, 2973, 2972, 3, 2, 2, 2, 2973,
	2974, 3, 2, 2, 2, 2974, 2975, 3, 2, 2, 2, 2975, 2976, 7, 80, 2, 2, 2976,
	2978, 7, 1101, 2, 2, 2977, 2979, 9, 8, 2, 2, 2978, 2977, 3, 2, 2, 2, 2978,
	2979, 3, 2, 2, 2, 2979, 2980, 3, 2, 2, 2, 2980, 2981, 7, 85, 2, 2, 2981,
	2982, 7, 163, 2, 2, 2982, 2986, 5, 512, 257, 2, 2983, 2984, 7, 26, 2, 2,
	2984, 2985, 7, 147, 2, 2, 2985, 2987, 5, 522, 262, 2, 2986, 2983, 3, 2,
	2, 2, 2986, 2987, 3, 2, 2, 2, 2987, 2994, 3, 2, 2, 2, 2988, 2989, 7, 569,
	2, 2, 2989, 2990, 7, 430, 2, 2, 2990, 2991, 7, 20, 2, 2, 2991, 2992, 7,
	1079, 2, 2, 2992, 2993, 7, 1101, 2, 2, 2993, 2995, 7, 1078, 2, 2, 2994,
	2988, 3, 2, 2, 2, 2994, 2995, 3, 2, 2, 2, 2995, 3000, 3, 2, 2, 2, 2996,
	2997, 7, 77, 2, 2, 2997, 2998, 5, 542, 272, 2, 2998, 2999, 9, 40, 2, 2,
	2999, 3001, 3, 2, 2, 2, 3000, 2996, 3, 2, 2, 2, 3000, 3001, 3, 2, 2, 2,
	3001, 3013, 3, 2, 2, 2, 3002, 3003, 7, 1086, 2, 2, 3003, 3008, 5, 192,
	97, 2, 3004, 3005, 7, 1088, 2, 2, 3005, 3007, 5, 192, 97, 2, 3006, 3004,
	3, 2, 2, 2, 3007, 3010, 3, 2, 2, 2, 3008, 3006, 3, 2, 2, 2, 3008, 3009,
	3, 2, 2, 2, 3009, 3011, 3, 2, 2, 2, 3010, 3008, 3, 2, 2, 2, 3011, 3012,
	7, 1087, 2, 2, 3012, 3014, 3, 2, 2, 2, 3013, 3002, 3, 2, 2, 2, 3013, 3014,
	3, 2, 2, 2, 3014, 3024, 3, 2, 2, 2, 3015, 3016, 7, 147, 2, 2, 3016, 3021,
	5, 190, 96, 2, 3017, 3018, 7, 1088, 2, 2, 3018, 3020, 5, 190, 96, 2, 3019,
	3017, 3, 2, 2, 2, 3020, 3023, 3, 2, 2, 2, 3021, 3019, 3, 2, 2, 2, 3021,
	3022, 3, 2, 2, 2, 3022, 3025, 3, 2, 2, 2, 3023, 3021, 3, 2, 2, 2, 3024,
	3015, 3, 2, 2, 2, 3024, 3025, 3, 2, 2, 2, 3025, 181, 3, 2, 2, 2, 3026,
	3028, 7, 135, 2, 2, 3027, 3029, 9, 41, 2, 2, 3028, 3027, 3, 2, 2, 2, 3028,
	3029, 3, 2, 2, 2, 3029, 3031, 3, 2, 2, 2, 3030, 3032, 7, 85, 2, 2, 3031,
	3030, 3, 2, 2, 2, 3031, 3032, 3, 2, 2, 2, 3032, 3033, 3, 2, 2, 2, 3033,
	3039, 5, 512, 257, 2, 3034, 3035, 7, 123, 2, 2, 3035, 3036, 7, 1086, 2,
	2, 3036, 3037, 5, 568, 285, 2, 3037, 3038, 7, 1087, 2, 2, 3038, 3040, 3,
	2, 2, 2, 3039, 3034, 3, 2, 2, 2, 3039, 3040, 3, 2, 2, 2, 3040, 3057, 3,
	2, 2, 2, 3041, 3042, 7, 1086, 2, 2, 3042, 3043, 5, 568, 285, 2, 3043, 3044,
	7, 1087, 2, 2, 3044, 3046, 3, 2, 2, 2, 3045, 3041, 3, 2, 2, 2, 3045, 3046,
	3, 2, 2, 2, 3046, 3047, 3, 2, 2, 2, 3047, 3058, 5, 188, 95, 2, 3048, 3049,
	7, 147, 2, 2, 3049, 3054, 5, 190, 96, 2, 3050, 3051, 7, 1088, 2, 2, 3051,
	3053, 5, 190, 96, 2, 3052, 3050, 3, 2, 2, 2, 3053, 3056, 3, 2, 2, 2, 3054,
	3052, 3, 2, 2, 2, 3054, 3055, 3, 2, 2, 2, 3055, 3058, 3, 2, 2, 2, 3056,
	3054, 3, 2, 2, 2, 3057, 3045, 3, 2, 2, 2, 3057, 3048, 3, 2, 2, 2, 3058,
	183, 3, 2, 2, 2, 3059, 3061, 5, 232, 117, 2, 3060, 3062, 5, 194, 98, 2,
	3061, 3060, 3, 2, 2, 2, 3061, 3062, 3, 2, 2, 2, 3062, 3115, 3, 2, 2, 2,
	3063, 3065, 5, 228, 115, 2, 3064, 3066, 5, 194, 98, 2, 3065, 3064, 3, 2,
	2, 2, 3065, 3066, 3, 2, 2, 2, 3066, 3115, 3, 2, 2, 2, 3067, 3069, 5, 234,
	118, 2, 3068, 3070, 5, 238, 120, 2, 3069, 3068, 3, 2, 2, 2, 3070, 3071,
	3, 2, 2, 2, 3071, 3069, 3, 2, 2, 2, 3071, 3072, 3, 2, 2, 2, 3072, 3081,
	3, 2, 2, 2, 3073, 3075, 7, 171, 2, 2, 3074, 3076, 9, 42, 2, 2, 3075, 3074,
	3, 2, 2, 2, 3075, 3076, 3, 2, 2, 2, 3076, 3079, 3, 2, 2, 2, 3077, 3080,
	5, 232, 117, 2, 3078, 3080, 5, 228, 115, 2, 3079, 3077, 3, 2, 2, 2, 3079,
	3078, 3, 2, 2, 2, 3080, 3082, 3, 2, 2, 2, 3081, 3073, 3, 2, 2, 2, 3081,
	3082, 3, 2, 2, 2, 3082, 3084, 3, 2, 2, 2, 3083, 3085, 5, 212, 107, 2, 3084,
	3083, 3, 2, 2, 2, 3084, 3085, 3, 2, 2, 2, 3085, 3087, 3, 2, 2, 2, 3086,
	3088, 5, 262, 132, 2, 3087, 3086, 3, 2, 2, 2, 3087, 3088, 3, 2, 2, 2, 3088,
	3090, 3, 2, 2, 2, 3089, 3091, 5, 194, 98, 2, 3090, 3089, 3, 2, 2, 2, 3090,
	3091, 3, 2, 2, 2, 3091, 3115, 3, 2, 2, 2, 3092, 3094, 5, 230, 116, 2, 3093,
	3095, 5, 236, 119, 2, 3094, 3093, 3, 2, 2, 2, 3095, 3096, 3, 2, 2, 2, 3096,
	3094, 3, 2, 2, 2, 3096, 3097, 3, 2, 2, 2, 3097, 3103, 3, 2, 2, 2, 3098,
	3100, 7, 171, 2, 2, 3099, 3101, 9, 42, 2, 2, 3100, 3099, 3, 2, 2, 2, 3100,
	3101, 3, 2, 2, 2, 3101, 3102, 3, 2, 2, 2, 3102, 3104, 5, 228, 115, 2, 3103,
	3098, 3, 2, 2, 2, 3103, 3104, 3, 2, 2, 2, 3104, 3106, 3, 2, 2, 2, 3105,
	3107, 5, 212, 107, 2, 3106, 3105, 3, 2, 2, 2, 3106, 3107, 3, 2, 2, 2, 3107,
	3109, 3, 2, 2, 2, 3108, 3110, 5, 262, 132, 2, 3109, 3108, 3, 2, 2, 2, 3109,
	3110, 3, 2, 2, 2, 3110, 3112, 3, 2, 2, 2, 3111, 3113, 5, 194, 98, 2, 3112,
	3111, 3, 2, 2, 2, 3112, 3113, 3, 2, 2, 2, 3113, 3115, 3, 2, 2, 2, 3114,
	3059, 3, 2, 2, 2, 3114, 3063, 3, 2, 2, 2, 3114, 3067, 3, 2, 2, 2, 3114,
	3092, 3, 2, 2, 2, 3115, 185, 3, 2, 2, 2, 3116, 3119, 5, 208, 105, 2, 3117,
	3119, 5, 210, 106, 2, 3118, 3116, 3, 2, 2, 2, 3118, 3117, 3, 2, 2, 2, 3119,
	187, 3, 2, 2, 2, 3120, 3139, 5, 184, 93, 2, 3121, 3122, 9, 43, 2, 2, 3122,
	3124, 7, 1086, 2, 2, 3123, 3125, 5, 576, 289, 2, 3124, 3123, 3, 2, 2, 2,
	3124, 3125, 3, 2, 2, 2, 3125, 3126, 3, 2, 2, 2, 3126, 3135, 7, 1087, 2,
	2, 3127, 3128, 7, 1088, 2, 2, 3128, 3130, 7, 1086, 2, 2, 3129, 3131, 5,
	576, 289, 2, 3130, 3129, 3, 2, 2, 2, 3130, 3131, 3, 2, 2, 2, 3131, 3132,
	3, 2, 2, 2, 3132, 3134, 7, 1087, 2, 2, 3133, 3127, 3, 2, 2, 2, 3134, 3137,
	3, 2, 2, 2, 3135, 3133, 3, 2, 2, 2, 3135, 3136, 3, 2, 2, 2, 3136, 3139,
	3, 2, 2, 2, 3137, 3135, 3, 2, 2, 2, 3138, 3120, 3, 2, 2, 2, 3138, 3121,
	3, 2, 2, 2, 3139, 189, 3, 2, 2, 2, 3140, 3141, 5, 514, 258, 2, 3141, 3144,
	7, 1077, 2, 2, 3142, 3145, 5, 634, 318, 2, 3143, 3145, 7, 42, 2, 2, 3144,
	3142, 3, 2, 2, 2, 3144, 3143, 3, 2, 2, 2, 3145, 191, 3, 2, 2, 2, 3146,
	3149, 5, 536, 269, 2, 3147, 3149, 7, 1113, 2, 2, 3148, 3146, 3, 2, 2, 2,
	3148, 3147, 3, 2, 2, 2, 3149, 193, 3, 2, 2, 2, 3150, 3151, 7, 64, 2, 2,
	3151, 3157, 7, 175, 2, 2, 3152, 3153, 7, 100, 2, 2, 3153, 3154, 7, 78,
	2, 2, 3154, 3155, 7, 576, 2, 2, 3155, 3157, 7, 491, 2, 2, 3156, 3150, 3,
	2, 2, 2, 3156, 3152, 3, 2, 2, 2, 3157, 195, 3, 2, 2, 2, 3158, 3160, 7,
	44, 2, 2, 3159, 3161, 7, 102, 2, 2, 3160, 3159, 3, 2, 2, 2, 3160, 3161,
	3, 2, 2, 2, 3161, 3163, 3, 2, 2, 2, 3162, 3164, 7, 539, 2, 2, 3163, 3162,
	3, 2, 2, 2, 3163, 3164, 3, 2, 2, 2, 3164, 3166, 3, 2, 2, 2, 3165, 3167,
	7, 77, 2, 2, 3166, 3165, 3, 2, 2, 2, 3166, 3167, 3, 2, 2, 2, 3167, 3168,
	3, 2, 2, 2, 3168, 3169, 7, 67, 2, 2, 3169, 3175, 5, 512, 257, 2, 3170,
	3171, 7, 123, 2, 2, 3171, 3172, 7, 1086, 2, 2, 3172, 3173, 5, 568, 285,
	2, 3173, 3174, 7, 1087, 2, 2, 3174, 3176, 3, 2, 2, 2, 3175, 3170, 3, 2,
	2, 2, 3175, 3176, 3, 2, 2, 2, 3176, 3179, 3, 2, 2, 2, 3177, 3178, 7, 181,
	2, 2, 3178, 3180, 5, 634, 318, 2, 3179, 3177, 3, 2, 2, 2, 3179, 3180, 3,
	2, 2, 2, 3180, 3182, 3, 2, 2, 2, 3181, 3183, 5, 212, 107, 2, 3182, 3181,
	3, 2, 2, 2, 3182, 3183, 3, 2, 2, 2, 3183, 3186, 3, 2, 2, 2, 3184, 3185,
	7, 96, 2, 2, 3185, 3187, 5, 264, 133, 2, 3186, 3184, 3, 2, 2, 2, 3186,
	3187, 3, 2, 2, 2, 3187, 197, 3, 2, 2, 2, 3188, 3190, 7, 44, 2, 2, 3189,
	3191, 7, 102, 2, 2, 3190, 3189, 3, 2, 2, 2, 3190, 3191, 3, 2, 2, 2, 3191,
	3193, 3, 2, 2, 2, 3192, 3194, 7, 539, 2, 2, 3193, 3192, 3, 2, 2, 2, 3193,
	3194, 3, 2, 2, 2, 3194, 3196, 3, 2, 2, 2, 3195, 3197, 7, 77, 2, 2, 3196,
	3195, 3, 2, 2, 2, 3196, 3197, 3, 2, 2, 2, 3197, 3237, 3, 2, 2, 2, 3198,
	3201, 5, 512, 257, 2, 3199, 3200, 7, 1085, 2, 2, 3200, 3202, 7, 1070, 2,
	2, 3201, 3199, 3, 2, 2, 2, 3201, 3202, 3, 2, 2, 2, 3202, 3211, 3, 2, 2,
	2, 3203, 3204, 7, 1088, 2, 2, 3204, 3207, 5, 512, 257, 2, 3205, 3206, 7,
	1085, 2, 2, 3206, 3208, 7, 1070, 2, 2, 3207, 3205, 3, 2, 2, 2, 3207, 3208,
	3, 2, 2, 2, 3208, 3210, 3, 2, 2, 2, 3209, 3203, 3, 2, 2, 2, 3210, 3213,
	3, 2, 2, 2, 3211, 3209, 3, 2, 2, 2, 3211, 3212, 3, 2, 2, 2, 3212, 3214,
	3, 2, 2, 2, 3213, 3211, 3, 2, 2, 2, 3214, 3215, 7, 67, 2, 2, 3215, 3216,
	5, 216, 109, 2, 3216, 3238, 3, 2, 2, 2, 3217, 3218, 7, 67, 2, 2, 3218,
	3221, 5, 512, 257, 2, 3219, 3220, 7, 1085, 2, 2, 3220, 3222, 7, 1070, 2,
	2, 3221, 3219, 3, 2, 2, 2, 3221, 3222, 3, 2, 2, 2, 3222, 3231, 3, 2, 2,
	2, 3223, 3224, 7, 1088, 2, 2, 3224, 3227, 5, 512, 257, 2, 3225, 3226, 7,
	1085, 2, 2, 3226, 3228, 7, 1070, 2, 2, 3227, 3225, 3, 2, 2, 2, 3227, 3228,
	3, 2, 2, 2, 3228, 3230, 3, 2, 2, 2, 3229, 3223, 3, 2, 2, 2, 3230, 3233,
	3, 2, 2, 2, 3231, 3229, 3, 2, 2, 2, 3231, 3232, 3, 2, 2, 2, 3232, 3234,
	3, 2, 2, 2, 3233, 3231, 3, 2, 2, 2, 3234, 3235, 7, 178, 2, 2, 3235, 3236,
	5, 216, 109, 2, 3236, 3238, 3, 2, 2, 2, 3237, 3198, 3, 2, 2, 2, 3237, 3217,
	3, 2, 2, 2, 3238, 3241, 3, 2, 2, 2, 3239, 3240, 7, 181, 2, 2, 3240, 3242,
	5, 634, 318, 2, 3241, 3239, 3, 2, 2, 2, 3241, 3242, 3, 2, 2, 2, 3242, 199,
	3, 2, 2, 2, 3243, 3244, 7, 425, 2, 2, 3244, 3245, 5, 512, 257, 2, 3245,
	3250, 7, 513, 2, 2, 3246, 3248, 7, 14, 2, 2, 3247, 3246, 3, 2, 2, 2, 3247,
	3248, 3, 2, 2, 2, 3248, 3249, 3, 2, 2, 2, 3249, 3251, 5, 536, 269, 2, 3250,
	3247, 3, 2, 2, 2, 3250, 3251, 3, 2, 2, 2, 3251, 201, 3, 2, 2, 2, 3252,
	3253, 7, 425, 2, 2, 3253, 3254, 5, 512, 257, 2, 3254, 3255, 7, 128, 2,
	2, 3255, 3262, 5, 536, 269, 2, 3256, 3257, 5, 642, 322, 2, 3257, 3258,
	7, 1086, 2, 2, 3258, 3259, 5, 578, 290, 2, 3259, 3260, 7, 1087, 2, 2, 3260,
	3263, 3, 2, 2, 2, 3261, 3263, 9, 44, 2, 2, 3262, 3256, 3, 2, 2, 2, 3262,
	3261, 3, 2, 2, 2, 3263, 3266, 3, 2, 2, 2, 3264, 3265, 7, 181, 2, 2, 3265,
	3267, 5, 634, 318, 2, 3266, 3264, 3, 2, 2, 2, 3266, 3267, 3, 2, 2, 2, 3267,
	3270, 3, 2, 2, 2, 3268, 3269, 7, 96, 2, 2, 3269, 3271, 5, 264, 133, 2,
	3270, 3268, 3, 2, 2, 2, 3270, 3271, 3, 2, 2, 2, 3271, 203, 3, 2, 2, 2,
	3272, 3273, 7, 425, 2, 2, 3273, 3274, 5, 512, 257, 2, 3274, 3275, 7, 128,
	2, 2, 3275, 3278, 9, 45, 2, 2, 3276, 3277, 7, 181, 2, 2, 3277, 3279, 5,
	634, 318, 2, 3278, 3276, 3, 2, 2, 2, 3278, 3279, 3, 2, 2, 2, 3279, 3282,
	3, 2, 2, 2, 3280, 3281, 7, 96, 2, 2, 3281, 3283, 5, 264, 133, 2, 3282,
	3280, 3, 2, 2, 2, 3282, 3283, 3, 2, 2, 2, 3283, 205, 3, 2, 2, 2, 3284,
	3285, 7, 425, 2, 2, 3285, 3286, 5, 512, 257, 2, 3286, 3287, 7, 349, 2,
	2, 3287, 207, 3, 2, 2, 2, 3288, 3290, 7, 175, 2, 2, 3289, 3291, 7, 102,
	2, 2, 3290, 3289, 3, 2, 2, 2, 3290, 3291, 3, 2, 2, 2, 3291, 3293, 3, 2,
	2, 2, 3292, 3294, 7, 77, 2, 2, 3293, 3292, 3, 2, 2, 2, 3293, 3294, 3, 2,
	2, 2, 3294, 3295, 3, 2, 2, 2, 3295, 3300, 5, 512, 257, 2, 3296, 3298, 7,
	14, 2, 2, 3297, 3296, 3, 2, 2, 2, 3297, 3298, 3, 2, 2, 2, 3298, 3299, 3,
	2, 2, 2, 3299, 3301, 5, 536, 269, 2, 3300, 3297, 3, 2, 2, 2, 3300, 3301,
	3, 2, 2, 2, 3301, 3302, 3, 2, 2, 2, 3302, 3303, 7, 147, 2, 2, 3303, 3308,
	5, 190, 96, 2, 3304, 3305, 7, 1088, 2, 2, 3305, 3307, 5, 190, 96, 2, 3306,
	3304, 3, 2, 2, 2, 3307, 3310, 3, 2, 2, 2, 3308, 3306, 3, 2, 2, 2, 3308,
	3309, 3, 2, 2, 2, 3309, 3313, 3, 2, 2, 2, 3310, 3308, 3, 2, 2, 2, 3311,
	3312, 7, 181, 2, 2, 3312, 3314, 5, 634, 318, 2, 3313, 3311, 3, 2, 2, 2,
	3313, 3314, 3, 2, 2, 2, 3314, 3316, 3, 2, 2, 2, 3315, 3317, 5, 212, 107,
	2, 3316, 3315, 3, 2, 2, 2, 3316, 3317, 3, 2, 2, 2, 3317, 3319, 3, 2, 2,
	2, 3318, 3320, 5, 262, 132, 2, 3319, 3318, 3, 2, 2, 2, 3319, 3320, 3, 2,
	2, 2, 3320, 209, 3, 2, 2, 2, 3321, 3323, 7, 175, 2, 2, 3322, 3324, 7, 102,
	2, 2, 3323, 3322, 3, 2, 2, 2, 3323, 3324, 3, 2, 2, 2, 3324, 3326, 3, 2,
	2, 2, 3325, 3327, 7, 77, 2, 2, 3326, 3325, 3, 2, 2, 2, 3326, 3327, 3, 2,
	2, 2, 3327, 3328, 3, 2, 2, 2, 3328, 3329, 5, 216, 109, 2, 3329, 3330, 7,
	147, 2, 2, 3330, 3335, 5, 190, 96, 2, 3331, 3332, 7, 1088, 2, 2, 3332,
	3334, 5, 190, 96, 2, 3333, 3331, 3, 2, 2, 2, 3334, 3337, 3, 2, 2, 2, 3335,
	3333, 3, 2, 2, 2, 3335, 3336, 3, 2, 2, 2, 3336, 3340, 3, 2, 2, 2, 3337,
	3335, 3, 2, 2, 2, 3338, 3339, 7, 181, 2, 2, 3339, 3341, 5, 634, 318, 2,
	3340, 3338, 3, 2, 2, 2, 3340, 3341, 3, 2, 2, 2, 3341, 211, 3, 2, 2, 2,
	3342, 3343, 7, 118, 2, 2, 3343, 3344, 7, 20, 2, 2, 3344, 3349, 5, 214,
	108, 2, 3345, 3346, 7, 1088, 2, 2, 3346, 3348, 5, 214, 108, 2, 3347, 3345,
	3, 2, 2, 2, 3348, 3351, 3, 2, 2, 2, 3349, 3347, 3, 2, 2, 2, 3349, 3350,
	3, 2, 2, 2, 3350, 213, 3, 2, 2, 2, 3351, 3349, 3, 2, 2, 2, 3352, 3354,
	5, 634, 318, 2, 3353, 3355, 9, 46, 2, 2, 3354, 3353, 3, 2, 2, 2, 3354,
	3355, 3, 2, 2, 2, 3355, 215, 3, 2, 2, 2, 3356, 3361, 5, 218, 110, 2, 3357,
	3358, 7, 1088, 2, 2, 3358, 3360, 5, 218, 110, 2, 3359, 3357, 3, 2, 2, 2,
	3360, 3363, 3, 2, 2, 2, 3361, 3359, 3, 2, 2, 2, 3361, 3362, 3, 2, 2, 2,
	3362, 217, 3, 2, 2, 2, 3363, 3361, 3, 2, 2, 2, 3364, 3368, 5, 220, 111,
	2, 3365, 3367, 5, 226, 114, 2, 3366, 3365, 3, 2, 2, 2, 3367, 3370, 3, 2,
	2, 2, 3368, 3366, 3, 2, 2, 2, 3368, 3369, 3, 2, 2, 2, 3369, 3382, 3, 2,
	2, 2, 3370, 3368, 3, 2, 2, 2, 3371, 3372, 7, 1086, 2, 2, 3372, 3376, 5,
	220, 111, 2, 3373, 3375, 5, 226, 114, 2, 3374, 3373, 3, 2, 2, 2, 3375,
	3378, 3, 2, 2, 2, 3376, 3374, 3, 2, 2, 2, 3376, 3377, 3, 2, 2, 2, 3377,
	3379, 3, 2, 2, 2, 3378, 3376, 3, 2, 2, 2, 3379, 3380, 7, 1087, 2, 2, 3380,
	3382, 3, 2, 2, 2, 3381, 3364, 3, 2, 2, 2, 3381, 3371, 3, 2, 2, 2, 3382,
	219, 3, 2, 2, 2, 3383, 3389, 5, 512, 257, 2, 3384, 3385, 7, 123, 2, 2,
	3385, 3386, 7, 1086, 2, 2, 3386, 3387, 5, 568, 285, 2, 3387, 3388, 7, 1087,
	2, 2, 3388, 3390, 3, 2, 2, 2, 3389, 3384, 3, 2, 2, 2, 3389, 3390, 3, 2,
	2, 2, 3390, 3395, 3, 2, 2, 2, 3391, 3393, 7, 14, 2, 2, 3392, 3391, 3, 2,
	2, 2, 3392, 3393, 3, 2, 2, 2, 3393, 3394, 3, 2, 2, 2, 3394, 3396, 5, 536,
	269, 2, 3395, 3392, 3, 2, 2, 2, 3395, 3396, 3, 2, 2, 2, 3396, 3405, 3,
	2, 2, 2, 3397, 3402, 5, 222, 112, 2, 3398, 3399, 7, 1088, 2, 2, 3399, 3401,
	5, 222, 112, 2, 3400, 3398, 3, 2, 2, 2, 3401, 3404, 3, 2, 2, 2, 3402, 3400,
	3, 2, 2, 2, 3402, 3403, 3, 2, 2, 2, 3403, 3406, 3, 2, 2, 2, 3404, 3402,
	3, 2, 2, 2, 3405, 3397, 3, 2, 2, 2, 3405, 3406, 3, 2, 2, 2, 3406, 3424,
	3, 2, 2, 2, 3407, 3413, 5, 184, 93, 2, 3408, 3409, 7, 1086, 2, 2, 3409,
	3410, 5, 184, 93, 2, 3410, 3411, 7, 1087, 2, 2, 3411, 3413, 3, 2, 2, 2,
	3412, 3407, 3, 2, 2, 2, 3412, 3408, 3, 2, 2, 2, 3413, 3415, 3, 2, 2, 2,
	3414, 3416, 7, 14, 2, 2, 3415, 3414, 3, 2, 2, 2, 3415, 3416, 3, 2, 2, 2,
	3416, 3417, 3, 2, 2, 2, 3417, 3418, 5, 536, 269, 2, 3418, 3424, 3, 2, 2,
	2, 3419, 3420, 7, 1086, 2, 2, 3420, 3421, 5, 216, 109, 2, 3421, 3422, 7,
	1087, 2, 2, 3422, 3424, 3, 2, 2, 2, 3423, 3383, 3, 2, 2, 2, 3423, 3412,
	3, 2, 2, 2, 3423, 3419, 3, 2, 2, 2, 3424, 221, 3, 2, 2, 2, 3425, 3426,
	9, 47, 2, 2, 3426, 3429, 9, 20, 2, 2, 3427, 3428, 7, 64, 2, 2, 3428, 3430,
	5, 224, 113, 2, 3429, 3427, 3, 2, 2, 2, 3429, 3430, 3, 2, 2, 2, 3430, 3431,
	3, 2, 2, 2, 3431, 3432, 7, 1086, 2, 2, 3432, 3433, 5, 568, 285, 2, 3433,
	3434, 7, 1087, 2, 2, 3434, 223, 3, 2, 2, 2, 3435, 3441, 7, 88, 2, 2, 3436,
	3437, 7, 118, 2, 2, 3437, 3441, 7, 20, 2, 2, 3438, 3439, 7, 72, 2, 2, 3439,
	3441, 7, 20, 2, 2, 3440, 3435, 3, 2, 2, 2, 3440, 3436, 3, 2, 2, 2, 3440,
	3438, 3, 2, 2, 2, 3441, 225, 3, 2, 2, 2, 3442, 3444, 9, 48, 2, 2, 3443,
	3442, 3, 2, 2, 2, 3443, 3444, 3, 2, 2, 2, 3444, 3445, 3, 2, 2, 2, 3445,
	3446, 7, 88, 2, 2, 3446, 3454, 5, 220, 111, 2, 3447, 3448, 7, 113, 2, 2,
	3448, 3455, 5, 634, 318, 2, 3449, 3450, 7, 178, 2, 2, 3450, 3451, 7, 1086,
	2, 2, 3451, 3452, 5, 568, 285, 2, 3452, 3453, 7, 1087, 2, 2, 3453, 3455,
	3, 2, 2, 2, 3454, 3447, 3, 2, 2, 2, 3454, 3449, 3, 2, 2, 2, 3454, 3455,
	3, 2, 2, 2, 3455, 3487, 3, 2, 2, 2, 3456, 3457, 7, 162, 2, 2, 3457, 3460,
	5, 220, 111, 2, 3458, 3459, 7, 113, 2, 2, 3459, 3461, 5, 634, 318, 2, 3460,
	3458, 3, 2, 2, 2, 3460, 3461, 3, 2, 2, 2, 3461, 3487, 3, 2, 2, 2, 3462,
	3464, 9, 49, 2, 2, 3463, 3465, 7, 121, 2, 2, 3464, 3463, 3, 2, 2, 2, 3464,
	3465, 3, 2, 2, 2, 3465, 3466, 3, 2, 2, 2, 3466, 3467, 7, 88, 2, 2, 3467,
	3475, 5, 220, 111, 2, 3468, 3469, 7, 113, 2, 2, 3469, 3476, 5, 634, 318,
	2, 3470, 3471, 7, 178, 2, 2, 3471, 3472, 7, 1086, 2, 2, 3472, 3473, 5,
	568, 285, 2, 3473, 3474, 7, 1087, 2, 2, 3474, 3476, 3, 2, 2, 2, 3475, 3468,
	3, 2, 2, 2, 3475, 3470, 3, 2, 2, 2, 3476, 3487, 3, 2, 2, 2, 3477, 3482,
	7, 108, 2, 2, 3478, 3480, 9, 49, 2, 2, 3479, 3481, 7, 121, 2, 2, 3480,
	3479, 3, 2, 2, 2, 3480, 3481, 3, 2, 2, 2, 3481, 3483, 3, 2, 2, 2, 3482,
	3478, 3, 2, 2, 2, 3482, 3483, 3, 2, 2, 2, 3483, 3484, 3, 2, 2, 2, 3484,
	3485, 7, 88, 2, 2, 3485, 3487, 5, 220, 111, 2, 3486, 3443, 3, 2, 2, 2,
	3486, 3456, 3, 2, 2, 2, 3486, 3462, 3, 2, 2, 2, 3486, 3477, 3, 2, 2, 2,
	3487, 227, 3, 2, 2, 2, 3488, 3489, 7, 1086, 2, 2, 3489, 3490, 5, 232, 117,
	2, 3490, 3491, 7, 1087, 2, 2, 3491, 3497, 3, 2, 2, 2, 3492, 3493, 7, 1086,
	2, 2, 3493, 3494, 5, 228, 115, 2, 3494, 3495, 7, 1087, 2, 2, 3495, 3497,
	3, 2, 2, 2, 3496, 3488, 3, 2, 2, 2, 3496, 3492, 3, 2, 2, 2, 3497, 229,
	3, 2, 2, 2, 3498, 3499, 7, 1086, 2, 2, 3499, 3500, 5, 234, 118, 2, 3500,
	3501, 7, 1087, 2, 2, 3501, 3507, 3, 2, 2, 2, 3502, 3503, 7, 1086, 2, 2,
	3503, 3504, 5, 230, 116, 2, 3504, 3505, 7, 1087, 2, 2, 3505, 3507, 3, 2,
	2, 2, 3506, 3498, 3, 2, 2, 2, 3506, 3502, 3, 2, 2, 2, 3507, 231, 3, 2,
	2, 2, 3508, 3512, 7, 146, 2, 2, 3509, 3511, 5, 240, 121, 2, 3510, 3509,
	3, 2, 2, 2, 3511, 3514, 3, 2, 2, 2, 3512, 3510, 3, 2, 2, 2, 3512, 3513,
	3, 2, 2, 2, 3513, 3515, 3, 2, 2, 2, 3514, 3512, 3, 2, 2, 2, 3515, 3517,
	5, 242, 122, 2, 3516, 3518, 5, 246, 124, 2, 3517, 3516, 3, 2, 2, 2, 3517,
	3518, 3, 2, 2, 2, 3518, 3520, 3, 2, 2, 2, 3519, 3521, 5, 252, 127, 2, 3520,
	3519, 3, 2, 2, 2, 3520, 3521, 3, 2, 2, 2, 3521, 3523, 3, 2, 2, 2, 3522,
	3524, 5, 254, 128, 2, 3523, 3522, 3, 2, 2, 2, 3523, 3524, 3, 2, 2, 2, 3524,
	3526, 3, 2, 2, 2, 3525, 3527, 5, 256, 129, 2, 3526, 3525, 3, 2, 2, 2, 3526,
	3527, 3, 2, 2, 2, 3527, 3529, 3, 2, 2, 2, 3528, 3530, 5, 258, 130, 2, 3529,
	3528, 3, 2, 2, 2, 3529, 3530, 3, 2, 2, 2, 3530, 3532, 3, 2, 2, 2, 3531,
	3533, 5, 212, 107, 2, 3532, 3531, 3, 2, 2, 2, 3532, 3533, 3, 2, 2, 2, 3533,
	3535, 3, 2, 2, 2, 3534, 3536, 5, 262, 132, 2, 3535, 3534, 3, 2, 2, 2, 3535,
	3536, 3, 2, 2, 2, 3536, 3567, 3, 2, 2, 2, 3537, 3541, 7, 146, 2, 2, 3538,
	3540, 5, 240, 121, 2, 3539, 3538, 3, 2, 2, 2, 3540, 3543, 3, 2, 2, 2, 3541,
	3539, 3, 2, 2, 2, 3541, 3542, 3, 2, 2, 2, 3542, 3544, 3, 2, 2, 2, 3543,
	3541, 3, 2, 2, 2, 3544, 3546, 5, 242, 122, 2, 3545, 3547, 5, 252, 127,
	2, 3546, 3545, 3, 2, 2, 2, 3546, 3547, 3, 2, 2, 2, 3547, 3549, 3, 2, 2,
	2, 3548, 3550, 5, 254, 128, 2, 3549, 3548, 3, 2, 2, 2, 3549, 3550, 3, 2,
	2, 2, 3550, 3552, 3, 2, 2, 2, 3551, 3553, 5, 256, 129, 2, 3552, 3551, 3,
	2, 2, 2, 3552, 3553, 3, 2, 2, 2, 3553, 3555, 3, 2, 2, 2, 3554, 3556, 5,
	258, 130, 2, 3555, 3554, 3, 2, 2, 2, 3555, 3556, 3, 2, 2, 2, 3556, 3558,
	3, 2, 2, 2, 3557, 3559, 5, 212, 107, 2, 3558, 3557, 3, 2, 2, 2, 3558, 3559,
	3, 2, 2, 2, 3559, 3561, 3, 2, 2, 2, 3560, 3562, 5, 262, 132, 2, 3561, 3560,
	3, 2, 2, 2, 3561, 3562, 3, 2, 2, 2, 3562, 3564, 3, 2, 2, 2, 3563, 3565,
	5, 246, 124, 2, 3564, 3563, 3, 2, 2, 2, 3564, 3565, 3, 2, 2, 2, 3565, 3567,
	3, 2, 2, 2, 3566, 3508, 3, 2, 2, 2, 3566, 3537, 3, 2, 2, 2, 3567, 233,
	3, 2, 2, 2, 3568, 3572, 7, 146, 2, 2, 3569, 3571, 5, 240, 121, 2, 3570,
	3569, 3, 2, 2, 2, 3571, 3574, 3, 2, 2, 2, 3572, 3570, 3, 2, 2, 2, 3572,
	3573, 3, 2, 2, 2, 3573, 3575, 3, 2, 2, 2, 3574, 3572, 3, 2, 2, 2, 3575,
	3577, 5, 242, 122, 2, 3576, 3578, 5, 252, 127, 2, 3577, 3576, 3, 2, 2,
	2, 3577, 3578, 3, 2, 2, 2, 3578, 3580, 3, 2, 2, 2, 3579, 3581, 5, 254,
	128, 2, 3580, 3579, 3, 2, 2, 2, 3580, 3581, 3, 2, 2, 2, 3581, 3583, 3,
	2, 2, 2, 3582, 3584, 5, 256, 129, 2, 3583, 3582, 3, 2, 2, 2, 3583, 3584,
	3, 2, 2, 2, 3584, 3586, 3, 2, 2, 2, 3585, 3587, 5, 258, 130, 2, 3586, 3585,
	3, 2, 2, 2, 3586, 3587, 3, 2, 2, 2, 3587, 3589, 3, 2, 2, 2, 3588, 3590,
	5, 212, 107, 2, 3589, 3588, 3, 2, 2, 2, 3589, 3590, 3, 2, 2, 2, 3590, 3592,
	3, 2, 2, 2, 3591, 3593, 5, 262, 132, 2, 3592, 3591, 3, 2, 2, 2, 3592, 3593,
	3, 2, 2, 2, 3593, 235, 3, 2, 2, 2, 3594, 3596, 7, 171, 2, 2, 3595, 3597,
	9, 42, 2, 2, 3596, 3595, 3, 2, 2, 2, 3596, 3597, 3, 2, 2, 2, 3597, 3598,
	3, 2, 2, 2, 3598, 3599, 5, 230, 116, 2, 3599, 237, 3, 2, 2, 2, 3600, 3602,
	7, 171, 2, 2, 3601, 3603, 9, 42, 2, 2, 3602, 3601, 3, 2, 2, 2, 3602, 3603,
	3, 2, 2, 2, 3603, 3606, 3, 2, 2, 2, 3604, 3607, 5, 234, 118, 2, 3605, 3607,
	5, 230, 116, 2, 3606, 3604, 3, 2, 2, 2, 3606, 3605, 3, 2, 2, 2, 3607, 239,
	3, 2, 2, 2, 3608, 3617, 9, 50, 2, 2, 3609, 3617, 7, 74, 2, 2, 3610, 3617,
	7, 162, 2, 2, 3611, 3617, 7, 158, 2, 2, 3612, 3617, 7, 156, 2, 2, 3613,
	3617, 7, 591, 2, 2, 3614, 3617, 9, 51, 2, 2, 3615, 3617, 7, 157, 2, 2,
	3616, 3608, 3, 2, 2, 2, 3616, 3609, 3, 2, 2, 2, 3616, 3610, 3, 2, 2, 2,
	3616, 3611, 3, 2, 2, 2, 3616, 3612, 3, 2, 2, 2, 3616, 3613, 3, 2, 2, 2,
	3616, 3614, 3, 2, 2, 2, 3616, 3615, 3, 2, 2, 2, 3617, 241, 3, 2, 2, 2,
	3618, 3621, 7, 1070, 2, 2, 3619, 3621, 5, 244, 123, 2, 3620, 3618, 3, 2,
	2, 2, 3620, 3619, 3, 2, 2, 2, 3621, 3626, 3, 2, 2, 2, 3622, 3623, 7, 1088,
	2, 2, 3623, 3625, 5, 244, 123, 2, 3624, 3622, 3, 2, 2, 2, 3625, 3628, 3,
	2, 2, 2, 3626, 3624, 3, 2, 2, 2, 3626, 3627, 3, 2, 2, 2, 3627, 243, 3,
	2, 2, 2, 3628, 3626, 3, 2, 2, 2, 3629, 3630, 5, 510, 256, 2, 3630, 3631,
	7, 1085, 2, 2, 3631, 3632, 7, 1070, 2, 2, 3632, 3659, 3, 2, 2, 2, 3633,
	3638, 5, 514, 258, 2, 3634, 3636, 7, 14, 2, 2, 3635, 3634, 3, 2, 2, 2,
	3635, 3636, 3, 2, 2, 2, 3636, 3637, 3, 2, 2, 2, 3637, 3639, 5, 536, 269,
	2, 3638, 3635, 3, 2, 2, 2, 3638, 3639, 3, 2, 2, 2, 3639, 3659, 3, 2, 2,
	2, 3640, 3645, 5, 594, 298, 2, 3641, 3643, 7, 14, 2, 2, 3642, 3641, 3,
	2, 2, 2, 3642, 3643, 3, 2, 2, 2, 3643, 3644, 3, 2, 2, 2, 3644, 3646, 5,
	536, 269, 2, 3645, 3642, 3, 2, 2, 2, 3645, 3646, 3, 2, 2, 2, 3646, 3659,
	3, 2, 2, 2, 3647, 3648, 7, 1113, 2, 2, 3648, 3650, 7, 1061, 2, 2, 3649,
	3647, 3, 2, 2, 2, 3649, 3650, 3, 2, 2, 2, 3650, 3651, 3, 2, 2, 2, 3651,
	3656, 5, 634, 318, 2, 3652, 3654, 7, 14, 2, 2, 3653, 3652, 3, 2, 2, 2,
	3653, 3654, 3, 2, 2, 2, 3654, 3655, 3, 2, 2, 2, 3655, 3657, 5, 536, 269,
	2, 3656, 3653, 3, 2, 2, 2, 3656, 3657, 3, 2, 2, 2, 3657, 3659, 3, 2, 2,
	2, 3658, 3629, 3, 2, 2, 2, 3658, 3633, 3, 2, 2, 2, 3658, 3640, 3, 2, 2,
	2, 3658, 3649, 3, 2, 2, 2, 3659, 245, 3, 2, 2, 2, 3660, 3661, 7, 85, 2,
	2, 3661, 3666, 5, 192, 97, 2, 3662, 3663, 7, 1088, 2, 2, 3663, 3665, 5,
	192, 97, 2, 3664, 3662, 3, 2, 2, 2, 3665, 3668, 3, 2, 2, 2, 3666, 3664,
	3, 2, 2, 2, 3666, 3667, 3, 2, 2, 2, 3667, 3697, 3, 2, 2, 2, 3668, 3666,
	3, 2, 2, 2, 3669, 3670, 7, 85, 2, 2, 3670, 3671, 7, 386, 2, 2, 3671, 3697,
	7, 1101, 2, 2, 3672, 3673, 7, 85, 2, 2, 3673, 3674, 7, 122, 2, 2, 3674,
	3678, 7, 1101, 2, 2, 3675, 3676, 7, 26, 2, 2, 3676, 3677, 7, 147, 2, 2,
	3677, 3679, 5, 522, 262, 2, 3678, 3675, 3, 2, 2, 2, 3678, 3679, 3, 2, 2,
	2, 3679, 3686, 3, 2, 2, 2, 3680, 3682, 9, 39, 2, 2, 3681, 3683, 5, 248,
	125, 2, 3682, 3681, 3, 2, 2, 2, 3683, 3684, 3, 2, 2, 2, 3684, 3682, 3,
	2, 2, 2, 3684, 3685, 3, 2, 2, 2, 3685, 3687, 3, 2, 2, 2, 3686, 3680, 3,
	2, 2, 2, 3686, 3687, 3, 2, 2, 2, 3687, 3694, 3, 2, 2, 2, 3688, 3690, 7,
	98, 2, 2, 3689, 3691, 5, 250, 126, 2, 3690, 3689, 3, 2, 2, 2, 3691, 3692,
	3, 2, 2, 2, 3692, 3690, 3, 2, 2, 2, 3692, 3693, 3, 2, 2, 2, 3693, 3695,
	3, 2, 2, 2, 3694, 3688, 3, 2, 2, 2, 3694, 3695, 3, 2, 2, 2, 3695, 3697,
	3, 2, 2, 2, 3696, 3660, 3, 2, 2, 2, 3696, 3669, 3, 2, 2, 2, 3696, 3672,
	3, 2, 2, 2, 3697, 247, 3, 2, 2, 2, 3698, 3699, 7, 164, 2, 2, 3699, 3700,
	7, 20, 2, 2, 3700, 3711, 7, 1101, 2, 2, 3701, 3703, 7, 116, 2, 2, 3702,
	3701, 3, 2, 2, 2, 3702, 3703, 3, 2, 2, 2, 3703, 3704, 3, 2, 2, 2, 3704,
	3705, 7, 56, 2, 2, 3705, 3706, 7, 20, 2, 2, 3706, 3711, 7, 1101, 2, 2,
	3707, 3708, 7, 57, 2, 2, 3708, 3709, 7, 20, 2, 2, 3709, 3711, 7, 1101,
	2, 2, 3710, 3698, 3, 2, 2, 2, 3710, 3702, 3, 2, 2, 2, 3710, 3707, 3, 2,
	2, 2, 3711, 249, 3, 2, 2, 2, 3712, 3713, 7, 161, 2, 2, 3713, 3714, 7, 20,
	2, 2, 3714, 3719, 7, 1101, 2, 2, 3715, 3716, 7, 164, 2, 2, 3716, 3717,
	7, 20, 2, 2, 3717, 3719, 7, 1101, 2, 2, 3718, 3712, 3, 2, 2, 2, 3718, 3715,
	3, 2, 2, 2, 3719, 251, 3, 2, 2, 2, 3720, 3721, 7, 67, 2, 2, 3721, 3723,
	5, 216, 109, 2, 3722, 3720, 3, 2, 2, 2, 3722, 3723, 3, 2, 2, 2, 3723, 3726,
	3, 2, 2, 2, 3724, 3725, 7, 181, 2, 2, 3725, 3727, 5, 634, 318, 2, 3726,
	3724, 3, 2, 2, 2, 3726, 3727, 3, 2, 2, 2, 3727, 253, 3, 2, 2, 2, 3728,
	3729, 7, 72, 2, 2, 3729, 3730, 7, 20, 2, 2, 3730, 3735, 5, 260, 131, 2,
	3731, 3732, 7, 1088, 2, 2, 3732, 3734, 5, 260, 131, 2, 3733, 3731, 3, 2,
	2, 2, 3734, 3737, 3, 2, 2, 2, 3735, 3733, 3, 2, 2, 2, 3735, 3736, 3, 2,
	2, 2, 3736, 3740, 3, 2, 2, 2, 3737, 3735, 3, 2, 2, 2, 3738, 3739, 7, 183,
	2, 2, 3739, 3741, 7, 566, 2, 2, 3740, 3738, 3, 2, 2, 2, 3740, 3741, 3,
	2, 2, 2, 3741, 255, 3, 2, 2, 2, 3742, 3743, 7, 73, 2, 2, 3743, 3744, 5,
	634, 318, 2, 3744, 257, 3, 2, 2, 2, 3745, 3746, 7, 642, 2, 2, 3746, 3747,
	5, 612, 307, 2, 3747, 3748, 7, 14, 2, 2, 3748, 3749, 7, 1086, 2, 2, 3749,
	3750, 5, 610, 306, 2, 3750, 3760, 7, 1087, 2, 2, 3751, 3752, 7, 1088, 2,
	2, 3752, 3753, 5, 612, 307, 2, 3753, 3754, 7, 14, 2, 2, 3754, 3755, 7,
	1086, 2, 2, 3755, 3756, 5, 610, 306, 2, 3756, 3757, 7, 1087, 2, 2, 3757,
	3759, 3, 2, 2, 2, 3758, 3751, 3, 2, 2, 2, 3759, 3762, 3, 2, 2, 2, 3760,
	3758, 3, 2, 2, 2, 3760, 3761, 3, 2, 2, 2, 3761, 259, 3, 2, 2, 2, 3762,
	3760, 3, 2, 2, 2, 3763, 3765, 5, 634, 318, 2, 3764, 3766, 9, 46, 2, 2,
	3765, 3764, 3, 2, 2, 2, 3765, 3766, 3, 2, 2, 2, 3766, 261, 3, 2, 2, 2,
	3767, 3778, 7, 96, 2, 2, 3768, 3769, 5, 264, 133, 2, 3769, 3770, 7, 1088,
	2, 2, 3770, 3772, 3, 2, 2, 2, 3771, 3768, 3, 2, 2, 2, 3771, 3772, 3, 2,
	2, 2, 3772, 3773, 3, 2, 2, 2, 3773, 3779, 5, 264, 133, 2, 3774, 3775, 5,
	264, 133, 2, 3775, 3776, 7, 506, 2, 2, 3776, 3777, 5, 264, 133, 2, 3777,
	3779, 3, 2, 2, 2, 3778, 3771, 3, 2, 2, 2, 3778, 3774, 3, 2, 2, 2, 3779,
	263, 3, 2, 2, 2, 3780, 3784, 5, 542, 272, 2, 3781, 3784, 5, 520, 261, 2,
	3782, 3784, 5, 538, 270, 2, 3783, 3780, 3, 2, 2, 2, 3783, 3781, 3, 2, 2,
	2, 3783, 3782, 3, 2, 2, 2, 3784, 265, 3, 2, 2, 2, 3785, 3786, 7, 595, 2,
	2, 3786, 3795, 7, 619, 2, 2, 3787, 3792, 5, 288, 145, 2, 3788, 3789, 7,
	1088, 2, 2, 3789, 3791, 5, 288, 145, 2, 3790, 3788, 3, 2, 2, 2, 3791, 3794,
	3, 2, 2, 2, 3792, 3790, 3, 2, 2, 2, 3792, 3793, 3, 2, 2, 2, 3793, 3796,
	3, 2, 2, 2, 3794, 3792, 3, 2, 2, 2, 3795, 3787, 3, 2, 2, 2, 3795, 3796,
	3, 2, 2, 2, 3796, 267, 3, 2, 2, 2, 3797, 3799, 7, 332, 2, 2, 3798, 3800,
	7, 644, 2, 2, 3799, 3798, 3, 2, 2, 2, 3799, 3800, 3, 2, 2, 2, 3800, 269,
	3, 2, 2, 2, 3801, 3803, 7, 356, 2, 2, 3802, 3804, 7, 644, 2, 2, 3803, 3802,
	3, 2, 2, 2, 3803, 3804, 3, 2, 2, 2, 3804, 3810, 3, 2, 2, 2, 3805, 3807,
	7, 12, 2, 2, 3806, 3808, 7, 501, 2, 2, 3807, 3806, 3, 2, 2, 2, 3807, 3808,
	3, 2, 2, 2, 3808, 3809, 3, 2, 2, 2, 3809, 3811, 7, 341, 2, 2, 3810, 3805,
	3, 2, 2, 2, 3810, 3811, 3, 2, 2, 2, 3811, 3816, 3, 2, 2, 2, 3812, 3814,
	7, 501, 2, 2, 3813, 3812, 3, 2, 2, 2, 3813, 3814, 3, 2, 2, 2, 3814, 3815,
	3, 2, 2, 2, 3815, 3817, 7, 132, 2, 2, 3816, 3813, 3, 2, 2, 2, 3816, 3817,
	3, 2, 2, 2, 3817, 271, 3, 2, 2, 2, 3818, 3820, 7, 565, 2, 2, 3819, 3821,
	7, 644, 2, 2, 3820, 3819, 3, 2, 2, 2, 3820, 3821, 3, 2, 2, 2, 3821, 3827,
	3, 2, 2, 2, 3822, 3824, 7, 12, 2, 2, 3823, 3825, 7, 501, 2, 2, 3824, 3823,
	3, 2, 2, 2, 3824, 3825, 3, 2, 2, 2, 3825, 3826, 3, 2, 2, 2, 3826, 3828,
	7, 341, 2, 2, 3827, 3822, 3, 2, 2, 2, 3827, 3828, 3, 2, 2, 2, 3828, 3833,
	3, 2, 2, 2, 3829, 3831, 7, 501, 2, 2, 3830, 3829, 3, 2, 2, 2, 3830, 3831,
	3, 2, 2, 2, 3831, 3832, 3, 2, 2, 2, 3832, 3834, 7, 132, 2, 2, 3833, 3830,
	3, 2, 2, 2, 3833, 3834, 3, 2, 2, 2, 3834, 273, 3, 2, 2, 2, 3835, 3836,
	7, 571, 2, 2, 3836, 3837, 5, 536, 269, 2, 3837, 275, 3, 2, 2, 2, 3838,
	3840, 7, 565, 2, 2, 3839, 3841, 7, 644, 2, 2, 3840, 3839, 3, 2, 2, 2, 3840,
	3841, 3, 2, 2, 2, 3841, 3842, 3, 2, 2, 2, 3842, 3844, 7, 166, 2, 2, 3843,
	3845, 7, 571, 2, 2, 3844, 3843, 3, 2, 2, 2, 3844, 3845, 3, 2, 2, 2, 3845,
	3846, 3, 2, 2, 2, 3846, 3847, 5, 536, 269, 2, 3847, 277, 3, 2, 2, 2, 3848,
	3849, 7, 132, 2, 2, 3849, 3850, 7, 571, 2, 2, 3850, 3851, 5, 536, 269,
	2, 3851, 279, 3, 2, 2, 2, 3852, 3853, 7, 100, 2, 2, 3853, 3854, 7, 662,
	2, 2, 3854, 3859, 5, 290, 146, 2, 3855, 3856, 7, 1088, 2, 2, 3856, 3858,
	5, 290, 146, 2, 3857, 3855, 3, 2, 2, 2, 3858, 3861, 3, 2, 2, 2, 3859, 3857,
	3, 2, 2, 2, 3859, 3860, 3, 2, 2, 2, 3860, 281, 3, 2, 2, 2, 3861, 3859,
	3, 2, 2, 2, 3862, 3863, 7, 173, 2, 2, 3863, 3864, 7, 662, 2, 2, 3864, 283,
	3, 2, 2, 2, 3865, 3866, 7, 147, 2, 2, 3866, 3867, 7, 328, 2, 2, 3867, 3868,
	7, 1077, 2, 2, 3868, 3869, 9, 24, 2, 2, 3869, 285, 3, 2, 2, 2, 3870, 3872,
	7, 147, 2, 2, 3871, 3873, 9, 52, 2, 2, 3872, 3871, 3, 2, 2, 2, 3872, 3873,
	3, 2, 2, 2, 3873, 3874, 3, 2, 2, 2, 3874, 3875, 7, 619, 2, 2, 3875, 3880,
	5, 294, 148, 2, 3876, 3877, 7, 1088, 2, 2, 3877, 3879, 5, 294, 148, 2,
	3878, 3876, 3, 2, 2, 2, 3879, 3882, 3, 2, 2, 2, 3880, 3878, 3, 2, 2, 2,
	3880, 3881, 3, 2, 2, 2, 3881, 287, 3, 2, 2, 2, 3882, 3880, 3, 2, 2, 2,
	3883, 3884, 7, 183, 2, 2, 3884, 3885, 7, 364, 2, 2, 3885, 3891, 7, 582,
	2, 2, 3886, 3887, 7, 128, 2, 2, 3887, 3891, 7, 184, 2, 2, 3888, 3889, 7,
	128, 2, 2, 3889, 3891, 7, 512, 2, 2, 3890, 3883, 3, 2, 2, 2, 3890, 3886,
	3, 2, 2, 2, 3890, 3888, 3, 2, 2, 2, 3891, 289, 3, 2, 2, 2, 3892, 3897,
	5, 512, 257, 2, 3893, 3895, 7, 14, 2, 2, 3894, 3893, 3, 2, 2, 2, 3894,
	3895, 3, 2, 2, 2, 3895, 3896, 3, 2, 2, 2, 3896, 3898, 5, 536, 269, 2, 3897,
	3894, 3, 2, 2, 2, 3897, 3898, 3, 2, 2, 2, 3898, 3899, 3, 2, 2, 2, 3899,
	3900, 5, 292, 147, 2, 3900, 291, 3, 2, 2, 2, 3901, 3903, 7, 128, 2, 2,
	3902, 3904, 7, 454, 2, 2, 3903, 3902, 3, 2, 2, 2, 3903, 3904, 3, 2, 2,
	2, 3904, 3910, 3, 2, 2, 2, 3905, 3907, 7, 102, 2, 2, 3906, 3905, 3, 2,
	2, 2, 3906, 3907, 3, 2, 2, 2, 3907, 3908, 3, 2, 2, 2, 3908, 3910, 7, 184,
	2, 2, 3909, 3901, 3, 2, 2, 2, 3909, 3906, 3, 2, 2, 2, 3910, 293, 3, 2,
	2, 2, 3911, 3912, 7, 444, 2, 2, 3912, 3913, 7, 452, 2, 2, 3913, 3919, 5,
	296, 149, 2, 3914, 3915, 7, 128, 2, 2, 3915, 3919, 7, 184, 2, 2, 3916,
	3917, 7, 128, 2, 2, 3917, 3919, 7, 512, 2, 2, 3918, 3911, 3, 2, 2, 2, 3918,
	3914, 3, 2, 2, 2, 3918, 3916, 3, 2, 2, 2, 3919, 295, 3, 2, 2, 2, 3920,
	3921, 7, 756, 2, 2, 3921, 3928, 7, 128, 2, 2, 3922, 3923, 7, 128, 2, 2,
	3923, 3928, 7, 757, 2, 2, 3924, 3925, 7, 128, 2, 2, 3925, 3928, 7, 758,
	2, 2, 3926, 3928, 7, 759, 2, 2, 3927, 3920, 3, 2, 2, 2, 3927, 3922, 3,
	2, 2, 2, 3927, 3924, 3, 2, 2, 2, 3927, 3926, 3, 2, 2, 2, 3928, 297, 3,
	2, 2, 2, 3929, 3930, 7, 25, 2, 2, 3930, 3931, 7, 457, 2, 2, 3931, 3932,
	7, 166, 2, 2, 3932, 3937, 5, 316, 159, 2, 3933, 3934, 7, 1088, 2, 2, 3934,
	3936, 5, 316, 159, 2, 3935, 3933, 3, 2, 2, 2, 3936, 3939, 3, 2, 2, 2, 3937,
	3935, 3, 2, 2, 2, 3937, 3938, 3, 2, 2, 2, 3938, 3941, 3, 2, 2, 2, 3939,
	3937, 3, 2, 2, 2, 3940, 3942, 5, 324, 163, 2, 3941, 3940, 3, 2, 2, 2, 3941,
	3942, 3, 2, 2, 2, 3942, 299, 3, 2, 2, 2, 3943, 3944, 7, 25, 2, 2, 3944,
	3945, 7, 558, 2, 2, 3945, 3946, 7, 412, 2, 2, 3946, 3951, 5, 326, 164,
	2, 3947, 3948, 7, 1088, 2, 2, 3948, 3950, 5, 326, 164, 2, 3949, 3947, 3,
	2, 2, 2, 3950, 3953, 3, 2, 2, 2, 3951, 3949, 3, 2, 2, 2, 3951, 3952, 3,
	2, 2, 2, 3952, 301, 3, 2, 2, 2, 3953, 3951, 3, 2, 2, 2, 3954, 3955, 7,
	126, 2, 2, 3955, 3956, 9, 53, 2, 2, 3956, 3961, 7, 456, 2, 2, 3957, 3958,
	7, 166, 2, 2, 3958, 3962, 7, 1101, 2, 2, 3959, 3960, 7, 16, 2, 2, 3960,
	3962, 7, 1101, 2, 2, 3961, 3957, 3, 2, 2, 2, 3961, 3959, 3, 2, 2, 2, 3962,
	303, 3, 2, 2, 2, 3963, 3964, 7, 559, 2, 2, 3964, 3965, 7, 457, 2, 2, 3965,
	305, 3, 2, 2, 2, 3966, 3967, 7, 559, 2, 2, 3967, 3969, 7, 580, 2, 2, 3968,
	3970, 7, 8, 2, 2, 3969, 3968, 3, 2, 2, 2, 3969, 3970, 3, 2, 2, 2, 3970,
	3972, 3, 2, 2, 2, 3971, 3973, 5, 324, 163, 2, 3972, 3971, 3, 2, 2, 2, 3972,
	3973, 3, 2, 2, 2, 3973, 307, 3, 2, 2, 2, 3974, 3975, 7, 595, 2, 2, 3975,
	3984, 7, 580, 2, 2, 3976, 3981, 5, 330, 166, 2, 3977, 3978, 7, 1088, 2,
	2, 3978, 3980, 5, 330, 166, 2, 3979, 3977, 3, 2, 2, 2, 3980, 3983, 3, 2,
	2, 2, 3981, 3979, 3, 2, 2, 2, 3981, 3982, 3, 2, 2, 2, 3982, 3985, 3, 2,
	2, 2, 3983, 3981, 3, 2, 2, 2, 3984, 3976, 3, 2, 2, 2, 3984, 3985, 3, 2,
	2, 2, 3985, 3988, 3, 2, 2, 2, 3986, 3987, 7, 629, 2, 2, 3987, 3989, 5,
	332, 167, 2, 3988, 3986, 3, 2, 2, 2, 3988, 3989, 3, 2, 2, 2, 3989, 3993,
	3, 2, 2, 2, 3990, 3992, 5, 334, 168, 2, 3991, 3990, 3, 2, 2, 2, 3992, 3995,
	3, 2, 2, 2, 3993, 3991, 3, 2, 2, 2, 3993, 3994, 3, 2, 2, 2, 3994, 3997,
	3, 2, 2, 2, 3995, 3993, 3, 2, 2, 2, 3996, 3998, 5, 324, 163, 2, 3997, 3996,
	3, 2, 2, 2, 3997, 3998, 3, 2, 2, 2, 3998, 309, 3, 2, 2, 2, 3999, 4000,
	7, 601, 2, 2, 4000, 4009, 7, 580, 2, 2, 4001, 4006, 5, 330, 166, 2, 4002,
	4003, 7, 1088, 2, 2, 4003, 4005, 5, 330, 166, 2, 4004, 4002, 3, 2, 2, 2,
	4005, 4008, 3, 2, 2, 2, 4006, 4004, 3, 2, 2, 2, 4006, 4007, 3, 2, 2, 2,
	4007, 4010, 3, 2, 2, 2, 4008, 4006, 3, 2, 2, 2, 4009, 4001, 3, 2, 2, 2,
	4009, 4010, 3, 2, 2, 2, 4010, 311, 3, 2, 2, 2, 4011, 4012, 7, 595, 2, 2,
	4012, 4013, 7, 424, 2, 2, 4013, 313, 3, 2, 2, 2, 4014, 4015, 7, 601, 2,
	2, 4015, 4016, 7, 424, 2, 2, 4016, 315, 3, 2, 2, 2, 4017, 4018, 5, 318,
	160, 2, 4018, 4019, 7, 1077, 2, 2, 4019, 4020, 7, 1101, 2, 2, 4020, 4047,
	3, 2, 2, 2, 4021, 4022, 5, 320, 161, 2, 4022, 4023, 7, 1077, 2, 2, 4023,
	4024, 5, 542, 272, 2, 4024, 4047, 3, 2, 2, 2, 4025, 4026, 5, 322, 162,
	2, 4026, 4027, 7, 1077, 2, 2, 4027, 4028, 9, 24, 2, 2, 4028, 4047, 3, 2,
	2, 2, 4029, 4030, 7, 461, 2, 2, 4030, 4031, 7, 1077, 2, 2, 4031, 4047,
	7, 1104, 2, 2, 4032, 4033, 7, 431, 2, 2, 4033, 4034, 7, 1077, 2, 2, 4034,
	4043, 7, 1086, 2, 2, 4035, 4040, 5, 536, 269, 2, 4036, 4037, 7, 1088, 2,
	2, 4037, 4039, 5, 536, 269, 2, 4038, 4036, 3, 2, 2, 2, 4039, 4042, 3, 2,
	2, 2, 4040, 4038, 3, 2, 2, 2, 4040, 4041, 3, 2, 2, 2, 4041, 4044, 3, 2,
	2, 2, 4042, 4040, 3, 2, 2, 2, 4043, 4035, 3, 2, 2, 2, 4043, 4044, 3, 2,
	2, 2, 4044, 4045, 3, 2, 2, 2, 4045, 4047, 7, 1087, 2, 2, 4046, 4017, 3,
	2, 2, 2, 4046, 4021, 3, 2, 2, 2, 4046, 4025, 3, 2, 2, 2, 4046, 4029, 3,
	2, 2, 2, 4046, 4032, 3, 2, 2, 2, 4047, 317, 3, 2, 2, 2, 4048, 4049, 9,
	54, 2, 2, 4049, 319, 3, 2, 2, 2, 4050, 4051, 9, 55, 2, 2, 4051, 321, 3,
	2, 2, 2, 4052, 4053, 9, 56, 2, 2, 4053, 323, 3, 2, 2, 2, 4054, 4055, 7,
	64, 2, 2, 4055, 4056, 7, 343, 2, 2, 4056, 4057, 7, 1101, 2, 2, 4057, 325,
	3, 2, 2, 2, 4058, 4059, 7, 551, 2, 2, 4059, 4060, 7, 1077, 2, 2, 4060,
	4061, 7, 1086, 2, 2, 4061, 4062, 5, 568, 285, 2, 4062, 4063, 7, 1087, 2,
	2, 4063, 4108, 3, 2, 2, 2, 4064, 4065, 7, 553, 2, 2, 4065, 4066, 7, 1077,
	2, 2, 4066, 4067, 7, 1086, 2, 2, 4067, 4068, 5, 568, 285, 2, 4068, 4069,
	7, 1087, 2, 2, 4069, 4108, 3, 2, 2, 2, 4070, 4071, 7, 552, 2, 2, 4071,
	4072, 7, 1077, 2, 2, 4072, 4073, 7, 1086, 2, 2, 4073, 4074, 5, 570, 286,
	2, 4074, 4075, 7, 1087, 2, 2, 4075, 4108, 3, 2, 2, 2, 4076, 4077, 7, 554,
	2, 2, 4077, 4078, 7, 1077, 2, 2, 4078, 4079, 7, 1086, 2, 2, 4079, 4080,
	5, 570, 286, 2, 4080, 4081, 7, 1087, 2, 2, 4081, 4108, 3, 2, 2, 2, 4082,
	4083, 7, 556, 2, 2, 4083, 4084, 7, 1077, 2, 2, 4084, 4085, 7, 1086, 2,
	2, 4085, 4086, 5, 580, 291, 2, 4086, 4087, 7, 1087, 2, 2, 4087, 4108, 3,
	2, 2, 2, 4088, 4089, 7, 557, 2, 2, 4089, 4090, 7, 1077, 2, 2, 4090, 4091,
	7, 1086, 2, 2, 4091, 4092, 5, 580, 291, 2, 4092, 4093, 7, 1087, 2, 2, 4093,
	4108, 3, 2, 2, 2, 4094, 4095, 7, 555, 2, 2, 4095, 4096, 7, 1077, 2, 2,
	4096, 4097, 7, 1086, 2, 2, 4097, 4102, 5, 328, 165, 2, 4098, 4099, 7, 1088,
	2, 2, 4099, 4101, 5, 328, 165, 2, 4100, 4098, 3, 2, 2, 2, 4101, 4104, 3,
	2, 2, 2, 4102, 4100, 3, 2, 2, 2, 4102, 4103, 3, 2, 2, 2, 4103, 4105, 3,
	2, 2, 2, 4104, 4102, 3, 2, 2, 2, 4105, 4106, 7, 1087, 2, 2, 4106, 4108,
	3, 2, 2, 2, 4107, 4058, 3, 2, 2, 2, 4107, 4064, 3, 2, 2, 2, 4107, 4070,
	3, 2, 2, 2, 4107, 4076, 3, 2, 2, 2, 4107, 4082, 3, 2, 2, 2, 4107, 4088,
	3, 2, 2, 2, 4107, 4094, 3, 2, 2, 2, 4108, 327, 3, 2, 2, 2, 4109, 4110,
	7, 1086, 2, 2, 4110, 4111, 5, 512, 257, 2, 4111, 4112, 7, 1088, 2, 2, 4112,
	4113, 5, 512, 257, 2, 4113, 4114, 7, 1087, 2, 2, 4114, 329, 3, 2, 2, 2,
	4115, 4116, 9, 57, 2, 2, 4116, 331, 3, 2, 2, 2, 4117, 4118, 9, 58, 2, 2,
	4118, 4119, 7, 1077, 2, 2, 4119, 4136, 5, 336, 169, 2, 4120, 4121, 7, 463,
	2, 2, 4121, 4122, 7, 1077, 2, 2, 4122, 4123, 7, 1101, 2, 2, 4123, 4124,
	7, 1088, 2, 2, 4124, 4125, 7, 464, 2, 2, 4125, 4126, 7, 1077, 2, 2, 4126,
	4136, 5, 542, 272, 2, 4127, 4128, 7, 545, 2, 2, 4128, 4129, 7, 1077, 2,
	2, 4129, 4130, 7, 1101, 2, 2, 4130, 4131, 7, 1088, 2, 2, 4131, 4132, 7,
	546, 2, 2, 4132, 4133, 7, 1077, 2, 2, 4133, 4136, 5, 542, 272, 2, 4134,
	4136, 7, 589, 2, 2, 4135, 4117, 3, 2, 2, 2, 4135, 4120, 3, 2, 2, 2, 4135,
	4127, 3, 2, 2, 2, 4135, 4134, 3, 2, 2, 2, 4136, 333, 3, 2, 2, 2, 4137,
	4138, 7, 631, 2, 2, 4138, 4139, 7, 1077, 2, 2, 4139, 4150, 7, 1101, 2,
	2, 4140, 4141, 7, 523, 2, 2, 4141, 4142, 7, 1077, 2, 2, 4142, 4150, 7,
	1101, 2, 2, 4143, 4144, 7, 377, 2, 2, 4144, 4145, 7, 1077, 2, 2, 4145,
	4150, 7, 1101, 2, 2, 4146, 4147, 7, 526, 2, 2, 4147, 4148, 7, 1077, 2,
	2, 4148, 4150, 7, 1101, 2, 2, 4149, 4137, 3, 2, 2, 2, 4149, 4140, 3, 2,
	2, 2, 4149, 4143, 3, 2, 2, 2, 4149, 4146, 3, 2, 2, 2, 4150, 335, 3, 2,
	2, 2, 4151, 4156, 5, 528, 265, 2, 4152, 4153, 7, 1088, 2, 2, 4153, 4155,
	5, 528, 265, 2, 4154, 4152, 3, 2, 2, 2, 4155, 4158, 3, 2, 2, 2, 4156, 4154,
	3, 2, 2, 2, 4156, 4157, 3, 2, 2, 2, 4157, 4161, 3, 2, 2, 2, 4158, 4156,
	3, 2, 2, 2, 4159, 4161, 7, 1101, 2, 2, 4160, 4151, 3, 2, 2, 2, 4160, 4159,
	3, 2, 2, 2, 4161, 337, 3, 2, 2, 2, 4162, 4163, 7, 647, 2, 2, 4163, 4164,
	9, 59, 2, 2, 4164, 4166, 5, 530, 266, 2, 4165, 4167, 9, 60, 2, 2, 4166,
	4165, 3, 2, 2, 2, 4166, 4167, 3, 2, 2, 2, 4167, 339, 3, 2, 2, 2, 4168,
	4169, 7, 647, 2, 2, 4169, 4170, 7, 391, 2, 2, 4170, 4176, 5, 530, 266,
	2, 4171, 4174, 7, 609, 2, 2, 4172, 4173, 7, 64, 2, 2, 4173, 4175, 7, 489,
	2, 2, 4174, 4172, 3, 2, 2, 2, 4174, 4175, 3, 2, 2, 2, 4175, 4177, 3, 2,
	2, 2, 4176, 4171, 3, 2, 2, 2, 4176, 4177, 3, 2, 2, 2, 4177, 341, 3, 2,
	2, 2, 4178, 4179, 7, 647, 2, 2, 4179, 4180, 7, 531, 2, 2, 4180, 4181, 5,
	530, 266, 2, 4181, 343, 3, 2, 2, 2, 4182, 4183, 7, 647, 2, 2, 4183, 4184,
	7, 356, 2, 2, 4184, 4187, 5, 530, 266, 2, 4185, 4186, 7, 510, 2, 2, 4186,
	4188, 7, 524, 2, 2, 4187, 4185, 3, 2, 2, 2, 4187, 4188, 3, 2, 2, 2, 4188,
	345, 3, 2, 2, 2, 4189, 4190, 7, 647, 2, 2, 4190, 4191, 7, 565, 2, 2, 4191,
	4192, 5, 530, 266, 2, 4192, 347, 3, 2, 2, 2, 4193, 4194, 7, 647, 2, 2,
	4194, 4197, 7, 541, 2, 2, 4195, 4196, 7, 33, 2, 2, 4196, 4198, 5, 530,
	266, 2, 4197, 4195, 3, 2, 2, 2, 4197, 4198, 3, 2, 2, 2, 4198, 349, 3, 2,
	2, 2, 4199, 4200, 7, 531, 2, 2, 4200, 4201, 5, 536, 269, 2, 4201, 4204,
	7, 67, 2, 2, 4202, 4205, 7, 1101, 2, 2, 4203, 4205, 7, 1113, 2, 2, 4204,
	4202, 3, 2, 2, 2, 4204, 4203, 3, 2, 2, 2, 4205, 351, 3, 2, 2, 2, 4206,
	4207, 7, 664, 2, 2, 4207, 4210, 5, 536, 269, 2, 4208, 4209, 7, 178, 2,
	2, 4209, 4211, 5, 582, 292, 2, 4210, 4208, 3, 2, 2, 2, 4210, 4211, 3, 2,
	2, 2, 4211, 353, 3, 2, 2, 2, 4212, 4213, 9, 61, 2, 2, 4213, 4214, 7, 531,
	2, 2, 4214, 4215, 5, 536, 269, 2, 4215, 355, 3, 2, 2, 2, 4216, 4219, 5,
	358, 180, 2, 4217, 4219, 5, 6, 4, 2, 4218, 4216, 3, 2, 2, 2, 4218, 4217,
	3, 2, 2, 2, 4219, 357, 3, 2, 2, 2, 4220, 4221, 5, 536, 269, 2, 4221, 4222,
	7, 1097, 2, 2, 4222, 4224, 3, 2, 2, 2, 4223, 4220, 3, 2, 2, 2, 4223, 4224,
	3, 2, 2, 2, 4224, 4225, 3, 2, 2, 2, 4225, 4264, 7, 332, 2, 2, 4226, 4227,
	5, 378, 190, 2, 4227, 4228, 7, 1089, 2, 2, 4228, 4230, 3, 2, 2, 2, 4229,
	4226, 3, 2, 2, 2, 4230, 4233, 3, 2, 2, 2, 4231, 4229, 3, 2, 2, 2, 4231,
	4232, 3, 2, 2, 2, 4232, 4239, 3, 2, 2, 2, 4233, 4231, 3, 2, 2, 2, 4234,
	4235, 5, 380, 191, 2, 4235, 4236, 7, 1089, 2, 2, 4236, 4238, 3, 2, 2, 2,
	4237, 4234, 3, 2, 2, 2, 4238, 4241, 3, 2, 2, 2, 4239, 4237, 3, 2, 2, 2,
	4239, 4240, 3, 2, 2, 2, 4240, 4247, 3, 2, 2, 2, 4241, 4239, 3, 2, 2, 2,
	4242, 4243, 5, 382, 192, 2, 4243, 4244, 7, 1089, 2, 2, 4244, 4246, 3, 2,
	2, 2, 4245, 4242, 3, 2, 2, 2, 4246, 4249, 3, 2, 2, 2, 4247, 4245, 3, 2,
	2, 2, 4247, 4248, 3, 2, 2, 2, 4248, 4255, 3, 2, 2, 2, 4249, 4247, 3, 2,
	2, 2, 4250, 4251, 5, 384, 193, 2, 4251, 4252, 7, 1089, 2, 2, 4252, 4254,
	3, 2, 2, 2, 4253, 4250, 3, 2, 2, 2, 4254, 4257, 3, 2, 2, 2, 4255, 4253,
	3, 2, 2, 2, 4255, 4256, 3, 2, 2, 2, 4256, 4261, 3, 2, 2, 2, 4257, 4255,
	3, 2, 2, 2, 4258, 4260, 5, 388, 195, 2, 4259, 4258, 3, 2, 2, 2, 4260, 4263,
	3, 2, 2, 2, 4261, 4259, 3, 2, 2, 2, 4261, 4262, 3, 2, 2, 2, 4262, 4265,
	3, 2, 2, 2, 4263, 4261, 3, 2, 2, 2, 4264, 4231, 3, 2, 2, 2, 4264, 4265,
	3, 2, 2, 2, 4265, 4266, 3, 2, 2, 2, 4266, 4268, 7, 391, 2, 2, 4267, 4269,
	5, 536, 269, 2, 4268, 4267, 3, 2, 2, 2, 4268, 4269, 3, 2, 2, 2, 4269, 359,
	3, 2, 2, 2, 4270, 4273, 7, 23, 2, 2, 4271, 4274, 5, 536, 269, 2, 4272,
	4274, 5, 634, 318, 2, 4273, 4271, 3, 2, 2, 2, 4273, 4272, 3, 2, 2, 2, 4273,
	4274, 3, 2, 2, 2, 4274, 4276, 3, 2, 2, 2, 4275, 4277, 5, 390, 196, 2, 4276,
	4275, 3, 2, 2, 2, 4277, 4278, 3, 2, 2, 2, 4278, 4276, 3, 2, 2, 2, 4278,
	4279, 3, 2, 2, 2, 4279, 4286, 3, 2, 2, 2, 4280, 4282, 7, 53, 2, 2, 4281,
	4283, 5, 388, 195, 2, 4282, 4281, 3, 2, 2, 2, 4283, 4284, 3, 2, 2, 2, 4284,
	4282, 3, 2, 2, 2, 4284, 4285, 3, 2, 2, 2, 4285, 4287, 3, 2, 2, 2, 4286,
	4280, 3, 2, 2, 2, 4286, 4287, 3, 2, 2, 2, 4287, 4288, 3, 2, 2, 2, 4288,
	4289, 7, 391, 2, 2, 4289, 4290, 7, 23, 2, 2, 4290, 361, 3, 2, 2, 2, 4291,
	4292, 7, 76, 2, 2, 4292, 4293, 5, 634, 318, 2, 4293, 4295, 7, 165, 2, 2,
	4294, 4296, 5, 388, 195, 2, 4295, 4294, 3, 2, 2, 2, 4296, 4297, 3, 2, 2,
	2, 4297, 4295, 3, 2, 2, 2, 4297, 4298, 3, 2, 2, 2, 4298, 4302, 3, 2, 2,
	2, 4299, 4301, 5, 392, 197, 2, 4300, 4299, 3, 2, 2, 2, 4301, 4304, 3, 2,
	2, 2, 4302, 4300, 3, 2, 2, 2, 4302, 4303, 3, 2, 2, 2, 4303, 4311, 3, 2,
	2, 2, 4304, 4302, 3, 2, 2, 2, 4305, 4307, 7, 53, 2, 2, 4306, 4308, 5, 388,
	195, 2, 4307, 4306, 3, 2, 2, 2, 4308, 4309, 3, 2, 2, 2, 4309, 4307, 3,
	2, 2, 2, 4309, 4310, 3, 2, 2, 2, 4310, 4312, 3, 2, 2, 2, 4311, 4305, 3,
	2, 2, 2, 4311, 4312, 3, 2, 2, 2, 4312, 4313, 3, 2, 2, 2, 4313, 4314, 7,
	391, 2, 2, 4314, 4315, 7, 76, 2, 2, 4315, 363, 3, 2, 2, 2, 4316, 4317,
	7, 87, 2, 2, 4317, 4318, 5, 536, 269, 2, 4318, 365, 3, 2, 2, 2, 4319, 4320,
	7, 93, 2, 2, 4320, 4321, 5, 536, 269, 2, 4321, 367, 3, 2, 2, 2, 4322, 4323,
	5, 536, 269, 2, 4323, 4324, 7, 1097, 2, 2, 4324, 4326, 3, 2, 2, 2, 4325,
	4322, 3, 2, 2, 2, 4325, 4326, 3, 2, 2, 2, 4326, 4327, 3, 2, 2, 2, 4327,
	4329, 7, 101, 2, 2, 4328, 4330, 5, 388, 195, 2, 4329, 4328, 3, 2, 2, 2,
	4330, 4331, 3, 2, 2, 2, 4331, 4329, 3, 2, 2, 2, 4331, 4332, 3, 2, 2, 2,
	4332, 4333, 3, 2, 2, 2, 4333, 4334, 7, 391, 2, 2, 4334, 4336, 7, 101, 2,
	2, 4335, 4337, 5, 536, 269, 2, 4336, 4335, 3, 2, 2, 2, 4336, 4337, 3, 2,
	2, 2, 4337, 369, 3, 2, 2, 2, 4338, 4339, 5, 536, 269, 2, 4339, 4340, 7,
	1097, 2, 2, 4340, 4342, 3, 2, 2, 2, 4341, 4338, 3, 2, 2, 2, 4341, 4342,
	3, 2, 2, 2, 4342, 4343, 3, 2, 2, 2, 4343, 4345, 7, 134, 2, 2, 4344, 4346,
	5, 388, 195, 2, 4345, 4344, 3, 2, 2, 2, 4346, 4347, 3, 2, 2, 2, 4347, 4345,
	3, 2, 2, 2, 4347, 4348, 3, 2, 2, 2, 4348, 4349, 3, 2, 2, 2, 4349, 4350,
	7, 629, 2, 2, 4350, 4351, 5, 634, 318, 2, 4351, 4352, 7, 391, 2, 2, 4352,
	4354, 7, 134, 2, 2, 4353, 4355, 5, 536, 269, 2, 4354, 4353, 3, 2, 2, 2,
	4354, 4355, 3, 2, 2, 2, 4355, 371, 3, 2, 2, 2, 4356, 4357, 7, 140, 2, 2,
	4357, 4358, 5, 634, 318, 2, 4358, 373, 3, 2, 2, 2, 4359, 4360, 5, 536,
	269, 2, 4360, 4361, 7, 1097, 2, 2, 4361, 4363, 3, 2, 2, 2, 4362, 4359,
	3, 2, 2, 2, 4362, 4363, 3, 2, 2, 2, 4363, 4364, 3, 2, 2, 2, 4364, 4365,
	7, 182, 2, 2, 4365, 4366, 5, 634, 318, 2, 4366, 4368, 7, 385, 2, 2, 4367,
	4369, 5, 388, 195, 2, 4368, 4367, 3, 2, 2, 2, 4369, 4370, 3, 2, 2, 2, 4370,
	4368, 3, 2, 2, 2, 4370, 4371, 3, 2, 2, 2, 4371, 4372, 3, 2, 2, 2, 4372,
	4373, 7, 391, 2, 2, 4373, 4375, 7, 182, 2, 2, 4374, 4376, 5, 536, 269,
	2, 4375, 4374, 3, 2, 2, 2, 4375, 4376, 3, 2, 2, 2, 4376, 375, 3, 2, 2,
	2, 4377, 4378, 7, 349, 2, 2, 4378, 4393, 5, 536, 269, 2, 4379, 4384, 7,
	63, 2, 2, 4380, 4382, 7, 500, 2, 2, 4381, 4380, 3, 2, 2, 2, 4381, 4382,
	3, 2, 2, 2, 4382, 4383, 3, 2, 2, 2, 4383, 4385, 7, 67, 2, 2, 4384, 4381,
	3, 2, 2, 2, 4384, 4385, 3, 2, 2, 2, 4385, 4386, 3, 2, 2, 2, 4386, 4387,
	5, 536, 269, 2, 4387, 4388, 7, 85, 2, 2, 4388, 4389, 5, 568, 285, 2, 4389,
	4393, 3, 2, 2, 2, 4390, 4391, 7, 513, 2, 2, 4391, 4393, 5, 536, 269, 2,
	4392, 4377, 3, 2, 2, 2, 4392, 4379, 3, 2, 2, 2, 4392, 4390, 3, 2, 2, 2,
	4393, 377, 3, 2, 2, 2, 4394, 4395, 7, 41, 2, 2, 4395, 4396, 5, 568, 285,
	2, 4396, 4399, 5, 556, 279, 2, 4397, 4398, 7, 42, 2, 2, 4398, 4400, 5,
	634, 318, 2, 4399, 4397, 3, 2, 2, 2, 4399, 4400, 3, 2, 2, 2, 4400, 379,
	3, 2, 2, 2, 4401, 4402, 7, 41, 2, 2, 4402, 4403, 5, 536, 269, 2, 4403,
	4404, 7, 30, 2, 2, 4404, 4411, 7, 64, 2, 2, 4405, 4412, 5, 542, 272, 2,
	4406, 4408, 7, 154, 2, 2, 4407, 4409, 7, 635, 2, 2, 4408, 4407, 3, 2, 2,
	2, 4408, 4409, 3, 2, 2, 2, 4409, 4410, 3, 2, 2, 2, 4410, 4412, 7, 1101,
	2, 2, 4411, 4405, 3, 2, 2, 2, 4411, 4406, 3, 2, 2, 2, 4412, 381, 3, 2,
	2, 2, 4413, 4414, 7, 41, 2, 2, 4414, 4415, 5, 536, 269, 2, 4415, 4416,
	7, 38, 2, 2, 4416, 4417, 7, 64, 2, 2, 4417, 4418, 5, 184, 93, 2, 4418,
	383, 3, 2, 2, 2, 4419, 4420, 7, 41, 2, 2, 4420, 4421, 9, 62, 2, 2, 4421,
	4422, 7, 425, 2, 2, 4422, 4423, 7, 64, 2, 2, 4423, 4428, 5, 386, 194, 2,
	4424, 4425, 7, 1088, 2, 2, 4425, 4427, 5, 386, 194, 2, 4426, 4424, 3, 2,
	2, 2, 4427, 4430, 3, 2, 2, 2, 4428, 4426, 3, 2, 2, 2, 4428, 4429, 3, 2,
	2, 2, 4429, 4431, 3, 2, 2, 2, 4430, 4428, 3, 2, 2, 2, 4431, 4432, 5, 356,
	179, 2, 4432, 385, 3, 2, 2, 2, 4433, 4445, 5, 542, 272, 2, 4434, 4436,
	7, 154, 2, 2, 4435, 4437, 7, 635, 2, 2, 4436, 4435, 3, 2, 2, 2, 4436, 4437,
	3, 2, 2, 2, 4437, 4438, 3, 2, 2, 2, 4438, 4445, 7, 1101, 2, 2, 4439, 4445,
	5, 536, 269, 2, 4440, 4445, 7, 155, 2, 2, 4441, 4442, 7, 109, 2, 2, 4442,
	4445, 7, 418, 2, 2, 4443, 4445, 7, 153, 2, 2, 4444, 4433, 3, 2, 2, 2, 4444,
	4434, 3, 2, 2, 2, 4444, 4439, 3, 2, 2, 2, 4444, 4440, 3, 2, 2, 2, 4444,
	4441, 3, 2, 2, 2, 4444, 4443, 3, 2, 2, 2, 4445, 387, 3, 2, 2, 2, 4446,
	4449, 5, 20, 11, 2, 4447, 4449, 5, 6, 4, 2, 4448, 4446, 3, 2, 2, 2, 4448,
	4447, 3, 2, 2, 2, 4449, 4450, 3, 2, 2, 2, 4450, 4451, 7, 1089, 2, 2, 4451,
	389, 3, 2, 2, 2, 4452, 4455, 7, 180, 2, 2, 4453, 4456, 5, 554, 278, 2,
	4454, 4456, 5, 634, 318, 2, 4455, 4453, 3, 2, 2, 2, 4455, 4454, 3, 2, 2,
	2, 4456, 4457, 3, 2, 2, 2, 4457, 4459, 7, 165, 2, 2, 4458, 4460, 5, 388,
	195, 2, 4459, 4458, 3, 2, 2, 2, 4460, 4461, 3, 2, 2, 2, 4461, 4459, 3,
	2, 2, 2, 4461, 4462, 3, 2, 2, 2, 4462, 391, 3, 2, 2, 2, 4463, 4464, 7,
	54, 2, 2, 4464, 4465, 5, 634, 318, 2, 4465, 4467, 7, 165, 2, 2, 4466, 4468,
	5, 388, 195, 2, 4467, 4466, 3, 2, 2, 2, 4468, 4469, 3, 2, 2, 2, 4469, 4467,
	3, 2, 2, 2, 4469, 4470, 3, 2, 2, 2, 4470, 393, 3, 2, 2, 2, 4471, 4472,
	7, 9, 2, 2, 4472, 4473, 7, 631, 2, 2, 4473, 4478, 5, 414, 208, 2, 4474,
	4475, 7, 1088, 2, 2, 4475, 4477, 5, 414, 208, 2, 4476, 4474, 3, 2, 2, 2,
	4477, 4480, 3, 2, 2, 2, 4478, 4476, 3, 2, 2, 2, 4478, 4479, 3, 2, 2, 2,
	4479, 4526, 3, 2, 2, 2, 4480, 4478, 3, 2, 2, 2, 4481, 4482, 7, 9, 2, 2,
	4482, 4484, 7, 631, 2, 2, 4483, 4485, 5, 590, 296, 2, 4484, 4483, 3, 2,
	2, 2, 4484, 4485, 3, 2, 2, 2, 4485, 4486, 3, 2, 2, 2, 4486, 4491, 5, 416,
	209, 2, 4487, 4488, 7, 1088, 2, 2, 4488, 4490, 5, 416, 209, 2, 4489, 4487,
	3, 2, 2, 2, 4490, 4493, 3, 2, 2, 2, 4491, 4489, 3, 2, 2, 2, 4491, 4492,
	3, 2, 2, 2, 4492, 4508, 3, 2, 2, 2, 4493, 4491, 3, 2, 2, 2, 4494, 4506,
	7, 136, 2, 2, 4495, 4507, 7, 503, 2, 2, 4496, 4503, 5, 418, 210, 2, 4497,
	4499, 7, 12, 2, 2, 4498, 4497, 3, 2, 2, 2, 4498, 4499, 3, 2, 2, 2, 4499,
	4500, 3, 2, 2, 2, 4500, 4502, 5, 418, 210, 2, 4501, 4498, 3, 2, 2, 2, 4502,
	4505, 3, 2, 2, 2, 4503, 4501, 3, 2, 2, 2, 4503, 4504, 3, 2, 2, 2, 4504,
	4507, 3, 2, 2, 2, 4505, 4503, 3, 2, 2, 2, 4506, 4495, 3, 2, 2, 2, 4506,
	4496, 3, 2, 2, 2, 4507, 4509, 3, 2, 2, 2, 4508, 4494, 3, 2, 2, 2, 4508,
	4509, 3, 2, 2, 2, 4509, 4516, 3, 2, 2, 2, 4510, 4512, 7, 183, 2, 2, 4511,
	4513, 5, 420, 211, 2, 4512, 4511, 3, 2, 2, 2, 4513, 4514, 3, 2, 2, 2, 4514,
	4512, 3, 2, 2, 2, 4514, 4515, 3, 2, 2, 2, 4515, 4517, 3, 2, 2, 2, 4516,
	4510, 3, 2, 2, 2, 4516, 4517, 3, 2, 2, 2, 4517, 4522, 3, 2, 2, 2, 4518,
	4521, 5, 422, 212, 2, 4519, 4521, 5, 424, 213, 2, 4520, 4518, 3, 2, 2,
	2, 4520, 4519, 3, 2, 2, 2, 4521, 4524, 3, 2, 2, 2, 4522, 4520, 3, 2, 2,
	2, 4522, 4523, 3, 2, 2, 2, 4523, 4526, 3, 2, 2, 2, 4524, 4522, 3, 2, 2,
	2, 4525, 4471, 3, 2, 2, 2, 4525, 4481, 3, 2, 2, 2, 4526, 395, 3, 2, 2,
	2, 4527, 4528, 7, 34, 2, 2, 4528, 4529, 7, 631, 2, 2, 4529, 4534, 5, 416,
	209, 2, 4530, 4531, 7, 1088, 2, 2, 4531, 4533, 5, 416, 209, 2, 4532, 4530,
	3, 2, 2, 2, 4533, 4536, 3, 2, 2, 2, 4534, 4532, 3, 2, 2, 2, 4534, 4535,
	3, 2, 2, 2, 4535, 4582, 3, 2, 2, 2, 4536, 4534, 3, 2, 2, 2, 4537, 4538,
	7, 34, 2, 2, 4538, 4540, 7, 631, 2, 2, 4539, 4541, 5, 592, 297, 2, 4540,
	4539, 3, 2, 2, 2, 4540, 4541, 3, 2, 2, 2, 4541, 4542, 3, 2, 2, 2, 4542,
	4547, 5, 416, 209, 2, 4543, 4544, 7, 1088, 2, 2, 4544, 4546, 5, 416, 209,
	2, 4545, 4543, 3, 2, 2, 2, 4546, 4549, 3, 2, 2, 2, 4547, 4545, 3, 2, 2,
	2, 4547, 4548, 3, 2, 2, 2, 4548, 4564, 3, 2, 2, 2, 4549, 4547, 3, 2, 2,
	2, 4550, 4562, 7, 136, 2, 2, 4551, 4563, 7, 503, 2, 2, 4552, 4559, 5, 418,
	210, 2, 4553, 4555, 7, 12, 2, 2, 4554, 4553, 3, 2, 2, 2, 4554, 4555, 3,
	2, 2, 2, 4555, 4556, 3, 2, 2, 2, 4556, 4558, 5, 418, 210, 2, 4557, 4554,
	3, 2, 2, 2, 4558, 4561, 3, 2, 2, 2, 4559, 4557, 3, 2, 2, 2, 4559, 4560,
	3, 2, 2, 2, 4560, 4563, 3, 2, 2, 2, 4561, 4559, 3, 2, 2, 2, 4562, 4551,
	3, 2, 2, 2, 4562, 4552, 3, 2, 2, 2, 4563, 4565, 3, 2, 2, 2, 4564, 4550,
	3, 2, 2, 2, 4564, 4565, 3, 2, 2, 2, 4565, 4572, 3, 2, 2, 2, 4566, 4568,
	7, 183, 2, 2, 4567, 4569, 5, 420, 211, 2, 4568, 4567, 3, 2, 2, 2, 4569,
	4570, 3, 2, 2, 2, 4570, 4568, 3, 2, 2, 2, 4570, 4571, 3, 2, 2, 2, 4571,
	4573, 3, 2, 2, 2, 4572, 4566, 3, 2, 2, 2, 4572, 4573, 3, 2, 2, 2, 4573,
	4578, 3, 2, 2, 2, 4574, 4577, 5, 422, 212, 2, 4575, 4577, 5, 424, 213,
	2, 4576, 4574, 3, 2, 2, 2, 4576, 4575, 3, 2, 2, 2, 4577, 4580, 3, 2, 2,
	2, 4578, 4576, 3, 2, 2, 2, 4578, 4579, 3, 2, 2, 2, 4579, 4582, 3, 2, 2,
	2, 4580, 4578, 3, 2, 2, 2, 4581, 4527, 3, 2, 2, 2, 4581, 4537, 3, 2, 2,
	2, 4582, 397, 3, 2, 2, 2, 4583, 4584, 7, 51, 2, 2, 4584, 4586, 7, 631,
	2, 2, 4585, 4587, 5, 590, 296, 2, 4586, 4585, 3, 2, 2, 2, 4586, 4587, 3,
	2, 2, 2, 4587, 4588, 3, 2, 2, 2, 4588, 4593, 5, 518, 260, 2, 4589, 4590,
	7, 1088, 2, 2, 4590, 4592, 5, 518, 260, 2, 4591, 4589, 3, 2, 2, 2, 4592,
	4595, 3, 2, 2, 2, 4593, 4591, 3, 2, 2, 2, 4593, 4594, 3, 2, 2, 2, 4594,
	399, 3, 2, 2, 2, 4595, 4593, 3, 2, 2, 2, 4596, 4597, 7, 71, 2, 2, 4597,
	4602, 5, 426, 214, 2, 4598, 4599, 7, 1088, 2, 2, 4599, 4601, 5, 426, 214,
	2, 4600, 4598, 3, 2, 2, 2, 4601, 4604, 3, 2, 2, 2, 4602, 4600, 3, 2, 2,
	2, 4602, 4603, 3, 2, 2, 2, 4603, 4605, 3, 2, 2, 2, 4604, 4602, 3, 2, 2,
	2, 4605, 4607, 7, 113, 2, 2, 4606, 4608, 9, 63, 2, 2, 4607, 4606, 3, 2,
	2, 2, 4607, 4608, 3, 2, 2, 2, 4608, 4609, 3, 2, 2, 2, 4609, 4610, 5, 430,
	216, 2, 4610, 4611, 7, 166, 2, 2, 4611, 4616, 5, 416, 209, 2, 4612, 4613,
	7, 1088, 2, 2, 4613, 4615, 5, 416, 209, 2, 4614, 4612, 3, 2, 2, 2, 4615,
	4618, 3, 2, 2, 2, 4616, 4614, 3, 2, 2, 2, 4616, 4617, 3, 2, 2, 2, 4617,
	4633, 3, 2, 2, 2, 4618, 4616, 3, 2, 2, 2, 4619, 4631, 7, 136, 2, 2, 4620,
	4632, 7, 503, 2, 2, 4621, 4628, 5, 418, 210, 2, 4622, 4624, 7, 12, 2, 2,
	4623, 4622, 3, 2, 2, 2, 4623, 4624, 3, 2, 2, 2, 4624, 4625, 3, 2, 2, 2,
	4625, 4627, 5, 418, 210, 2, 4626, 4623, 3, 2, 2, 2, 4627, 4630, 3, 2, 2,
	2, 4628, 4626, 3, 2, 2, 2, 4628, 4629, 3, 2, 2, 2, 4629, 4632, 3, 2, 2,
	2, 4630, 4628, 3, 2, 2, 2, 4631, 4620, 3, 2, 2, 2, 4631, 4621, 3, 2, 2,
	2, 4632, 4634, 3, 2, 2, 2, 4633, 4619, 3, 2, 2, 2, 4633, 4634, 3, 2, 2,
	2, 4634, 4644, 3, 2, 2, 2, 4635, 4641, 7, 183, 2, 2, 4636, 4637, 7, 71,
	2, 2, 4637, 4640, 7, 115, 2, 2, 4638, 4640, 5, 420, 211, 2, 4639, 4636,
	3, 2, 2, 2, 4639, 4638, 3, 2, 2, 2, 4640, 4643, 3, 2, 2, 2, 4641, 4639,
	3, 2, 2, 2, 4641, 4642, 3, 2, 2, 2, 4642, 4645, 3, 2, 2, 2, 4643, 4641,
	3, 2, 2, 2, 4644, 4635, 3, 2, 2, 2, 4644, 4645, 3, 2, 2, 2, 4645, 4652,
	3, 2, 2, 2, 4646, 4647, 7, 14, 2, 2, 4647, 4648, 5, 518, 260, 2, 4648,
	4649, 7, 183, 2, 2, 4649, 4650, 7, 564, 2, 2, 4650, 4651, 5, 402, 202,
	2, 4651, 4653, 3, 2, 2, 2, 4652, 4646, 3, 2, 2, 2, 4652, 4653, 3, 2, 2,
	2, 4653, 4690, 3, 2, 2, 2, 4654, 4657, 7, 71, 2, 2, 4655, 4658, 5, 518,
	260, 2, 4656, 4658, 5, 536, 269, 2, 4657, 4655, 3, 2, 2, 2, 4657, 4656,
	3, 2, 2, 2, 4658, 4666, 3, 2, 2, 2, 4659, 4662, 7, 1088, 2, 2, 4660, 4663,
	5, 518, 260, 2, 4661, 4663, 5, 536, 269, 2, 4662, 4660, 3, 2, 2, 2, 4662,
	4661, 3, 2, 2, 2, 4663, 4665, 3, 2, 2, 2, 4664, 4659, 3, 2, 2, 2, 4665,
	4668, 3, 2, 2, 2, 4666, 4664, 3, 2, 2, 2, 4666, 4667, 3, 2, 2, 2, 4667,
	4669, 3, 2, 2, 2, 4668, 4666, 3, 2, 2, 2, 4669, 4672, 7, 166, 2, 2, 4670,
	4673, 5, 518, 260, 2, 4671, 4673, 5, 536, 269, 2, 4672, 4670, 3, 2, 2,
	2, 4672, 4671, 3, 2, 2, 2, 4673, 4681, 3, 2, 2, 2, 4674, 4677, 7, 1088,
	2, 2, 4675, 4678, 5, 518, 260, 2, 4676, 4678, 5, 536, 269, 2, 4677, 4675,
	3, 2, 2, 2, 4677, 4676, 3, 2, 2, 2, 4678, 4680, 3, 2, 2, 2, 4679, 4674,
	3, 2, 2, 2, 4680, 4683, 3, 2, 2, 2, 4681, 4679, 3, 2, 2, 2, 4681, 4682,
	3, 2, 2, 2, 4682, 4687, 3, 2, 2, 2, 4683, 4681, 3, 2, 2, 2, 4684, 4685,
	7, 183, 2, 2, 4685, 4686, 7, 1116, 2, 2, 4686, 4688, 7, 115, 2, 2, 4687,
	4684, 3, 2, 2, 2, 4687, 4688, 3, 2, 2, 2, 4688, 4690, 3, 2, 2, 2, 4689,
	4596, 3, 2, 2, 2, 4689, 4654, 3, 2, 2, 2, 4690, 401, 3, 2, 2, 2, 4691,
	4714, 7, 42, 2, 2, 4692, 4714, 7, 503, 2, 2, 4693, 4703, 7, 8, 2, 2, 4694,
	4695, 7, 58, 2, 2, 4695, 4700, 5, 518, 260, 2, 4696, 4697, 7, 1088, 2,
	2, 4697, 4699, 5, 518, 260, 2, 4698, 4696, 3, 2, 2, 2, 4699, 4702, 3, 2,
	2, 2, 4700, 4698, 3, 2, 2, 2, 4700, 4701, 3, 2, 2, 2, 4701, 4704, 3, 2,
	2, 2, 4702, 4700, 3, 2, 2, 2, 4703, 4694, 3, 2, 2, 2, 4703, 4704, 3, 2,
	2, 2, 4704, 4714, 3, 2, 2, 2, 4705, 4710, 5, 518, 260, 2, 4706, 4707, 7,
	1088, 2, 2, 4707, 4709, 5, 518, 260, 2, 4708, 4706, 3, 2, 2, 2, 4709, 4712,
	3, 2, 2, 2, 4710, 4708, 3, 2, 2, 2, 4710, 4711, 3, 2, 2, 2, 4711, 4714,
	3, 2, 2, 2, 4712, 4710, 3, 2, 2, 2, 4713, 4691, 3, 2, 2, 2, 4713, 4692,
	3, 2, 2, 2, 4713, 4693, 3, 2, 2, 2, 4713, 4705, 3, 2, 2, 2, 4714, 403,
	3, 2, 2, 2, 4715, 4716, 7, 71, 2, 2, 4716, 4717, 7, 537, 2, 2, 4717, 4718,
	7, 113, 2, 2, 4718, 4719, 5, 518, 260, 2, 4719, 4720, 7, 166, 2, 2, 4720,
	4725, 5, 518, 260, 2, 4721, 4722, 7, 1088, 2, 2, 4722, 4724, 5, 518, 260,
	2, 4723, 4721, 3, 2, 2, 2, 4724, 4727, 3, 2, 2, 2, 4725, 4723, 3, 2, 2,
	2, 4725, 4726, 3, 2, 2, 2, 4726, 4731, 3, 2, 2, 2, 4727, 4725, 3, 2, 2,
	2, 4728, 4729, 7, 183, 2, 2, 4729, 4730, 7, 71, 2, 2, 4730, 4732, 7, 115,
	2, 2, 4731, 4728, 3, 2, 2, 2, 4731, 4732, 3, 2, 2, 2, 4732, 405, 3, 2,
	2, 2, 4733, 4734, 7, 133, 2, 2, 4734, 4735, 7, 631, 2, 2, 4735, 4740, 5,
	432, 217, 2, 4736, 4737, 7, 1088, 2, 2, 4737, 4739, 5, 432, 217, 2, 4738,
	4736, 3, 2, 2, 2, 4739, 4742, 3, 2, 2, 2, 4740, 4738, 3, 2, 2, 2, 4740,
	4741, 3, 2, 2, 2, 4741, 407, 3, 2, 2, 2, 4742, 4740, 3, 2, 2, 2, 4743,
	4744, 7, 141, 2, 2, 4744, 4749, 5, 426, 214, 2, 4745, 4746, 7, 1088, 2,
	2, 4746, 4748, 5, 426, 214, 2, 4747, 4745, 3, 2, 2, 2, 4748, 4751, 3, 2,
	2, 2, 4749, 4747, 3, 2, 2, 2, 4749, 4750, 3, 2, 2, 2, 4750, 4752, 3, 2,
	2, 2, 4751, 4749, 3, 2, 2, 2, 4752, 4754, 7, 113, 2, 2, 4753, 4755, 9,
	63, 2, 2, 4754, 4753, 3, 2, 2, 2, 4754, 4755, 3, 2, 2, 2, 4755, 4756, 3,
	2, 2, 2, 4756, 4757, 5, 430, 216, 2, 4757, 4758, 7, 67, 2, 2, 4758, 4763,
	5, 518, 260, 2, 4759, 4760, 7, 1088, 2, 2, 4760, 4762, 5, 518, 260, 2,
	4761, 4759, 3, 2, 2, 2, 4762, 4765, 3, 2, 2, 2, 4763, 4761, 3, 2, 2, 2,
	4763, 4764, 3, 2, 2, 2, 4764, 4808, 3, 2, 2, 2, 4765, 4763, 3, 2, 2, 2,
	4766, 4767, 7, 141, 2, 2, 4767, 4769, 7, 8, 2, 2, 4768, 4770, 7, 670, 2,
	2, 4769, 4768, 3, 2, 2, 2, 4769, 4770, 3, 2, 2, 2, 4770, 4771, 3, 2, 2,
	2, 4771, 4772, 7, 1088, 2, 2, 4772, 4773, 7, 71, 2, 2, 4773, 4774, 7, 115,
	2, 2, 4774, 4775, 7, 67, 2, 2, 4775, 4780, 5, 518, 260, 2, 4776, 4777,
	7, 1088, 2, 2, 4777, 4779, 5, 518, 260, 2, 4778, 4776, 3, 2, 2, 2, 4779,
	4782, 3, 2, 2, 2, 4780, 4778, 3, 2, 2, 2, 4780, 4781, 3, 2, 2, 2, 4781,
	4808, 3, 2, 2, 2, 4782, 4780, 3, 2, 2, 2, 4783, 4784, 7, 141, 2, 2, 4784,
	4789, 5, 536, 269, 2, 4785, 4786, 7, 1088, 2, 2, 4786, 4788, 5, 536, 269,
	2, 4787, 4785, 3, 2, 2, 2, 4788, 4791, 3, 2, 2, 2, 4789, 4787, 3, 2, 2,
	2, 4789, 4790, 3, 2, 2, 2, 4790, 4792, 3, 2, 2, 2, 4791, 4789, 3, 2, 2,
	2, 4792, 4795, 7, 67, 2, 2, 4793, 4796, 5, 518, 260, 2, 4794, 4796, 5,
	536, 269, 2, 4795, 4793, 3, 2, 2, 2, 4795, 4794, 3, 2, 2, 2, 4796, 4804,
	3, 2, 2, 2, 4797, 4800, 7, 1088, 2, 2, 4798, 4801, 5, 518, 260, 2, 4799,
	4801, 5, 536, 269, 2, 4800, 4798, 3, 2, 2, 2, 4800, 4799, 3, 2, 2, 2, 4801,
	4803, 3, 2, 2, 2, 4802, 4797, 3, 2, 2, 2, 4803, 4806, 3, 2, 2, 2, 4804,
	4802, 3, 2, 2, 2, 4804, 4805, 3, 2, 2, 2, 4805, 4808, 3, 2, 2, 2, 4806,
	4804, 3, 2, 2, 2, 4807, 4743, 3, 2, 2, 2, 4807, 4766, 3, 2, 2, 2, 4807,
	4783, 3, 2, 2, 2, 4808, 409, 3, 2, 2, 2, 4809, 4810, 7, 141, 2, 2, 4810,
	4811, 7, 537, 2, 2, 4811, 4812, 7, 113, 2, 2, 4812, 4813, 5, 518, 260,
	2, 4813, 4814, 7, 67, 2, 2, 4814, 4819, 5, 518, 260, 2, 4815, 4816, 7,
	1088, 2, 2, 4816, 4818, 5, 518, 260, 2, 4817, 4815, 3, 2, 2, 2, 4818, 4821,
	3, 2, 2, 2, 4819, 4817, 3, 2, 2, 2, 4819, 4820, 3, 2, 2, 2, 4820, 411,
	3, 2, 2, 2, 4821, 4819, 3, 2, 2, 2, 4822, 4823, 7, 147, 2, 2, 4823, 4826,
	7, 523, 2, 2, 4824, 4825, 7, 64, 2, 2, 4825, 4827, 5, 518, 260, 2, 4826,
	4824, 3, 2, 2, 2, 4826, 4827, 3, 2, 2, 2, 4827, 4828, 3, 2, 2, 2, 4828,
	4831, 7, 1077, 2, 2, 4829, 4832, 5, 628, 315, 2, 4830, 4832, 7, 1101, 2,
	2, 4831, 4829, 3, 2, 2, 2, 4831, 4830, 3, 2, 2, 2, 4832, 413, 3, 2, 2,
	2, 4833, 4834, 5, 518, 260, 2, 4834, 4835, 5, 422, 212, 2, 4835, 415, 3,
	2, 2, 2, 4836, 4837, 5, 518, 260, 2, 4837, 4838, 7, 430, 2, 2, 4838, 4839,
	7, 20, 2, 2, 4839, 4840, 7, 523, 2, 2, 4840, 4841, 7, 1101, 2, 2, 4841,
	4865, 3, 2, 2, 2, 4842, 4843, 5, 518, 260, 2, 4843, 4846, 7, 430, 2, 2,
	4844, 4845, 7, 183, 2, 2, 4845, 4847, 5, 534, 268, 2, 4846, 4844, 3, 2,
	2, 2, 4846, 4847, 3, 2, 2, 2, 4847, 4848, 3, 2, 2, 2, 4848, 4849, 7, 20,
	2, 2, 4849, 4853, 7, 1101, 2, 2, 4850, 4851, 7, 139, 2, 2, 4851, 4852,
	7, 36, 2, 2, 4852, 4854, 7, 523, 2, 2, 4853, 4850, 3, 2, 2, 2, 4853, 4854,
	3, 2, 2, 2, 4854, 4865, 3, 2, 2, 2, 4855, 4856, 5, 518, 260, 2, 4856, 4857,
	7, 430, 2, 2, 4857, 4858, 7, 183, 2, 2, 4858, 4861, 5, 534, 268, 2, 4859,
	4860, 7, 14, 2, 2, 4860, 4862, 7, 1101, 2, 2, 4861, 4859, 3, 2, 2, 2, 4861,
	4862, 3, 2, 2, 2, 4862, 4865, 3, 2, 2, 2, 4863, 4865, 5, 518, 260, 2, 4864,
	4836, 3, 2, 2, 2, 4864, 4842, 3, 2, 2, 2, 4864, 4855, 3, 2, 2, 2, 4864,
	4863, 3, 2, 2, 2, 4865, 417, 3, 2, 2, 2, 4866, 4875, 7, 159, 2, 2, 4867,
	4875, 7, 646, 2, 2, 4868, 4869, 7, 346, 2, 2, 4869, 4875, 7, 1101, 2, 2,
	4870, 4871, 7, 445, 2, 2, 4871, 4875, 7, 1101, 2, 2, 4872, 4873, 7, 606,
	2, 2, 4873, 4875, 7, 1101, 2, 2, 4874, 4866, 3, 2, 2, 2, 4874, 4867, 3,
	2, 2, 2, 4874, 4868, 3, 2, 2, 2, 4874, 4870, 3, 2, 2, 2, 4874, 4872, 3,
	2, 2, 2, 4875, 419, 3, 2, 2, 2, 4876, 4877, 7, 479, 2, 2, 4877, 4885, 5,
	542, 272, 2, 4878, 4879, 7, 482, 2, 2, 4879, 4885, 5, 542, 272, 2, 4880,
	4881, 7, 478, 2, 2, 4881, 4885, 5, 542, 272, 2, 4882, 4883, 7, 483, 2,
	2, 4883, 4885, 5, 542, 272, 2, 4884, 4876, 3, 2, 2, 2, 4884, 4878, 3, 2,
	2, 2, 4884, 4880, 3, 2, 2, 2, 4884, 4882, 3, 2, 2, 2, 4885, 421, 3, 2,
	2, 2, 4886, 4887, 7, 523, 2, 2, 4887, 4894, 7, 404, 2, 2, 4888, 4895, 7,
	42, 2, 2, 4889, 4895, 7, 499, 2, 2, 4890, 4891, 7, 84, 2, 2, 4891, 4892,
	5, 542, 272, 2, 4892, 4893, 7, 656, 2, 2, 4893, 4895, 3, 2, 2, 2, 4894,
	4888, 3, 2, 2, 2, 4894, 4889, 3, 2, 2, 2, 4894, 4890, 3, 2, 2, 2, 4894,
	4895, 3, 2, 2, 2, 4895, 423, 3, 2, 2, 2, 4896, 4897, 7, 320, 2, 2, 4897,
	4898, 9, 64, 2, 2, 4898, 425, 3, 2, 2, 2, 4899, 4904, 5, 428, 215, 2, 4900,
	4901, 7, 1086, 2, 2, 4901, 4902, 5, 568, 285, 2, 4902, 4903, 7, 1087, 2,
	2, 4903, 4905, 3, 2, 2, 2, 4904, 4900, 3, 2, 2, 2, 4904, 4905, 3, 2, 2,
	2, 4905, 427, 3, 2, 2, 2, 4906, 4908, 7, 8, 2, 2, 4907, 4909, 7, 670, 2,
	2, 4908, 4907, 3, 2, 2, 2, 4908, 4909, 3, 2, 2, 2, 4909, 4986, 3, 2, 2,
	2, 4910, 4912, 7, 9, 2, 2, 4911, 4913, 7, 663, 2, 2, 4912, 4911, 3, 2,
	2, 2, 4912, 4913, 3, 2, 2, 2, 4913, 4986, 3, 2, 2, 2, 4914, 4922, 7, 34,
	2, 2, 4915, 4916, 7, 615, 2, 2, 4916, 4923, 7, 662, 2, 2, 4917, 4923, 7,
	663, 2, 2, 4918, 4923, 7, 637, 2, 2, 4919, 4923, 7, 631, 2, 2, 4920, 4923,
	7, 613, 2, 2, 4921, 4923, 7, 564, 2, 2, 4922, 4915, 3, 2, 2, 2, 4922, 4917,
	3, 2, 2, 2, 4922, 4918, 3, 2, 2, 2, 4922, 4919, 3, 2, 2, 2, 4922, 4920,
	3, 2, 2, 2, 4922, 4921, 3, 2, 2, 2, 4922, 4923, 3, 2, 2, 2, 4923, 4986,
	3, 2, 2, 2, 4924, 4986, 7, 44, 2, 2, 4925, 4927, 7, 51, 2, 2, 4926, 4928,
	7, 564, 2, 2, 4927, 4926, 3, 2, 2, 2, 4927, 4928, 3, 2, 2, 2, 4928, 4986,
	3, 2, 2, 2, 4929, 4986, 7, 399, 2, 2, 4930, 4986, 7, 664, 2, 2, 4931, 4986,
	7, 665, 2, 2, 4932, 4933, 7, 71, 2, 2, 4933, 4986, 7, 115, 2, 2, 4934,
	4986, 7, 79, 2, 2, 4935, 4986, 7, 83, 2, 2, 4936, 4937, 7, 100, 2, 2, 4937,
	4986, 7, 662, 2, 2, 4938, 4986, 7, 666, 2, 2, 4939, 4986, 7, 537, 2, 2,
	4940, 4986, 7, 130, 2, 2, 4941, 4986, 7, 667, 2, 2, 4942, 4943, 7, 558,
	2, 2, 4943, 4986, 9, 65, 2, 2, 4944, 4986, 7, 146, 2, 2, 4945, 4946, 7,
	149, 2, 2, 4946, 4986, 9, 66, 2, 2, 4947, 4986, 7, 668, 2, 2, 4948, 4986,
	7, 669, 2, 2, 4949, 4986, 7, 168, 2, 2, 4950, 4986, 7, 175, 2, 2, 4951,
	4986, 7, 176, 2, 2, 4952, 4986, 7, 671, 2, 2, 4953, 4986, 7, 672, 2, 2,
	4954, 4986, 7, 673, 2, 2, 4955, 4986, 7, 674, 2, 2, 4956, 4986, 7, 675,
	2, 2, 4957, 4986, 7, 676, 2, 2, 4958, 4986, 7, 677, 2, 2, 4959, 4986, 7,
	678, 2, 2, 4960, 4986, 7, 679, 2, 2, 4961, 4986, 7, 680, 2, 2, 4962, 4986,
	7, 681, 2, 2, 4963, 4986, 7, 682, 2, 2, 4964, 4986, 7, 683, 2, 2, 4965,
	4986, 7, 684, 2, 2, 4966, 4986, 7, 685, 2, 2, 4967, 4986, 7, 686, 2, 2,
	4968, 4986, 7, 687, 2, 2, 4969, 4986, 7, 688, 2, 2, 4970, 4986, 7, 689,
	2, 2, 4971, 4986, 7, 690, 2, 2, 4972, 4986, 7, 691, 2, 2, 4973, 4986, 7,
	692, 2, 2, 4974, 4986, 7, 693, 2, 2, 4975, 4986, 7, 694, 2, 2, 4976, 4986,
	7, 695, 2, 2, 4977, 4986, 7, 696, 2, 2, 4978, 4986, 7, 697, 2, 2, 4979,
	4986, 7, 698, 2, 2, 4980, 4986, 7, 1031, 2, 2, 4981, 4986, 7, 699, 2, 2,
	4982, 4986, 7, 700, 2, 2, 4983, 4986, 7, 701, 2, 2, 4984, 4986, 7, 702,
	2, 2, 4985, 4906, 3, 2, 2, 2, 4985, 4910, 3, 2, 2, 2, 4985, 4914, 3, 2,
	2, 2, 4985, 4924, 3, 2, 2, 2, 4985, 4925, 3, 2, 2, 2, 4985, 4929, 3, 2,
	2, 2, 4985, 4930, 3, 2, 2, 2, 4985, 4931, 3, 2, 2, 2, 4985, 4932, 3, 2,
	2, 2, 4985, 4934, 3, 2, 2, 2, 4985, 4935, 3, 2, 2, 2, 4985, 4936, 3, 2,
	2, 2, 4985, 4938, 3, 2, 2, 2, 4985, 4939, 3, 2, 2, 2, 4985, 4940, 3, 2,
	2, 2, 4985, 4941, 3, 2, 2, 2, 4985, 4942, 3, 2, 2, 2, 4985, 4944, 3, 2,
	2, 2, 4985, 4945, 3, 2, 2, 2, 4985, 4947, 3, 2, 2, 2, 4985, 4948, 3, 2,
	2, 2, 4985, 4949, 3, 2, 2, 2, 4985, 4950, 3, 2, 2, 2, 4985, 4951, 3, 2,
	2, 2, 4985, 4952, 3, 2, 2, 2, 4985, 4953, 3, 2, 2, 2, 4985, 4954, 3, 2,
	2, 2, 4985, 4955, 3, 2, 2, 2, 4985, 4956, 3, 2, 2, 2, 4985, 4957, 3, 2,
	2, 2, 4985, 4958, 3, 2, 2, 2, 4985, 4959, 3, 2, 2, 2, 4985, 4960, 3, 2,
	2, 2, 4985, 4961, 3, 2, 2, 2, 4985, 4962, 3, 2, 2, 2, 4985, 4963, 3, 2,
	2, 2, 4985, 4964, 3, 2, 2, 2, 4985, 4965, 3, 2, 2, 2, 4985, 4966, 3, 2,
	2, 2, 4985, 4967, 3, 2, 2, 2, 4985, 4968, 3, 2, 2, 2, 4985, 4969, 3, 2,
	2, 2, 4985, 4970, 3, 2, 2, 2, 4985, 4971, 3, 2, 2, 2, 4985, 4972, 3, 2,
	2, 2, 4985, 4973, 3, 2, 2, 2, 4985, 4974, 3, 2, 2, 2, 4985, 4975, 3, 2,
	2, 2, 4985, 4976, 3, 2, 2, 2, 4985, 4977, 3, 2, 2, 2, 4985, 4978, 3, 2,
	2, 2, 4985, 4979, 3, 2, 2, 2, 4985, 4980, 3, 2, 2, 2, 4985, 4981, 3, 2,
	2, 2, 4985, 4982, 3, 2, 2, 2, 4985, 4983, 3, 2, 2, 2, 4985, 4984, 3, 2,
	2, 2, 4986, 429, 3, 2, 2, 2, 4987, 5004, 7, 1070, 2, 2, 4988, 4989, 7,
	1070, 2, 2, 4989, 4990, 7, 1085, 2, 2, 4990, 5004, 7, 1070, 2, 2, 4991,
	4992, 5, 536, 269, 2, 4992, 4993, 7, 1085, 2, 2, 4993, 4994, 7, 1070, 2,
	2, 4994, 5004, 3, 2, 2, 2, 4995, 4996, 5, 536, 269, 2, 4996, 4997, 7, 1085,
	2, 2, 4997, 4998, 5, 536, 269, 2, 4998, 5004, 3, 2, 2, 2, 4999, 5000, 5,
	536, 269, 2, 5000, 5001, 5, 540, 271, 2, 5001, 5004, 3, 2, 2, 2, 5002,
	5004, 5, 536, 269, 2, 5003, 4987, 3, 2, 2, 2, 5003, 4988, 3, 2, 2, 2, 5003,
	4991, 3, 2, 2, 2, 5003, 4995, 3, 2, 2, 2, 5003, 4999, 3, 2, 2, 2, 5003,
	5002, 3, 2, 2, 2, 5004, 431, 3, 2, 2, 2, 5005, 5006, 5, 518, 260, 2, 5006,
	5007, 7, 166, 2, 2, 5007, 5008, 5, 518, 260, 2, 5008, 433, 3, 2, 2, 2,
	5009, 5011, 7, 11, 2, 2, 5010, 5012, 9, 67, 2, 2, 5011, 5010, 3, 2, 2,
	2, 5011, 5012, 3, 2, 2, 2, 5012, 5013, 3, 2, 2, 2, 5013, 5014, 7, 163,
	2, 2, 5014, 5032, 5, 570, 286, 2, 5015, 5016, 7, 175, 2, 2, 5016, 5017,
	7, 75, 2, 2, 5017, 5018, 7, 113, 2, 2, 5018, 5023, 5, 514, 258, 2, 5019,
	5020, 7, 1088, 2, 2, 5020, 5022, 5, 514, 258, 2, 5021, 5019, 3, 2, 2, 2,
	5022, 5025, 3, 2, 2, 2, 5023, 5021, 3, 2, 2, 2, 5023, 5024, 3, 2, 2, 2,
	5024, 5030, 3, 2, 2, 2, 5025, 5023, 3, 2, 2, 2, 5026, 5027, 7, 183, 2,
	2, 5027, 5028, 5, 542, 272, 2, 5028, 5029, 7, 19, 2, 2, 5029, 5031, 3,
	2, 2, 2, 5030, 5026, 3, 2, 2, 2, 5030, 5031, 3, 2, 2, 2, 5031, 5033, 3,
	2, 2, 2, 5032, 5015, 3, 2, 2, 2, 5032, 5033, 3, 2, 2, 2, 5033, 5045, 3,
	2, 2, 2, 5034, 5035, 7, 51, 2, 2, 5035, 5036, 7, 75, 2, 2, 5036, 5037,
	7, 113, 2, 2, 5037, 5042, 5, 514, 258, 2, 5038, 5039, 7, 1088, 2, 2, 5039,
	5041, 5, 514, 258, 2, 5040, 5038, 3, 2, 2, 2, 5041, 5044, 3, 2, 2, 2, 5042,
	5040, 3, 2, 2, 2, 5042, 5043, 3, 2, 2, 2, 5043, 5046, 3, 2, 2, 2, 5044,
	5042, 3, 2, 2, 2, 5045, 5034, 3, 2, 2, 2, 5045, 5046, 3, 2, 2, 2, 5046,
	435, 3, 2, 2, 2, 5047, 5048, 7, 27, 2, 2, 5048, 5049, 7, 163, 2, 2, 5049,
	5053, 5, 570, 286, 2, 5050, 5052, 5, 444, 223, 2, 5051, 5050, 3, 2, 2,
	2, 5052, 5055, 3, 2, 2, 2, 5053, 5051, 3, 2, 2, 2, 5053, 5054, 3, 2, 2,
	2, 5054, 437, 3, 2, 2, 2, 5055, 5053, 3, 2, 2, 2, 5056, 5057, 7, 344, 2,
	2, 5057, 5058, 7, 163, 2, 2, 5058, 5060, 5, 570, 286, 2, 5059, 5061, 9,
	68, 2, 2, 5060, 5059, 3, 2, 2, 2, 5060, 5061, 3, 2, 2, 2, 5061, 439, 3,
	2, 2, 2, 5062, 5064, 7, 114, 2, 2, 5063, 5065, 9, 67, 2, 2, 5064, 5063,
	3, 2, 2, 2, 5064, 5065, 3, 2, 2, 2, 5065, 5066, 3, 2, 2, 2, 5066, 5067,
	9, 69, 2, 2, 5067, 5068, 5, 570, 286, 2, 5068, 441, 3, 2, 2, 2, 5069, 5071,
	7, 550, 2, 2, 5070, 5072, 9, 67, 2, 2, 5071, 5070, 3, 2, 2, 2, 5071, 5072,
	3, 2, 2, 2, 5072, 5073, 3, 2, 2, 2, 5073, 5074, 7, 163, 2, 2, 5074, 5076,
	5, 570, 286, 2, 5075, 5077, 7, 539, 2, 2, 5076, 5075, 3, 2, 2, 2, 5076,
	5077, 3, 2, 2, 2, 5077, 5079, 3, 2, 2, 2, 5078, 5080, 7, 406, 2, 2, 5079,
	5078, 3, 2, 2, 2, 5079, 5080, 3, 2, 2, 2, 5080, 5082, 3, 2, 2, 2, 5081,
	5083, 7, 632, 2, 2, 5082, 5081, 3, 2, 2, 2, 5082, 5083, 3, 2, 2, 2, 5083,
	443, 3, 2, 2, 2, 5084, 5085, 7, 64, 2, 2, 5085, 5092, 7, 630, 2, 2, 5086,
	5092, 7, 539, 2, 2, 5087, 5092, 7, 408, 2, 2, 5088, 5092, 7, 484, 2, 2,
	5089, 5092, 7, 406, 2, 2, 5090, 5092, 7, 342, 2, 2, 5091, 5084, 3, 2, 2,
	2, 5091, 5086, 3, 2, 2, 2, 5091, 5087, 3, 2, 2, 2, 5091, 5088, 3, 2, 2,
	2, 5091, 5089, 3, 2, 2, 2, 5091, 5090, 3, 2, 2, 2, 5092, 445, 3, 2, 2,
	2, 5093, 5095, 7, 34, 2, 2, 5094, 5096, 7, 323, 2, 2, 5095, 5094, 3, 2,
	2, 2, 5095, 5096, 3, 2, 2, 2, 5096, 5097, 3, 2, 2, 2, 5097, 5098, 7, 420,
	2, 2, 5098, 5099, 5, 536, 269, 2, 5099, 5100, 7, 563, 2, 2, 5100, 5101,
	9, 70, 2, 2, 5101, 5102, 7, 585, 2, 2, 5102, 5103, 7, 1101, 2, 2, 5103,
	447, 3, 2, 2, 2, 5104, 5105, 7, 437, 2, 2, 5105, 5106, 7, 525, 2, 2, 5106,
	5107, 5, 536, 269, 2, 5107, 5108, 7, 585, 2, 2, 5108, 5109, 7, 1101, 2,
	2, 5109, 449, 3, 2, 2, 2, 5110, 5111, 7, 627, 2, 2, 5111, 5112, 7, 525,
	2, 2, 5112, 5113, 5, 536, 269, 2, 5113, 451, 3, 2, 2, 2, 5114, 5115, 7,
	147, 2, 2, 5115, 5116, 5, 456, 229, 2, 5116, 5117, 9, 71, 2, 2, 5117, 5125,
	5, 634, 318, 2, 5118, 5119, 7, 1088, 2, 2, 5119, 5120, 5, 456, 229, 2,
	5120, 5121, 9, 71, 2, 2, 5121, 5122, 5, 634, 318, 2, 5122, 5124, 3, 2,
	2, 2, 5123, 5118, 3, 2, 2, 2, 5124, 5127, 3, 2, 2, 2, 5125, 5123, 3, 2,
	2, 2, 5125, 5126, 3, 2, 2, 2, 5126, 5162, 3, 2, 2, 2, 5127, 5125, 3, 2,
	2, 2, 5128, 5129, 7, 147, 2, 2, 5129, 5132, 5, 52, 27, 2, 5130, 5133, 5,
	522, 262, 2, 5131, 5133, 7, 42, 2, 2, 5132, 5130, 3, 2, 2, 2, 5132, 5131,
	3, 2, 2, 2, 5133, 5162, 3, 2, 2, 2, 5134, 5135, 7, 147, 2, 2, 5135, 5142,
	7, 497, 2, 2, 5136, 5139, 5, 522, 262, 2, 5137, 5138, 7, 28, 2, 2, 5138,
	5140, 5, 524, 263, 2, 5139, 5137, 3, 2, 2, 2, 5139, 5140, 3, 2, 2, 2, 5140,
	5143, 3, 2, 2, 2, 5141, 5143, 7, 42, 2, 2, 5142, 5136, 3, 2, 2, 2, 5142,
	5141, 3, 2, 2, 2, 5143, 5162, 3, 2, 2, 2, 5144, 5162, 5, 412, 207, 2, 5145,
	5162, 5, 286, 144, 2, 5146, 5162, 5, 284, 143, 2, 5147, 5148, 7, 147, 2,
	2, 5148, 5149, 5, 510, 256, 2, 5149, 5150, 9, 71, 2, 2, 5150, 5158, 5,
	634, 318, 2, 5151, 5152, 7, 1088, 2, 2, 5152, 5153, 5, 510, 256, 2, 5153,
	5154, 9, 71, 2, 2, 5154, 5155, 5, 634, 318, 2, 5155, 5157, 3, 2, 2, 2,
	5156, 5151, 3, 2, 2, 2, 5157, 5160, 3, 2, 2, 2, 5158, 5156, 3, 2, 2, 2,
	5158, 5159, 3, 2, 2, 2, 5159, 5162, 3, 2, 2, 2, 5160, 5158, 3, 2, 2, 2,
	5161, 5114, 3, 2, 2, 2, 5161, 5128, 3, 2, 2, 2, 5161, 5134, 3, 2, 2, 2,
	5161, 5144, 3, 2, 2, 2, 5161, 5145, 3, 2, 2, 2, 5161, 5146, 3, 2, 2, 2,
	5161, 5147, 3, 2, 2, 2, 5162, 453, 3, 2, 2, 2, 5163, 5164, 7, 149, 2, 2,
	5164, 5165, 9, 53, 2, 2, 5165, 5315, 7, 456, 2, 2, 5166, 5167, 7, 149,
	2, 2, 5167, 5168, 9, 72, 2, 2, 5168, 5171, 7, 400, 2, 2, 5169, 5170, 7,
	78, 2, 2, 5170, 5172, 7, 1101, 2, 2, 5171, 5169, 3, 2, 2, 2, 5171, 5172,
	3, 2, 2, 2, 5172, 5175, 3, 2, 2, 2, 5173, 5174, 7, 67, 2, 2, 5174, 5176,
	5, 542, 272, 2, 5175, 5173, 3, 2, 2, 2, 5175, 5176, 3, 2, 2, 2, 5176, 5184,
	3, 2, 2, 2, 5177, 5181, 7, 96, 2, 2, 5178, 5179, 5, 542, 272, 2, 5179,
	5180, 7, 1088, 2, 2, 5180, 5182, 3, 2, 2, 2, 5181, 5178, 3, 2, 2, 2, 5181,
	5182, 3, 2, 2, 2, 5182, 5183, 3, 2, 2, 2, 5183, 5185, 5, 542, 272, 2, 5184,
	5177, 3, 2, 2, 2, 5184, 5185, 3, 2, 2, 2, 5185, 5315, 3, 2, 2, 2, 5186,
	5187, 7, 149, 2, 2, 5187, 5189, 5, 458, 230, 2, 5188, 5190, 5, 460, 231,
	2, 5189, 5188, 3, 2, 2, 2, 5189, 5190, 3, 2, 2, 2, 5190, 5315, 3, 2, 2,
	2, 5191, 5193, 7, 149, 2, 2, 5192, 5194, 7, 419, 2, 2, 5193, 5192, 3, 2,
	2, 2, 5193, 5194, 3, 2, 2, 2, 5194, 5195, 3, 2, 2, 2, 5195, 5196, 9, 39,
	2, 2, 5196, 5197, 9, 73, 2, 2, 5197, 5200, 5, 512, 257, 2, 5198, 5199,
	9, 73, 2, 2, 5199, 5201, 5, 536, 269, 2, 5200, 5198, 3, 2, 2, 2, 5200,
	5201, 3, 2, 2, 2, 5201, 5203, 3, 2, 2, 2, 5202, 5204, 5, 460, 231, 2, 5203,
	5202, 3, 2, 2, 2, 5203, 5204, 3, 2, 2, 2, 5204, 5315, 3, 2, 2, 2, 5205,
	5206, 7, 149, 2, 2, 5206, 5207, 7, 34, 2, 2, 5207, 5209, 9, 2, 2, 2, 5208,
	5210, 5, 592, 297, 2, 5209, 5208, 3, 2, 2, 2, 5209, 5210, 3, 2, 2, 2, 5210,
	5211, 3, 2, 2, 2, 5211, 5315, 5, 536, 269, 2, 5212, 5213, 7, 149, 2, 2,
	5213, 5214, 7, 34, 2, 2, 5214, 5215, 9, 74, 2, 2, 5215, 5315, 5, 510, 256,
	2, 5216, 5217, 7, 149, 2, 2, 5217, 5218, 7, 34, 2, 2, 5218, 5219, 7, 631,
	2, 2, 5219, 5315, 5, 518, 260, 2, 5220, 5221, 7, 149, 2, 2, 5221, 5222,
	7, 393, 2, 2, 5222, 5223, 5, 526, 264, 2, 5223, 5224, 9, 75, 2, 2, 5224,
	5315, 3, 2, 2, 2, 5225, 5226, 7, 149, 2, 2, 5226, 5315, 5, 462, 232, 2,
	5227, 5228, 7, 149, 2, 2, 5228, 5229, 9, 76, 2, 2, 5229, 5233, 7, 96, 2,
	2, 5230, 5231, 5, 542, 272, 2, 5231, 5232, 7, 1088, 2, 2, 5232, 5234, 3,
	2, 2, 2, 5233, 5230, 3, 2, 2, 2, 5233, 5234, 3, 2, 2, 2, 5234, 5235, 3,
	2, 2, 2, 5235, 5315, 5, 542, 272, 2, 5236, 5237, 7, 149, 2, 2, 5237, 5238,
	7, 278, 2, 2, 5238, 5239, 7, 1086, 2, 2, 5239, 5240, 7, 1070, 2, 2, 5240,
	5241, 7, 1087, 2, 2, 5241, 5315, 9, 76, 2, 2, 5242, 5243, 7, 149, 2, 2,
	5243, 5246, 5, 464, 233, 2, 5244, 5245, 9, 73, 2, 2, 5245, 5247, 5, 536,
	269, 2, 5246, 5244, 3, 2, 2, 2, 5246, 5247, 3, 2, 2, 2, 5247, 5249, 3,
	2, 2, 2, 5248, 5250, 5, 460, 231, 2, 5249, 5248, 3, 2, 2, 2, 5249, 5250,
	3, 2, 2, 2, 5250, 5315, 3, 2, 2, 2, 5251, 5252, 7, 149, 2, 2, 5252, 5253,
	9, 77, 2, 2, 5253, 5254, 7, 351, 2, 2, 5254, 5315, 5, 510, 256, 2, 5255,
	5256, 7, 149, 2, 2, 5256, 5259, 7, 423, 2, 2, 5257, 5258, 7, 64, 2, 2,
	5258, 5260, 5, 518, 260, 2, 5259, 5257, 3, 2, 2, 2, 5259, 5260, 3, 2, 2,
	2, 5260, 5315, 3, 2, 2, 2, 5261, 5262, 7, 149, 2, 2, 5262, 5263, 9, 78,
	2, 2, 5263, 5264, 9, 73, 2, 2, 5264, 5267, 5, 512, 257, 2, 5265, 5266,
	9, 73, 2, 2, 5266, 5268, 5, 536, 269, 2, 5267, 5265, 3, 2, 2, 2, 5267,
	5268, 3, 2, 2, 2, 5268, 5271, 3, 2, 2, 2, 5269, 5270, 7, 181, 2, 2, 5270,
	5272, 5, 634, 318, 2, 5271, 5269, 3, 2, 2, 2, 5271, 5272, 3, 2, 2, 2, 5272,
	5315, 3, 2, 2, 2, 5273, 5274, 7, 149, 2, 2, 5274, 5275, 7, 513, 2, 2, 5275,
	5278, 7, 662, 2, 2, 5276, 5277, 9, 73, 2, 2, 5277, 5279, 5, 536, 269, 2,
	5278, 5276, 3, 2, 2, 2, 5278, 5279, 3, 2, 2, 2, 5279, 5281, 3, 2, 2, 2,
	5280, 5282, 5, 460, 231, 2, 5281, 5280, 3, 2, 2, 2, 5281, 5282, 3, 2, 2,
	2, 5282, 5315, 3, 2, 2, 2, 5283, 5284, 7, 149, 2, 2, 5284, 5285, 7, 535,
	2, 2, 5285, 5290, 5, 466, 234, 2, 5286, 5287, 7, 1088, 2, 2, 5287, 5289,
	5, 466, 234, 2, 5288, 5286, 3, 2, 2, 2, 5289, 5292, 3, 2, 2, 2, 5290, 5288,
	3, 2, 2, 2, 5290, 5291, 3, 2, 2, 2, 5291, 5296, 3, 2, 2, 2, 5292, 5290,
	3, 2, 2, 2, 5293, 5294, 7, 64, 2, 2, 5294, 5295, 7, 538, 2, 2, 5295, 5297,
	5, 542, 272, 2, 5296, 5293, 3, 2, 2, 2, 5296, 5297, 3, 2, 2, 2, 5297, 5298,
	3, 2, 2, 2, 5298, 5302, 7, 96, 2, 2, 5299, 5300, 5, 542, 272, 2, 5300,
	5301, 7, 1088, 2, 2, 5301, 5303, 3, 2, 2, 2, 5302, 5299, 3, 2, 2, 2, 5302,
	5303, 3, 2, 2, 2, 5303, 5304, 3, 2, 2, 2, 5304, 5305, 5, 542, 272, 2, 5305,
	5315, 3, 2, 2, 2, 5306, 5307, 7, 149, 2, 2, 5307, 5308, 7, 580, 2, 2, 5308,
	5312, 7, 600, 2, 2, 5309, 5310, 7, 64, 2, 2, 5310, 5311, 7, 343, 2, 2,
	5311, 5313, 7, 1101, 2, 2, 5312, 5309, 3, 2, 2, 2, 5312, 5313, 3, 2, 2,
	2, 5313, 5315, 3, 2, 2, 2, 5314, 5163, 3, 2, 2, 2, 5314, 5166, 3, 2, 2,
	2, 5314, 5186, 3, 2, 2, 2, 5314, 5191, 3, 2, 2, 2, 5314, 5205, 3, 2, 2,
	2, 5314, 5212, 3, 2, 2, 2, 5314, 5216, 3, 2, 2, 2, 5314, 5220, 3, 2, 2,
	2, 5314, 5225, 3, 2, 2, 2, 5314, 5227, 3, 2, 2, 2, 5314, 5236, 3, 2, 2,
	2, 5314, 5242, 3, 2, 2, 2, 5314, 5251, 3, 2, 2, 2, 5314, 5255, 3, 2, 2,
	2, 5314, 5261, 3, 2, 2, 2, 5314, 5273, 3, 2, 2, 2, 5314, 5283, 3, 2, 2,
	2, 5314, 5306, 3, 2, 2, 2, 5315, 455, 3, 2, 2, 2, 5316, 5327, 7, 1113,
	2, 2, 5317, 5327, 7, 1114, 2, 2, 5318, 5319, 7, 1090, 2, 2, 5319, 5321,
	7, 1090, 2, 2, 5320, 5318, 3, 2, 2, 2, 5320, 5321, 3, 2, 2, 2, 5321, 5322,
	3, 2, 2, 2, 5322, 5324, 9, 79, 2, 2, 5323, 5320, 3, 2, 2, 2, 5323, 5324,
	3, 2, 2, 2, 5324, 5325, 3, 2, 2, 2, 5325, 5327, 5, 536, 269, 2, 5326, 5316,
	3, 2, 2, 2, 5326, 5317, 3, 2, 2, 2, 5326, 5323, 3, 2, 2, 2, 5327, 457,
	3, 2, 2, 2, 5328, 5329, 7, 26, 2, 2, 5329, 5342, 7, 147, 2, 2, 5330, 5342,
	7, 801, 2, 2, 5331, 5342, 7, 40, 2, 2, 5332, 5342, 7, 145, 2, 2, 5333,
	5334, 7, 420, 2, 2, 5334, 5342, 7, 600, 2, 2, 5335, 5336, 7, 125, 2, 2,
	5336, 5342, 7, 600, 2, 2, 5337, 5339, 9, 52, 2, 2, 5338, 5337, 3, 2, 2,
	2, 5338, 5339, 3, 2, 2, 2, 5339, 5340, 3, 2, 2, 2, 5340, 5342, 9, 80, 2,
	2, 5341, 5328, 3, 2, 2, 2, 5341, 5330, 3, 2, 2, 2, 5341, 5331, 3, 2, 2,
	2, 5341, 5332, 3, 2, 2, 2, 5341, 5333, 3, 2, 2, 2, 5341, 5335, 3, 2, 2,
	2, 5341, 5338, 3, 2, 2, 2, 5342, 459, 3, 2, 2, 2, 5343, 5344, 7, 95, 2,
	2, 5344, 5348, 7, 1101, 2, 2, 5345, 5346, 7, 181, 2, 2, 5346, 5348, 5,
	634, 318, 2, 5347, 5343, 3, 2, 2, 2, 5347, 5345, 3, 2, 2, 2, 5348, 461,
	3, 2, 2, 2, 5349, 5351, 7, 602, 2, 2, 5350, 5349, 3, 2, 2, 2, 5350, 5351,
	3, 2, 2, 2, 5351, 5352, 3, 2, 2, 2, 5352, 5367, 7, 394, 2, 2, 5353, 5354,
	7, 457, 2, 2, 5354, 5367, 7, 600, 2, 2, 5355, 5367, 7, 527, 2, 2, 5356,
	5367, 7, 670, 2, 2, 5357, 5359, 7, 419, 2, 2, 5358, 5357, 3, 2, 2, 2, 5358,
	5359, 3, 2, 2, 2, 5359, 5360, 3, 2, 2, 2, 5360, 5367, 7, 534, 2, 2, 5361,
	5367, 7, 536, 2, 2, 5362, 5363, 7, 580, 2, 2, 5363, 5367, 7, 429, 2, 2,
	5364, 5367, 7, 327, 2, 2, 5365, 5367, 7, 370, 2, 2, 5366, 5350, 3, 2, 2,
	2, 5366, 5353, 3, 2, 2, 2, 5366, 5355, 3, 2, 2, 2, 5366, 5356, 3, 2, 2,
	2, 5366, 5358, 3, 2, 2, 2, 5366, 5361, 3, 2, 2, 2, 5366, 5362, 3, 2, 2,
	2, 5366, 5364, 3, 2, 2, 2, 5366, 5365, 3, 2, 2, 2, 5367, 463, 3, 2, 2,
	2, 5368, 5377, 7, 400, 2, 2, 5369, 5370, 7, 163, 2, 2, 5370, 5377, 7, 600,
	2, 2, 5371, 5373, 7, 419, 2, 2, 5372, 5371, 3, 2, 2, 2, 5372, 5373, 3,
	2, 2, 2, 5373, 5374, 3, 2, 2, 2, 5374, 5377, 7, 662, 2, 2, 5375, 5377,
	7, 621, 2, 2, 5376, 5368, 3, 2, 2, 2, 5376, 5369, 3, 2, 2, 2, 5376, 5372,
	3, 2, 2, 2, 5376, 5375, 3, 2, 2, 2, 5377, 465, 3, 2, 2, 2, 5378, 5391,
	7, 8, 2, 2, 5379, 5380, 7, 335, 2, 2, 5380, 5391, 7, 441, 2, 2, 5381, 5382,
	7, 369, 2, 2, 5382, 5391, 7, 611, 2, 2, 5383, 5391, 7, 372, 2, 2, 5384,
	5391, 7, 443, 2, 2, 5385, 5391, 7, 749, 2, 2, 5386, 5387, 7, 518, 2, 2,
	5387, 5391, 7, 409, 2, 2, 5388, 5391, 7, 587, 2, 2, 5389, 5391, 7, 610,
	2, 2, 5390, 5378, 3, 2, 2, 2, 5390, 5379, 3, 2, 2, 2, 5390, 5381, 3, 2,
	2, 2, 5390, 5383, 3, 2, 2, 2, 5390, 5384, 3, 2, 2, 2, 5390, 5385, 3, 2,
	2, 2, 5390, 5386, 3, 2, 2, 2, 5390, 5388, 3, 2, 2, 2, 5390, 5389, 3, 2,
	2, 2, 5391, 467, 3, 2, 2, 2, 5392, 5393, 7, 333, 2, 2, 5393, 5394, 7, 1101,
	2, 2, 5394, 469, 3, 2, 2, 2, 5395, 5396, 7, 339, 2, 2, 5396, 5397, 7, 79,
	2, 2, 5397, 5402, 5, 482, 242, 2, 5398, 5399, 7, 1088, 2, 2, 5399, 5401,
	5, 482, 242, 2, 5400, 5398, 3, 2, 2, 2, 5401, 5404, 3, 2, 2, 2, 5402, 5400,
	3, 2, 2, 2, 5402, 5403, 3, 2, 2, 2, 5403, 5412, 3, 2, 2, 2, 5404, 5402,
	3, 2, 2, 2, 5405, 5406, 7, 123, 2, 2, 5406, 5409, 7, 1086, 2, 2, 5407,
	5410, 5, 568, 285, 2, 5408, 5410, 7, 8, 2, 2, 5409, 5407, 3, 2, 2, 2, 5409,
	5408, 3, 2, 2, 2, 5410, 5411, 3, 2, 2, 2, 5411, 5413, 7, 1087, 2, 2, 5412,
	5405, 3, 2, 2, 2, 5412, 5413, 3, 2, 2, 2, 5413, 5414, 3, 2, 2, 2, 5414,
	5415, 7, 78, 2, 2, 5415, 5416, 5, 536, 269, 2, 5416, 471, 3, 2, 2, 2, 5417,
	5419, 7, 415, 2, 2, 5418, 5420, 9, 67, 2, 2, 5419, 5418, 3, 2, 2, 2, 5419,
	5420, 3, 2, 2, 2, 5420, 5421, 3, 2, 2, 2, 5421, 5426, 5, 484, 243, 2, 5422,
	5423, 7, 1088, 2, 2, 5423, 5425, 5, 484, 243, 2, 5424, 5422, 3, 2, 2, 2,
	5425, 5428, 3, 2, 2, 2, 5426, 5424, 3, 2, 2, 2, 5426, 5427, 3, 2, 2, 2,
	5427, 473, 3, 2, 2, 2, 5428, 5426, 3, 2, 2, 2, 5429, 5431, 7, 91, 2, 2,
	5430, 5432, 9, 81, 2, 2, 5431, 5430, 3, 2, 2, 2, 5431, 5432, 3, 2, 2, 2,
	5432, 5434, 3, 2, 2, 2, 5433, 5435, 5, 542, 272, 2, 5434, 5433, 3, 2, 2,
	2, 5435, 5436, 3, 2, 2, 2, 5436, 5434, 3, 2, 2, 2, 5436, 5437, 3, 2, 2,
	2, 5437, 475, 3, 2, 2, 2, 5438, 5439, 7, 99, 2, 2, 5439, 5440, 7, 79, 2,
	2, 5440, 5441, 7, 85, 2, 2, 5441, 5442, 7, 339, 2, 2, 5442, 5447, 5, 488,
	245, 2, 5443, 5444, 7, 1088, 2, 2, 5444, 5446, 5, 488, 245, 2, 5445, 5443,
	3, 2, 2, 2, 5446, 5449, 3, 2, 2, 2, 5447, 5445, 3, 2, 2, 2, 5447, 5448,
	3, 2, 2, 2, 5448, 477, 3, 2, 2, 2, 5449, 5447, 3, 2, 2, 2, 5450, 5451,
	7, 559, 2, 2, 5451, 5452, 7, 538, 2, 2, 5452, 5453, 7, 339, 2, 2, 5453,
	479, 3, 2, 2, 2, 5454, 5455, 7, 668, 2, 2, 5455, 481, 3, 2, 2, 2, 5456,
	5464, 5, 512, 257, 2, 5457, 5459, 9, 20, 2, 2, 5458, 5457, 3, 2, 2, 2,
	5458, 5459, 3, 2, 2, 2, 5459, 5460, 3, 2, 2, 2, 5460, 5461, 7, 1086, 2,
	2, 5461, 5462, 5, 568, 285, 2, 5462, 5463, 7, 1087, 2, 2, 5463, 5465, 3,
	2, 2, 2, 5464, 5458, 3, 2, 2, 2, 5464, 5465, 3, 2, 2, 2, 5465, 483, 3,
	2, 2, 2, 5466, 5485, 7, 380, 2, 2, 5467, 5485, 7, 429, 2, 2, 5468, 5470,
	9, 82, 2, 2, 5469, 5468, 3, 2, 2, 2, 5469, 5470, 3, 2, 2, 2, 5470, 5471,
	3, 2, 2, 2, 5471, 5485, 7, 456, 2, 2, 5472, 5485, 7, 514, 2, 2, 5473, 5485,
	7, 670, 2, 2, 5474, 5475, 7, 538, 2, 2, 5475, 5485, 7, 339, 2, 2, 5476,
	5485, 7, 600, 2, 2, 5477, 5485, 7, 633, 2, 2, 5478, 5482, 7, 662, 2, 2,
	5479, 5480, 7, 183, 2, 2, 5480, 5481, 7, 128, 2, 2, 5481, 5483, 7, 100,
	2, 2, 5482, 5479, 3, 2, 2, 2, 5482, 5483, 3, 2, 2, 2, 5483, 5485, 3, 2,
	2, 2, 5484, 5466, 3, 2, 2, 2, 5484, 5467, 3, 2, 2, 2, 5484, 5469, 3, 2,
	2, 2, 5484, 5472, 3, 2, 2, 2, 5484, 5473, 3, 2, 2, 2, 5484, 5474, 3, 2,
	2, 2, 5484, 5476, 3, 2, 2, 2, 5484, 5477, 3, 2, 2, 2, 5484, 5478, 3, 2,
	2, 2, 5485, 5497, 3, 2, 2, 2, 5486, 5487, 7, 544, 2, 2, 5487, 5489, 7,
	456, 2, 2, 5488, 5490, 5, 324, 163, 2, 5489, 5488, 3, 2, 2, 2, 5489, 5490,
	3, 2, 2, 2, 5490, 5497, 3, 2, 2, 2, 5491, 5492, 7, 662, 2, 2, 5492, 5494,
	5, 570, 286, 2, 5493, 5495, 5, 486, 244, 2, 5494, 5493, 3, 2, 2, 2, 5494,
	5495, 3, 2, 2, 2, 5495, 5497, 3, 2, 2, 2, 5496, 5484, 3, 2, 2, 2, 5496,
	5486, 3, 2, 2, 2, 5496, 5491, 3, 2, 2, 2, 5497, 485, 3, 2, 2, 2, 5498,
	5499, 7, 183, 2, 2, 5499, 5500, 7, 128, 2, 2, 5500, 5504, 7, 100, 2, 2,
	5501, 5502, 7, 64, 2, 2, 5502, 5504, 7, 405, 2, 2, 5503, 5498, 3, 2, 2,
	2, 5503, 5501, 3, 2, 2, 2, 5504, 487, 3, 2, 2, 2, 5505, 5513, 5, 512, 257,
	2, 5506, 5507, 7, 123, 2, 2, 5507, 5510, 7, 1086, 2, 2, 5508, 5511, 5,
	568, 285, 2, 5509, 5511, 7, 8, 2, 2, 5510, 5508, 3, 2, 2, 2, 5510, 5509,
	3, 2, 2, 2, 5511, 5512, 3, 2, 2, 2, 5512, 5514, 7, 1087, 2, 2, 5513, 5506,
	3, 2, 2, 2, 5513, 5514, 3, 2, 2, 2, 5514, 5522, 3, 2, 2, 2, 5515, 5517,
	9, 20, 2, 2, 5516, 5515, 3, 2, 2, 2, 5516, 5517, 3, 2, 2, 2, 5517, 5518,
	3, 2, 2, 2, 5518, 5519, 7, 1086, 2, 2, 5519, 5520, 5, 568, 285, 2, 5520,
	5521, 7, 1087, 2, 2, 5521, 5523, 3, 2, 2, 2, 5522, 5516, 3, 2, 2, 2, 5522,
	5523, 3, 2, 2, 2, 5523, 5526, 3, 2, 2, 2, 5524, 5525, 7, 77, 2, 2, 5525,
	5527, 7, 450, 2, 2, 5526, 5524, 3, 2, 2, 2, 5526, 5527, 3, 2, 2, 2, 5527,
	489, 3, 2, 2, 2, 5528, 5529, 9, 83, 2, 2, 5529, 5532, 5, 512, 257, 2, 5530,
	5533, 5, 536, 269, 2, 5531, 5533, 7, 1101, 2, 2, 5532, 5530, 3, 2, 2, 2,
	5532, 5531, 3, 2, 2, 2, 5532, 5533, 3, 2, 2, 2, 5533, 491, 3, 2, 2, 2,
	5534, 5538, 9, 83, 2, 2, 5535, 5536, 9, 84, 2, 2, 5536, 5537, 7, 1077,
	2, 2, 5537, 5539, 9, 85, 2, 2, 5538, 5535, 3, 2, 2, 2, 5538, 5539, 3, 2,
	2, 2, 5539, 5540, 3, 2, 2, 2, 5540, 5541, 5, 508, 255, 2, 5541, 493, 3,
	2, 2, 2, 5542, 5543, 7, 427, 2, 2, 5543, 5544, 7, 1101, 2, 2, 5544, 495,
	3, 2, 2, 2, 5545, 5546, 7, 177, 2, 2, 5546, 5547, 5, 536, 269, 2, 5547,
	497, 3, 2, 2, 2, 5548, 5556, 7, 150, 2, 2, 5549, 5551, 7, 154, 2, 2, 5550,
	5552, 7, 635, 2, 2, 5551, 5550, 3, 2, 2, 2, 5551, 5552, 3, 2, 2, 2, 5552,
	5553, 3, 2, 2, 2, 5553, 5557, 5, 546, 274, 2, 5554, 5557, 7, 1109, 2, 2,
	5555, 5557, 7, 1110, 2, 2, 5556, 5549, 3, 2, 2, 2, 5556, 5554, 3, 2, 2,
	2, 5556, 5555, 3, 2, 2, 2, 5557, 5567, 3, 2, 2, 2, 5558, 5559, 7, 147,
	2, 2, 5559, 5564, 5, 502, 252, 2, 5560, 5561, 7, 1088, 2, 2, 5561, 5563,
	5, 502, 252, 2, 5562, 5560, 3, 2, 2, 2, 5563, 5566, 3, 2, 2, 2, 5564, 5562,
	3, 2, 2, 2, 5564, 5565, 3, 2, 2, 2, 5565, 5568, 3, 2, 2, 2, 5566, 5564,
	3, 2, 2, 2, 5567, 5558, 3, 2, 2, 2, 5567, 5568, 3, 2, 2, 2, 5568, 499,
	3, 2, 2, 2, 5569, 5577, 7, 137, 2, 2, 5570, 5572, 7, 154, 2, 2, 5571, 5573,
	7, 635, 2, 2, 5572, 5571, 3, 2, 2, 2, 5572, 5573, 3, 2, 2, 2, 5573, 5574,
	3, 2, 2, 2, 5574, 5578, 5, 546, 274, 2, 5575, 5578, 7, 1109, 2, 2, 5576,
	5578, 7, 1110, 2, 2, 5577, 5570, 3, 2, 2, 2, 5577, 5575, 3, 2, 2, 2, 5577,
	5576, 3, 2, 2, 2, 5577, 5578, 3, 2, 2, 2, 5578, 5588, 3, 2, 2, 2, 5579,
	5580, 7, 147, 2, 2, 5580, 5585, 5, 502, 252, 2, 5581, 5582, 7, 1088, 2,
	2, 5582, 5584, 5, 502, 252, 2, 5583, 5581, 3, 2, 2, 2, 5584, 5587, 3, 2,
	2, 2, 5585, 5583, 3, 2, 2, 2, 5585, 5586, 3, 2, 2, 2, 5586, 5589, 3, 2,
	2, 2, 5587, 5585, 3, 2, 2, 2, 5588, 5579, 3, 2, 2, 2, 5588, 5589, 3, 2,
	2, 2, 5589, 501, 3, 2, 2, 2, 5590, 5591, 9, 86, 2, 2, 5591, 5596, 7, 1077,
	2, 2, 5592, 5597, 5, 546, 274, 2, 5593, 5597, 7, 1102, 2, 2, 5594, 5597,
	5, 520, 261, 2, 5595, 5597, 5, 538, 270, 2, 5596, 5592, 3, 2, 2, 2, 5596,
	5593, 3, 2, 2, 2, 5596, 5594, 3, 2, 2, 2, 5596, 5595, 3, 2, 2, 2, 5597,
	503, 3, 2, 2, 2, 5598, 5600, 7, 70, 2, 2, 5599, 5601, 9, 87, 2, 2, 5600,
	5599, 3, 2, 2, 2, 5600, 5601, 3, 2, 2, 2, 5601, 5602, 3, 2, 2, 2, 5602,
	5634, 7, 48, 2, 2, 5603, 5604, 5, 456, 229, 2, 5604, 5605, 7, 1077, 2,
	2, 5605, 5613, 9, 88, 2, 2, 5606, 5607, 7, 1088, 2, 2, 5607, 5608, 5, 456,
	229, 2, 5608, 5609, 7, 1077, 2, 2, 5609, 5610, 9, 88, 2, 2, 5610, 5612,
	3, 2, 2, 2, 5611, 5606, 3, 2, 2, 2, 5612, 5615, 3, 2, 2, 2, 5613, 5611,
	3, 2, 2, 2, 5613, 5614, 3, 2, 2, 2, 5614, 5635, 3, 2, 2, 2, 5615, 5613,
	3, 2, 2, 2, 5616, 5619, 7, 30, 2, 2, 5617, 5620, 5, 542, 272, 2, 5618,
	5620, 5, 456, 229, 2, 5619, 5617, 3, 2, 2, 2, 5619, 5618, 3, 2, 2, 2, 5620,
	5621, 3, 2, 2, 2, 5621, 5622, 5, 456, 229, 2, 5622, 5623, 7, 1077, 2, 2,
	5623, 5631, 5, 506, 254, 2, 5624, 5625, 7, 1088, 2, 2, 5625, 5626, 5, 456,
	229, 2, 5626, 5627, 7, 1077, 2, 2, 5627, 5628, 5, 506, 254, 2, 5628, 5630,
	3, 2, 2, 2, 5629, 5624, 3, 2, 2, 2, 5630, 5633, 3, 2, 2, 2, 5631, 5629,
	3, 2, 2, 2, 5631, 5632, 3, 2, 2, 2, 5632, 5635, 3, 2, 2, 2, 5633, 5631,
	3, 2, 2, 2, 5634, 5603, 3, 2, 2, 2, 5634, 5616, 3, 2, 2, 2, 5635, 505,
	3, 2, 2, 2, 5636, 5637, 9, 89, 2, 2, 5637, 507, 3, 2, 2, 2, 5638, 5644,
	5, 184, 93, 2, 5639, 5644, 5, 170, 86, 2, 5640, 5644, 5, 176, 89, 2, 5641,
	5644, 5, 182, 92, 2, 5642, 5644, 5, 186, 94, 2, 5643, 5638, 3, 2, 2, 2,
	5643, 5639, 3, 2, 2, 2, 5643, 5640, 3, 2, 2, 2, 5643, 5641, 3, 2, 2, 2,
	5643, 5642, 3, 2, 2, 2, 5644, 5649, 3, 2, 2, 2, 5645, 5646, 7, 64, 2, 2,
	5646, 5647, 7, 363, 2, 2, 5647, 5649, 5, 536, 269, 2, 5648, 5643, 3, 2,
	2, 2, 5648, 5645, 3, 2, 2, 2, 5649, 509, 3, 2, 2, 2, 5650, 5654, 5, 536,
	269, 2, 5651, 5655, 7, 1108, 2, 2, 5652, 5653, 7, 1085, 2, 2, 5653, 5655,
	5, 536, 269, 2, 5654, 5651, 3, 2, 2, 2, 5654, 5652, 3, 2, 2, 2, 5654, 5655,
	3, 2, 2, 2, 5655, 511, 3, 2, 2, 2, 5656, 5657, 5, 510, 256, 2, 5657, 513,
	3, 2, 2, 2, 5658, 5663, 5, 536, 269, 2, 5659, 5661, 5, 540, 271, 2, 5660,
	5662, 5, 540, 271, 2, 5661, 5660, 3, 2, 2, 2, 5661, 5662, 3, 2, 2, 2, 5662,
	5664, 3, 2, 2, 2, 5663, 5659, 3, 2, 2, 2, 5663, 5664, 3, 2, 2, 2, 5664,
	5671, 3, 2, 2, 2, 5665, 5666, 11, 2, 2, 2, 5666, 5668, 5, 540, 271, 2,
	5667, 5669, 5, 540, 271, 2, 5668, 5667, 3, 2, 2, 2, 5668, 5669, 3, 2, 2,
	2, 5669, 5671, 3, 2, 2, 2, 5670, 5658, 3, 2, 2, 2, 5670, 5665, 3, 2, 2,
	2, 5671, 515, 3, 2, 2, 2, 5672, 5675, 5, 536, 269, 2, 5673, 5675, 7, 1101,
	2, 2, 5674, 5672, 3, 2, 2, 2, 5674, 5673, 3, 2, 2, 2, 5675, 5680, 3, 2,
	2, 2, 5676, 5677, 7, 1086, 2, 2, 5677, 5678, 5, 542, 272, 2, 5678, 5679,
	7, 1087, 2, 2, 5679, 5681, 3, 2, 2, 2, 5680, 5676, 3, 2, 2, 2, 5680, 5681,
	3, 2, 2, 2, 5681, 5684, 3, 2, 2, 2, 5682, 5684, 5, 634, 318, 2, 5683, 5674,
	3, 2, 2, 2, 5683, 5682, 3, 2, 2, 2, 5684, 5686, 3, 2, 2, 2, 5685, 5687,
	9, 46, 2, 2, 5686, 5685, 3, 2, 2, 2, 5686, 5687, 3, 2, 2, 2, 5687, 517,
	3, 2, 2, 2, 5688, 5689, 9, 90, 2, 2, 5689, 519, 3, 2, 2, 2, 5690, 5691,
	9, 91, 2, 2, 5691, 521, 3, 2, 2, 2, 5692, 5697, 7, 217, 2, 2, 5693, 5697,
	5, 652, 327, 2, 5694, 5697, 7, 1101, 2, 2, 5695, 5697, 7, 1098, 2, 2, 5696,
	5692, 3, 2, 2, 2, 5696, 5693, 3, 2, 2, 2, 5696, 5694, 3, 2, 2, 2, 5696,
	5695, 3, 2, 2, 2, 5697, 523, 3, 2, 2, 2, 5698, 5701, 5, 536, 269, 2, 5699,
	5701, 7, 1101, 2, 2, 5700, 5698, 3, 2, 2, 2, 5700, 5699, 3, 2, 2, 2, 5701,
	525, 3, 2, 2, 2, 5702, 5703, 9, 92, 2, 2, 5703, 527, 3, 2, 2, 2, 5704,
	5705, 5, 542, 272, 2, 5705, 5706, 7, 1074, 2, 2, 5706, 5707, 5, 542, 272,
	2, 5707, 5708, 7, 1074, 2, 2, 5708, 5709, 5, 542, 272, 2, 5709, 5710, 7,
	1074, 2, 2, 5710, 5711, 5, 542, 272, 2, 5711, 5712, 7, 1074, 2, 2, 5712,
	5718, 5, 542, 272, 2, 5713, 5714, 7, 1097, 2, 2, 5714, 5715, 5, 542, 272,
	2, 5715, 5716, 7, 1074, 2, 2, 5716, 5717, 5, 542, 272, 2, 5717, 5719, 3,
	2, 2, 2, 5718, 5713, 3, 2, 2, 2, 5719, 5720, 3, 2, 2, 2, 5720, 5718, 3,
	2, 2, 2, 5720, 5721, 3, 2, 2, 2, 5721, 529, 3, 2, 2, 2, 5722, 5729, 5,
	532, 267, 2, 5723, 5724, 7, 1088, 2, 2, 5724, 5727, 5, 532, 267, 2, 5725,
	5726, 7, 1088, 2, 2, 5726, 5728, 5, 542, 272, 2, 5727, 5725, 3, 2, 2, 2,
	5727, 5728, 3, 2, 2, 2, 5728, 5730, 3, 2, 2, 2, 5729, 5723, 3, 2, 2, 2,
	5729, 5730, 3, 2, 2, 2, 5730, 531, 3, 2, 2, 2, 5731, 5739, 7, 1101, 2,
	2, 5732, 5739, 7, 1106, 2, 2, 5733, 5735, 7, 1103, 2, 2, 5734, 5733, 3,
	2, 2, 2, 5735, 5736, 3, 2, 2, 2, 5736, 5734, 3, 2, 2, 2, 5736, 5737, 3,
	2, 2, 2, 5737, 5739, 3, 2, 2, 2, 5738, 5731, 3, 2, 2, 2, 5738, 5732, 3,
	2, 2, 2, 5738, 5734, 3, 2, 2, 2, 5739, 533, 3, 2, 2, 2, 5740, 5743, 5,
	536, 269, 2, 5741, 5743, 7, 1101, 2, 2, 5742, 5740, 3, 2, 2, 2, 5742, 5741,
	3, 2, 2, 2, 5743, 535, 3, 2, 2, 2, 5744, 5748, 5, 538, 270, 2, 5745, 5748,
	7, 1110, 2, 2, 5746, 5748, 7, 1098, 2, 2, 5747, 5744, 3, 2, 2, 2, 5747,
	5745, 3, 2, 2, 2, 5747, 5746, 3, 2, 2, 2, 5748, 537, 3, 2, 2, 2, 5749,
	5759, 7, 1109, 2, 2, 5750, 5759, 5, 652, 327, 2, 5751, 5759, 5, 654, 328,
	2, 5752, 5759, 5, 526, 264, 2, 5753, 5759, 5, 656, 329, 2, 5754, 5759,
	5, 658, 330, 2, 5755, 5759, 5, 660, 331, 2, 5756, 5759, 5, 662, 332, 2,
	5757, 5759, 5, 664, 333, 2, 5758, 5749, 3, 2, 2, 2, 5758, 5750, 3, 2, 2,
	2, 5758, 5751, 3, 2, 2, 2, 5758, 5752, 3, 2, 2, 2, 5758, 5753, 3, 2, 2,
	2, 5758, 5754, 3, 2, 2, 2, 5758, 5755, 3, 2, 2, 2, 5758, 5756, 3, 2, 2,
	2, 5758, 5757, 3, 2, 2, 2, 5759, 539, 3, 2, 2, 2, 5760, 5764, 7, 1108,
	2, 2, 5761, 5762, 7, 1085, 2, 2, 5762, 5764, 5, 536, 269, 2, 5763, 5760,
	3, 2, 2, 2, 5763, 5761, 3, 2, 2, 2, 5764, 541, 3, 2, 2, 2, 5765, 5766,
	9, 93, 2, 2, 5766, 543, 3, 2, 2, 2, 5767, 5770, 7, 1099, 2, 2, 5768, 5770,
	5, 542, 272, 2, 5769, 5767, 3, 2, 2, 2, 5769, 5768, 3, 2, 2, 2, 5770, 545,
	3, 2, 2, 2, 5771, 5773, 7, 1107, 2, 2, 5772, 5771, 3, 2, 2, 2, 5772, 5773,
	3, 2, 2, 2, 5773, 5774, 3, 2, 2, 2, 5774, 5777, 7, 1101, 2, 2, 5775, 5777,
	7, 1100, 2, 2, 5776, 5772, 3, 2, 2, 2, 5776, 5775, 3, 2, 2, 2, 5777, 5779,
	3, 2, 2, 2, 5778, 5780, 7, 1101, 2, 2, 5779, 5778, 3, 2, 2, 2, 5780, 5781,
	3, 2, 2, 2, 5781, 5779, 3, 2, 2, 2, 5781, 5782, 3, 2, 2, 2, 5782, 5795,
	3, 2, 2, 2, 5783, 5785, 7, 1107, 2, 2, 5784, 5783, 3, 2, 2, 2, 5784, 5785,
	3, 2, 2, 2, 5785, 5786, 3, 2, 2, 2, 5786, 5789, 7, 1101, 2, 2, 5787, 5789,
	7, 1100, 2, 2, 5788, 5784, 3, 2, 2, 2, 5788, 5787, 3, 2, 2, 2, 5789, 5792,
	3, 2, 2, 2, 5790, 5791, 7, 28, 2, 2, 5791, 5793, 5, 524, 263, 2, 5792,
	5790, 3, 2, 2, 2, 5792, 5793, 3, 2, 2, 2, 5793, 5795, 3, 2, 2, 2, 5794,
	5776, 3, 2, 2, 2, 5794, 5788, 3, 2, 2, 2, 5795, 547, 3, 2, 2, 2, 5796,
	5797, 9, 94, 2, 2, 5797, 549, 3, 2, 2, 2, 5798, 5800, 7, 1107, 2, 2, 5799,
	5798, 3, 2, 2, 2, 5799, 5800, 3, 2, 2, 2, 5800, 5801, 3, 2, 2, 2, 5801,
	5802, 7, 1103, 2, 2, 5802, 551, 3, 2, 2, 2, 5803, 5805, 7, 109, 2, 2, 5804,
	5803, 3, 2, 2, 2, 5804, 5805, 3, 2, 2, 2, 5805, 5806, 3, 2, 2, 2, 5806,
	5807, 9, 95, 2, 2, 5807, 553, 3, 2, 2, 2, 5808, 5821, 5, 546, 274, 2, 5809,
	5821, 5, 542, 272, 2, 5810, 5811, 7, 1074, 2, 2, 5811, 5821, 5, 542, 272,
	2, 5812, 5821, 5, 550, 276, 2, 5813, 5821, 5, 548, 275, 2, 5814, 5821,
	7, 1104, 2, 2, 5815, 5821, 7, 1106, 2, 2, 5816, 5818, 7, 109, 2, 2, 5817,
	5816, 3, 2, 2, 2, 5817, 5818, 3, 2, 2, 2, 5818, 5819, 3, 2, 2, 2, 5819,
	5821, 9, 95, 2, 2, 5820, 5808, 3, 2, 2, 2, 5820, 5809, 3, 2, 2, 2, 5820,
	5810, 3, 2, 2, 2, 5820, 5812, 3, 2, 2, 2, 5820, 5813, 3, 2, 2, 2, 5820,
	5814, 3, 2, 2, 2, 5820, 5815, 3, 2, 2, 2, 5820, 5817, 3, 2, 2, 2, 5821,
	555, 3, 2, 2, 2, 5822, 5824, 9, 96, 2, 2, 5823, 5825, 7, 229, 2, 2, 5824,
	5823, 3, 2, 2, 2, 5824, 5825, 3, 2, 2, 2, 5825, 5827, 3, 2, 2, 2, 5826,
	5828, 5, 562, 282, 2, 5827, 5826, 3, 2, 2, 2, 5827, 5828, 3, 2, 2, 2, 5828,
	5830, 3, 2, 2, 2, 5829, 5831, 7, 217, 2, 2, 5830, 5829, 3, 2, 2, 2, 5830,
	5831, 3, 2, 2, 2, 5831, 5835, 3, 2, 2, 2, 5832, 5833, 5, 52, 27, 2, 5833,
	5834, 5, 522, 262, 2, 5834, 5836, 3, 2, 2, 2, 5835, 5832, 3, 2, 2, 2, 5835,
	5836, 3, 2, 2, 2, 5836, 5840, 3, 2, 2, 2, 5837, 5838, 7, 28, 2, 2, 5838,
	5841, 5, 524, 263, 2, 5839, 5841, 7, 217, 2, 2, 5840, 5837, 3, 2, 2, 2,
	5840, 5839, 3, 2, 2, 2, 5840, 5841, 3, 2, 2, 2, 5841, 5945, 3, 2, 2, 2,
	5842, 5843, 7, 216, 2, 2, 5843, 5845, 9, 97, 2, 2, 5844, 5846, 5, 562,
	282, 2, 5845, 5844, 3, 2, 2, 2, 5845, 5846, 3, 2, 2, 2, 5846, 5848, 3,
	2, 2, 2, 5847, 5849, 7, 217, 2, 2, 5848, 5847, 3, 2, 2, 2, 5848, 5849,
	3, 2, 2, 2, 5849, 5945, 3, 2, 2, 2, 5850, 5851, 7, 498, 2, 2, 5851, 5853,
	7, 214, 2, 2, 5852, 5854, 5, 562, 282, 2, 5853, 5852, 3, 2, 2, 2, 5853,
	5854, 3, 2, 2, 2, 5854, 5856, 3, 2, 2, 2, 5855, 5857, 7, 217, 2, 2, 5856,
	5855, 3, 2, 2, 2, 5856, 5857, 3, 2, 2, 2, 5857, 5945, 3, 2, 2, 2, 5858,
	5859, 7, 216, 2, 2, 5859, 5860, 9, 98, 2, 2, 5860, 5862, 7, 229, 2, 2,
	5861, 5863, 5, 562, 282, 2, 5862, 5861, 3, 2, 2, 2, 5862, 5863, 3, 2, 2,
	2, 5863, 5865, 3, 2, 2, 2, 5864, 5866, 7, 217, 2, 2, 5865, 5864, 3, 2,
	2, 2, 5865, 5866, 3, 2, 2, 2, 5866, 5945, 3, 2, 2, 2, 5867, 5869, 9, 99,
	2, 2, 5868, 5870, 5, 562, 282, 2, 5869, 5868, 3, 2, 2, 2, 5869, 5870, 3,
	2, 2, 2, 5870, 5874, 3, 2, 2, 2, 5871, 5873, 9, 100, 2, 2, 5872, 5871,
	3, 2, 2, 2, 5873, 5876, 3, 2, 2, 2, 5874, 5872, 3, 2, 2, 2, 5874, 5875,
	3, 2, 2, 2, 5875, 5945, 3, 2, 2, 2, 5876, 5874, 3, 2, 2, 2, 5877, 5879,
	7, 199, 2, 2, 5878, 5880, 5, 564, 283, 2, 5879, 5878, 3, 2, 2, 2, 5879,
	5880, 3, 2, 2, 2, 5880, 5884, 3, 2, 2, 2, 5881, 5883, 9, 100, 2, 2, 5882,
	5881, 3, 2, 2, 2, 5883, 5886, 3, 2, 2, 2, 5884, 5882, 3, 2, 2, 2, 5884,
	5885, 3, 2, 2, 2, 5885, 5945, 3, 2, 2, 2, 5886, 5884, 3, 2, 2, 2, 5887,
	5889, 7, 200, 2, 2, 5888, 5890, 7, 201, 2, 2, 5889, 5888, 3, 2, 2, 2, 5889,
	5890, 3, 2, 2, 2, 5890, 5892, 3, 2, 2, 2, 5891, 5893, 5, 564, 283, 2, 5892,
	5891, 3, 2, 2, 2, 5892, 5893, 3, 2, 2, 2, 5893, 5897, 3, 2, 2, 2, 5894,
	5896, 9, 100, 2, 2, 5895, 5894, 3, 2, 2, 2, 5896, 5899, 3, 2, 2, 2, 5897,
	5895, 3, 2, 2, 2, 5897, 5898, 3, 2, 2, 2, 5898, 5945, 3, 2, 2, 2, 5899,
	5897, 3, 2, 2, 2, 5900, 5902, 9, 101, 2, 2, 5901, 5903, 5, 566, 284, 2,
	5902, 5901, 3, 2, 2, 2, 5902, 5903, 3, 2, 2, 2, 5903, 5907, 3, 2, 2, 2,
	5904, 5906, 9, 100, 2, 2, 5905, 5904, 3, 2, 2, 2, 5906, 5909, 3, 2, 2,
	2, 5907, 5905, 3, 2, 2, 2, 5907, 5908, 3, 2, 2, 2, 5908, 5945, 3, 2, 2,
	2, 5909, 5907, 3, 2, 2, 2, 5910, 5945, 9, 102, 2, 2, 5911, 5913, 9, 103,
	2, 2, 5912, 5914, 5, 562, 282, 2, 5913, 5912, 3, 2, 2, 2, 5913, 5914, 3,
	2, 2, 2, 5914, 5945, 3, 2, 2, 2, 5915, 5916, 9, 104, 2, 2, 5916, 5918,
	5, 558, 280, 2, 5917, 5919, 7, 217, 2, 2, 5918, 5917, 3, 2, 2, 2, 5918,
	5919, 3, 2, 2, 2, 5919, 5923, 3, 2, 2, 2, 5920, 5921, 5, 52, 27, 2, 5921,
	5922, 5, 522, 262, 2, 5922, 5924, 3, 2, 2, 2, 5923, 5920, 3, 2, 2, 2, 5923,
	5924, 3, 2, 2, 2, 5924, 5945, 3, 2, 2, 2, 5925, 5945, 9, 105, 2, 2, 5926,
	5928, 7, 222, 2, 2, 5927, 5929, 7, 214, 2, 2, 5928, 5927, 3, 2, 2, 2, 5928,
	5929, 3, 2, 2, 2, 5929, 5931, 3, 2, 2, 2, 5930, 5932, 7, 217, 2, 2, 5931,
	5930, 3, 2, 2, 2, 5931, 5932, 3, 2, 2, 2, 5932, 5936, 3, 2, 2, 2, 5933,
	5934, 5, 52, 27, 2, 5934, 5935, 5, 522, 262, 2, 5935, 5937, 3, 2, 2, 2,
	5936, 5933, 3, 2, 2, 2, 5936, 5937, 3, 2, 2, 2, 5937, 5940, 3, 2, 2, 2,
	5938, 5939, 7, 28, 2, 2, 5939, 5941, 5, 524, 263, 2, 5940, 5938, 3, 2,
	2, 2, 5940, 5941, 3, 2, 2, 2, 5941, 5945, 3, 2, 2, 2, 5942, 5943, 7, 222,
	2, 2, 5943, 5945, 7, 218, 2, 2, 5944, 5822, 3, 2, 2, 2, 5944, 5842, 3,
	2, 2, 2, 5944, 5850, 3, 2, 2, 2, 5944, 5858, 3, 2, 2, 2, 5944, 5867, 3,
	2, 2, 2, 5944, 5877, 3, 2, 2, 2, 5944, 5887, 3, 2, 2, 2, 5944, 5900, 3,
	2, 2, 2, 5944, 5910, 3, 2, 2, 2, 5944, 5911, 3, 2, 2, 2, 5944, 5915, 3,
	2, 2, 2, 5944, 5925, 3, 2, 2, 2, 5944, 5926, 3, 2, 2, 2, 5944, 5942, 3,
	2, 2, 2, 5945, 557, 3, 2, 2, 2, 5946, 5947, 7, 1086, 2, 2, 5947, 5952,
	7, 1101, 2, 2, 5948, 5949, 7, 1088, 2, 2, 5949, 5951, 7, 1101, 2, 2, 5950,
	5948, 3, 2, 2, 2, 5951, 5954, 3, 2, 2, 2, 5952, 5950, 3, 2, 2, 2, 5952,
	5953, 3, 2, 2, 2, 5953, 5955, 3, 2, 2, 2, 5954, 5952, 3, 2, 2, 2, 5955,
	5956, 7, 1087, 2, 2, 5956, 559, 3, 2, 2, 2, 5957, 5959, 9, 106, 2, 2, 5958,
	5960, 5, 562, 282, 2, 5959, 5958, 3, 2, 2, 2, 5959, 5960, 3, 2, 2, 2, 5960,
	5980, 3, 2, 2, 2, 5961, 5963, 7, 213, 2, 2, 5962, 5964, 5, 562, 282, 2,
	5963, 5962, 3, 2, 2, 2, 5963, 5964, 3, 2, 2, 2, 5964, 5968, 3, 2, 2, 2,
	5965, 5966, 5, 52, 27, 2, 5966, 5967, 5, 522, 262, 2, 5967, 5969, 3, 2,
	2, 2, 5968, 5965, 3, 2, 2, 2, 5968, 5969, 3, 2, 2, 2, 5969, 5980, 3, 2,
	2, 2, 5970, 5980, 9, 107, 2, 2, 5971, 5973, 7, 205, 2, 2, 5972, 5974, 5,
	566, 284, 2, 5973, 5972, 3, 2, 2, 2, 5973, 5974, 3, 2, 2, 2, 5974, 5980,
	3, 2, 2, 2, 5975, 5977, 9, 108, 2, 2, 5976, 5978, 7, 197, 2, 2, 5977, 5976,
	3, 2, 2, 2, 5977, 5978, 3, 2, 2, 2, 5978, 5980, 3, 2, 2, 2, 5979, 5957,
	3, 2, 2, 2, 5979, 5961, 3, 2, 2, 2, 5979, 5970, 3, 2, 2, 2, 5979, 5971,
	3, 2, 2, 2, 5979, 5975, 3, 2, 2, 2, 5980, 5982, 3, 2, 2, 2, 5981, 5983,
	7, 13, 2, 2, 5982, 5981, 3, 2, 2, 2, 5982, 5983, 3, 2, 2, 2, 5983, 561,
	3, 2, 2, 2, 5984, 5985, 7, 1086, 2, 2, 5985, 5986, 5, 542, 272, 2, 5986,
	5987, 7, 1087, 2, 2, 5987, 563, 3, 2, 2, 2, 5988, 5989, 7, 1086, 2, 2,
	5989, 5990, 5, 542, 272, 2, 5990, 5991, 7, 1088, 2, 2, 5991, 5992, 5, 542,
	272, 2, 5992, 5993, 7, 1087, 2, 2, 5993, 565, 3, 2, 2, 2, 5994, 5995, 7,
	1086, 2, 2, 5995, 5998, 5, 542, 272, 2, 5996, 5997, 7, 1088, 2, 2, 5997,
	5999, 5, 542, 272, 2, 5998, 5996, 3, 2, 2, 2, 5998, 5999, 3, 2, 2, 2, 5999,
	6000, 3, 2, 2, 2, 6000, 6001, 7, 1087, 2, 2, 6001, 567, 3, 2, 2, 2, 6002,
	6007, 5, 536, 269, 2, 6003, 6004, 7, 1088, 2, 2, 6004, 6006, 5, 536, 269,
	2, 6005, 6003, 3, 2, 2, 2, 6006, 6009, 3, 2, 2, 2, 6007, 6005, 3, 2, 2,
	2, 6007, 6008, 3, 2, 2, 2, 6008, 569, 3, 2, 2, 2, 6009, 6007, 3, 2, 2,
	2, 6010, 6015, 5, 512, 257, 2, 6011, 6012, 7, 1088, 2, 2, 6012, 6014, 5,
	512, 257, 2, 6013, 6011, 3, 2, 2, 2, 6014, 6017, 3, 2, 2, 2, 6015, 6013,
	3, 2, 2, 2, 6015, 6016, 3, 2, 2, 2, 6016, 571, 3, 2, 2, 2, 6017, 6015,
	3, 2, 2, 2, 6018, 6019, 7, 1086, 2, 2, 6019, 6024, 5, 516, 259, 2, 6020,
	6021, 7, 1088, 2, 2, 6021, 6023, 5, 516, 259, 2, 6022, 6020, 3, 2, 2, 2,
	6023, 6026, 3, 2, 2, 2, 6024, 6022, 3, 2, 2, 2, 6024, 6025, 3, 2, 2, 2,
	6025, 6027, 3, 2, 2, 2, 6026, 6024, 3, 2, 2, 2, 6027, 6028, 7, 1087, 2,
	2, 6028, 573, 3, 2, 2, 2, 6029, 6034, 5, 634, 318, 2, 6030, 6031, 7, 1088,
	2, 2, 6031, 6033, 5, 634, 318, 2, 6032, 6030, 3, 2, 2, 2, 6033, 6036, 3,
	2, 2, 2, 6034, 6032, 3, 2, 2, 2, 6034, 6035, 3, 2, 2, 2, 6035, 575, 3,
	2, 2, 2, 6036, 6034, 3, 2, 2, 2, 6037, 6042, 5, 588, 295, 2, 6038, 6039,
	7, 1088, 2, 2, 6039, 6041, 5, 588, 295, 2, 6040, 6038, 3, 2, 2, 2, 6041,
	6044, 3, 2, 2, 2, 6042, 6040, 3, 2, 2, 2, 6042, 6043, 3, 2, 2, 2, 6043,
	577, 3, 2, 2, 2, 6044, 6042, 3, 2, 2, 2, 6045, 6050, 5, 554, 278, 2, 6046,
	6047, 7, 1088, 2, 2, 6047, 6049, 5, 554, 278, 2, 6048, 6046, 3, 2, 2, 2,
	6049, 6052, 3, 2, 2, 2, 6050, 6048, 3, 2, 2, 2, 6050, 6051, 3, 2, 2, 2,
	6051, 579, 3, 2, 2, 2, 6052, 6050, 3, 2, 2, 2, 6053, 6058, 7, 1101, 2,
	2, 6054, 6055, 7, 1088, 2, 2, 6055, 6057, 7, 1101, 2, 2, 6056, 6054, 3,
	2, 2, 2, 6057, 6060, 3, 2, 2, 2, 6058, 6056, 3, 2, 2, 2, 6058, 6059, 3,
	2, 2, 2, 6059, 581, 3, 2, 2, 2, 6060, 6058, 3, 2, 2, 2, 6061, 6066, 7,
	1113, 2, 2, 6062, 6063, 7, 1088, 2, 2, 6063, 6065, 7, 1113, 2, 2, 6064,
	6062, 3, 2, 2, 2, 6065, 6068, 3, 2, 2, 2, 6066, 6064, 3, 2, 2, 2, 6066,
	6067, 3, 2, 2, 2, 6067, 583, 3, 2, 2, 2, 6068, 6066, 3, 2, 2, 2, 6069,
	6080, 7, 111, 2, 2, 6070, 6072, 5, 640, 321, 2, 6071, 6070, 3, 2, 2, 2,
	6071, 6072, 3, 2, 2, 2, 6072, 6073, 3, 2, 2, 2, 6073, 6080, 5, 554, 278,
	2, 6074, 6080, 5, 586, 294, 2, 6075, 6076, 7, 1086, 2, 2, 6076, 6077, 5,
	634, 318, 2, 6077, 6078, 7, 1087, 2, 2, 6078, 6080, 3, 2, 2, 2, 6079, 6069,
	3, 2, 2, 2, 6079, 6071, 3, 2, 2, 2, 6079, 6074, 3, 2, 2, 2, 6079, 6075,
	3, 2, 2, 2, 6080, 6084, 3, 2, 2, 2, 6081, 6082, 7, 113, 2, 2, 6082, 6083,
	7, 175, 2, 2, 6083, 6085, 5, 586, 294, 2, 6084, 6081, 3, 2, 2, 2, 6084,
	6085, 3, 2, 2, 2, 6085, 585, 3, 2, 2, 2, 6086, 6092, 9, 109, 2, 2, 6087,
	6089, 7, 1086, 2, 2, 6088, 6090, 5, 542, 272, 2, 6089, 6088, 3, 2, 2, 2,
	6089, 6090, 3, 2, 2, 2, 6090, 6091, 3, 2, 2, 2, 6091, 6093, 7, 1087, 2,
	2, 6092, 6087, 3, 2, 2, 2, 6092, 6093, 3, 2, 2, 2, 6093, 6101, 3, 2, 2,
	2, 6094, 6095, 7, 311, 2, 2, 6095, 6097, 7, 1086, 2, 2, 6096, 6098, 5,
	542, 272, 2, 6097, 6096, 3, 2, 2, 2, 6097, 6098, 3, 2, 2, 2, 6098, 6099,
	3, 2, 2, 2, 6099, 6101, 7, 1087, 2, 2, 6100, 6086, 3, 2, 2, 2, 6100, 6094,
	3, 2, 2, 2, 6101, 587, 3, 2, 2, 2, 6102, 6105, 5, 634, 318, 2, 6103, 6105,
	7, 42, 2, 2, 6104, 6102, 3, 2, 2, 2, 6104, 6103, 3, 2, 2, 2, 6105, 589,
	3, 2, 2, 2, 6106, 6107, 7, 76, 2, 2, 6107, 6108, 7, 59, 2, 2, 6108, 591,
	3, 2, 2, 2, 6109, 6110, 7, 76, 2, 2, 6110, 6111, 7, 109, 2, 2, 6111, 6112,
	7, 59, 2, 2, 6112, 593, 3, 2, 2, 2, 6113, 6132, 5, 596, 299, 2, 6114, 6132,
	5, 604, 303, 2, 6115, 6132, 5, 606, 304, 2, 6116, 6117, 5, 626, 314, 2,
	6117, 6119, 7, 1086, 2, 2, 6118, 6120, 5, 630, 316, 2, 6119, 6118, 3, 2,
	2, 2, 6119, 6120, 3, 2, 2, 2, 6120, 6121, 3, 2, 2, 2, 6121, 6122, 7, 1087,
	2, 2, 6122, 6132, 3, 2, 2, 2, 6123, 6124, 5, 510, 256, 2, 6124, 6126, 7,
	1086, 2, 2, 6125, 6127, 5, 630, 316, 2, 6126, 6125, 3, 2, 2, 2, 6126, 6127,
	3, 2, 2, 2, 6127, 6128, 3, 2, 2, 2, 6128, 6129, 7, 1087, 2, 2, 6129, 6132,
	3, 2, 2, 2, 6130, 6132, 5, 628, 315, 2, 6131, 6113, 3, 2, 2, 2, 6131, 6114,
	3, 2, 2, 2, 6131, 6115, 3, 2, 2, 2, 6131, 6116, 3, 2, 2, 2, 6131, 6123,
	3, 2, 2, 2, 6131, 6130, 3, 2, 2, 2, 6132, 595, 3, 2, 2, 2, 6133, 6136,
	9, 110, 2, 2, 6134, 6135, 7, 1086, 2, 2, 6135, 6137, 7, 1087, 2, 2, 6136,
	6134, 3, 2, 2, 2, 6136, 6137, 3, 2, 2, 2, 6137, 6326, 3, 2, 2, 2, 6138,
	6139, 7, 33, 2, 2, 6139, 6140, 7, 1086, 2, 2, 6140, 6141, 5, 634, 318,
	2, 6141, 6142, 7, 1088, 2, 2, 6142, 6143, 5, 560, 281, 2, 6143, 6144, 7,
	1087, 2, 2, 6144, 6326, 3, 2, 2, 2, 6145, 6146, 7, 33, 2, 2, 6146, 6147,
	7, 1086, 2, 2, 6147, 6148, 5, 634, 318, 2, 6148, 6149, 7, 178, 2, 2, 6149,
	6150, 5, 522, 262, 2, 6150, 6151, 7, 1087, 2, 2, 6151, 6326, 3, 2, 2, 2,
	6152, 6153, 7, 24, 2, 2, 6153, 6154, 7, 1086, 2, 2, 6154, 6155, 5, 634,
	318, 2, 6155, 6156, 7, 14, 2, 2, 6156, 6157, 5, 560, 281, 2, 6157, 6158,
	7, 1087, 2, 2, 6158, 6326, 3, 2, 2, 2, 6159, 6160, 7, 179, 2, 2, 6160,
	6161, 7, 1086, 2, 2, 6161, 6162, 5, 514, 258, 2, 6162, 6163, 7, 1087, 2,
	2, 6163, 6326, 3, 2, 2, 2, 6164, 6165, 7, 23, 2, 2, 6165, 6167, 5, 634,
	318, 2, 6166, 6168, 5, 598, 300, 2, 6167, 6166, 3, 2, 2, 2, 6168, 6169,
	3, 2, 2, 2, 6169, 6167, 3, 2, 2, 2, 6169, 6170, 3, 2, 2, 2, 6170, 6173,
	3, 2, 2, 2, 6171, 6172, 7, 53, 2, 2, 6172, 6174, 5, 632, 317, 2, 6173,
	6171, 3, 2, 2, 2, 6173, 6174, 3, 2, 2, 2, 6174, 6175, 3, 2, 2, 2, 6175,
	6176, 7, 391, 2, 2, 6176, 6326, 3, 2, 2, 2, 6177, 6179, 7, 23, 2, 2, 6178,
	6180, 5, 598, 300, 2, 6179, 6178, 3, 2, 2, 2, 6180, 6181, 3, 2, 2, 2, 6181,
	6179, 3, 2, 2, 2, 6181, 6182, 3, 2, 2, 2, 6182, 6185, 3, 2, 2, 2, 6183,
	6184, 7, 53, 2, 2, 6184, 6186, 5, 632, 317, 2, 6185, 6183, 3, 2, 2, 2,
	6185, 6186, 3, 2, 2, 2, 6186, 6187, 3, 2, 2, 2, 6187, 6188, 7, 391, 2,
	2, 6188, 6326, 3, 2, 2, 2, 6189, 6190, 7, 213, 2, 2, 6190, 6191, 7, 1086,
	2, 2, 6191, 6194, 5, 630, 316, 2, 6192, 6193, 7, 178, 2, 2, 6193, 6195,
	5, 522, 262, 2, 6194, 6192, 3, 2, 2, 2, 6194, 6195, 3, 2, 2, 2, 6195, 6196,
	3, 2, 2, 2, 6196, 6197, 7, 1087, 2, 2, 6197, 6326, 3, 2, 2, 2, 6198, 6199,
	7, 312, 2, 2, 6199, 6202, 7, 1086, 2, 2, 6200, 6203, 5, 546, 274, 2, 6201,
	6203, 5, 634, 318, 2, 6202, 6200, 3, 2, 2, 2, 6202, 6201, 3, 2, 2, 2, 6203,
	6204, 3, 2, 2, 2, 6204, 6207, 7, 78, 2, 2, 6205, 6208, 5, 546, 274, 2,
	6206, 6208, 5, 634, 318, 2, 6207, 6205, 3, 2, 2, 2, 6207, 6206, 3, 2, 2,
	2, 6208, 6209, 3, 2, 2, 2, 6209, 6210, 7, 1087, 2, 2, 6210, 6326, 3, 2,
	2, 2, 6211, 6212, 9, 111, 2, 2, 6212, 6215, 7, 1086, 2, 2, 6213, 6216,
	5, 546, 274, 2, 6214, 6216, 5, 634, 318, 2, 6215, 6213, 3, 2, 2, 2, 6215,
	6214, 3, 2, 2, 2, 6216, 6217, 3, 2, 2, 2, 6217, 6220, 7, 67, 2, 2, 6218,
	6221, 5, 542, 272, 2, 6219, 6221, 5, 634, 318, 2, 6220, 6218, 3, 2, 2,
	2, 6220, 6219, 3, 2, 2, 2, 6221, 6227, 3, 2, 2, 2, 6222, 6225, 7, 64, 2,
	2, 6223, 6226, 5, 542, 272, 2, 6224, 6226, 5, 634, 318, 2, 6225, 6223,
	3, 2, 2, 2, 6225, 6224, 3, 2, 2, 2, 6226, 6228, 3, 2, 2, 2, 6227, 6222,
	3, 2, 2, 2, 6227, 6228, 3, 2, 2, 2, 6228, 6229, 3, 2, 2, 2, 6229, 6230,
	7, 1087, 2, 2, 6230, 6326, 3, 2, 2, 2, 6231, 6232, 7, 316, 2, 2, 6232,
	6233, 7, 1086, 2, 2, 6233, 6236, 9, 112, 2, 2, 6234, 6237, 5, 546, 274,
	2, 6235, 6237, 5, 634, 318, 2, 6236, 6234, 3, 2, 2, 2, 6236, 6235, 3, 2,
	2, 2, 6236, 6237, 3, 2, 2, 2, 6237, 6238, 3, 2, 2, 2, 6238, 6241, 7, 67,
	2, 2, 6239, 6242, 5, 546, 274, 2, 6240, 6242, 5, 634, 318, 2, 6241, 6239,
	3, 2, 2, 2, 6241, 6240, 3, 2, 2, 2, 6242, 6243, 3, 2, 2, 2, 6243, 6244,
	7, 1087, 2, 2, 6244, 6326, 3, 2, 2, 2, 6245, 6246, 7, 316, 2, 2, 6246,
	6249, 7, 1086, 2, 2, 6247, 6250, 5, 546, 274, 2, 6248, 6250, 5, 634, 318,
	2, 6249, 6247, 3, 2, 2, 2, 6249, 6248, 3, 2, 2, 2, 6250, 6251, 3, 2, 2,
	2, 6251, 6254, 7, 67, 2, 2, 6252, 6255, 5, 546, 274, 2, 6253, 6255, 5,
	634, 318, 2, 6254, 6252, 3, 2, 2, 2, 6254, 6253, 3, 2, 2, 2, 6255, 6256,
	3, 2, 2, 2, 6256, 6257, 7, 1087, 2, 2, 6257, 6326, 3, 2, 2, 2, 6258, 6259,
	7, 1056, 2, 2, 6259, 6262, 7, 1086, 2, 2, 6260, 6263, 5, 546, 274, 2, 6261,
	6263, 5, 634, 318, 2, 6262, 6260, 3, 2, 2, 2, 6262, 6261, 3, 2, 2, 2, 6263,
	6270, 3, 2, 2, 2, 6264, 6265, 7, 14, 2, 2, 6265, 6266, 9, 113, 2, 2, 6266,
	6267, 7, 1086, 2, 2, 6267, 6268, 5, 542, 272, 2, 6268, 6269, 7, 1087, 2,
	2, 6269, 6271, 3, 2, 2, 2, 6270, 6264, 3, 2, 2, 2, 6270, 6271, 3, 2, 2,
	2, 6271, 6273, 3, 2, 2, 2, 6272, 6274, 5, 600, 301, 2, 6273, 6272, 3, 2,
	2, 2, 6273, 6274, 3, 2, 2, 2, 6274, 6275, 3, 2, 2, 2, 6275, 6276, 7, 1087,
	2, 2, 6276, 6326, 3, 2, 2, 2, 6277, 6278, 7, 309, 2, 2, 6278, 6279, 7,
	1086, 2, 2, 6279, 6280, 5, 62, 32, 2, 6280, 6283, 7, 67, 2, 2, 6281, 6284,
	5, 546, 274, 2, 6282, 6284, 5, 634, 318, 2, 6283, 6281, 3, 2, 2, 2, 6283,
	6282, 3, 2, 2, 2, 6284, 6285, 3, 2, 2, 2, 6285, 6286, 7, 1087, 2, 2, 6286,
	6326, 3, 2, 2, 2, 6287, 6288, 7, 856, 2, 2, 6288, 6289, 7, 1086, 2, 2,
	6289, 6290, 9, 114, 2, 2, 6290, 6291, 7, 1088, 2, 2, 6291, 6292, 5, 546,
	274, 2, 6292, 6293, 7, 1087, 2, 2, 6293, 6326, 3, 2, 2, 2, 6294, 6295,
	7, 251, 2, 2, 6295, 6296, 7, 1086, 2, 2, 6296, 6297, 5, 634, 318, 2, 6297,
	6298, 7, 1088, 2, 2, 6298, 6301, 5, 634, 318, 2, 6299, 6300, 7, 562, 2,
	2, 6300, 6302, 5, 560, 281, 2, 6301, 6299, 3, 2, 2, 2, 6301, 6302, 3, 2,
	2, 2, 6302, 6311, 3, 2, 2, 2, 6303, 6308, 7, 111, 2, 2, 6304, 6308, 7,
	395, 2, 2, 6305, 6306, 7, 42, 2, 2, 6306, 6308, 5, 584, 293, 2, 6307, 6303,
	3, 2, 2, 2, 6307, 6304, 3, 2, 2, 2, 6307, 6305, 3, 2, 2, 2, 6308, 6309,
	3, 2, 2, 2, 6309, 6310, 7, 113, 2, 2, 6310, 6312, 7, 55, 2, 2, 6311, 6307,
	3, 2, 2, 2, 6311, 6312, 3, 2, 2, 2, 6312, 6321, 3, 2, 2, 2, 6313, 6318,
	7, 111, 2, 2, 6314, 6318, 7, 395, 2, 2, 6315, 6316, 7, 42, 2, 2, 6316,
	6318, 5, 584, 293, 2, 6317, 6313, 3, 2, 2, 2, 6317, 6314, 3, 2, 2, 2, 6317,
	6315, 3, 2, 2, 2, 6318, 6319, 3, 2, 2, 2, 6319, 6320, 7, 113, 2, 2, 6320,
	6322, 7, 395, 2, 2, 6321, 6317, 3, 2, 2, 2, 6321, 6322, 3, 2, 2, 2, 6322,
	6323, 3, 2, 2, 2, 6323, 6324, 7, 1087, 2, 2, 6324, 6326, 3, 2, 2, 2, 6325,
	6133, 3, 2, 2, 2, 6325, 6138, 3, 2, 2, 2, 6325, 6145, 3, 2, 2, 2, 6325,
	6152, 3, 2, 2, 2, 6325, 6159, 3, 2, 2, 2, 6325, 6164, 3, 2, 2, 2, 6325,
	6177, 3, 2, 2, 2, 6325, 6189, 3, 2, 2, 2, 6325, 6198, 3, 2, 2, 2, 6325,
	6211, 3, 2, 2, 2, 6325, 6231, 3, 2, 2, 2, 6325, 6245, 3, 2, 2, 2, 6325,
	6258, 3, 2, 2, 2, 6325, 6277, 3, 2, 2, 2, 6325, 6287, 3, 2, 2, 2, 6325,
	6294, 3, 2, 2, 2, 6326, 597, 3, 2, 2, 2, 6327, 6328, 7, 180, 2, 2, 6328,
	6329, 5, 632, 317, 2, 6329, 6330, 7, 165, 2, 2, 6330, 6331, 5, 632, 317,
	2, 6331, 599, 3, 2, 2, 2, 6332, 6333, 7, 452, 2, 2, 6333, 6338, 5, 602,
	302, 2, 6334, 6335, 7, 1088, 2, 2, 6335, 6337, 5, 602, 302, 2, 6336, 6334,
	3, 2, 2, 2, 6337, 6340, 3, 2, 2, 2, 6338, 6336, 3, 2, 2, 2, 6338, 6339,
	3, 2, 2, 2, 6339, 6347, 3, 2, 2, 2, 6340, 6338, 3, 2, 2, 2, 6341, 6342,
	7, 452, 2, 2, 6342, 6343, 5, 542, 272, 2, 6343, 6344, 7, 1074, 2, 2, 6344,
	6345, 5, 542, 272, 2, 6345, 6347, 3, 2, 2, 2, 6346, 6332, 3, 2, 2, 2, 6346,
	6341, 3, 2, 2, 2, 6347, 601, 3, 2, 2, 2, 6348, 6350, 5, 542, 272, 2, 6349,
	6351, 9, 115, 2, 2, 6350, 6349, 3, 2, 2, 2, 6350, 6351, 3, 2, 2, 2, 6351,
	603, 3, 2, 2, 2, 6352, 6353, 9, 116, 2, 2, 6353, 6355, 7, 1086, 2, 2, 6354,
	6356, 9, 42, 2, 2, 6355, 6354, 3, 2, 2, 2, 6355, 6356, 3, 2, 2, 2, 6356,
	6357, 3, 2, 2, 2, 6357, 6358, 5, 632, 317, 2, 6358, 6360, 7, 1087, 2, 2,
	6359, 6361, 5, 608, 305, 2, 6360, 6359, 3, 2, 2, 2, 6360, 6361, 3, 2, 2,
	2, 6361, 6412, 3, 2, 2, 2, 6362, 6363, 7, 278, 2, 2, 6363, 6371, 7, 1086,
	2, 2, 6364, 6372, 7, 1070, 2, 2, 6365, 6367, 7, 8, 2, 2, 6366, 6365, 3,
	2, 2, 2, 6366, 6367, 3, 2, 2, 2, 6367, 6368, 3, 2, 2, 2, 6368, 6372, 5,
	632, 317, 2, 6369, 6370, 7, 49, 2, 2, 6370, 6372, 5, 630, 316, 2, 6371,
	6364, 3, 2, 2, 2, 6371, 6366, 3, 2, 2, 2, 6371, 6369, 3, 2, 2, 2, 6372,
	6373, 3, 2, 2, 2, 6373, 6375, 7, 1087, 2, 2, 6374, 6376, 5, 608, 305, 2,
	6375, 6374, 3, 2, 2, 2, 6375, 6376, 3, 2, 2, 2, 6376, 6412, 3, 2, 2, 2,
	6377, 6378, 9, 117, 2, 2, 6378, 6380, 7, 1086, 2, 2, 6379, 6381, 7, 8,
	2, 2, 6380, 6379, 3, 2, 2, 2, 6380, 6381, 3, 2, 2, 2, 6381, 6382, 3, 2,
	2, 2, 6382, 6383, 5, 632, 317, 2, 6383, 6385, 7, 1087, 2, 2, 6384, 6386,
	5, 608, 305, 2, 6385, 6384, 3, 2, 2, 2, 6385, 6386, 3, 2, 2, 2, 6386, 6412,
	3, 2, 2, 2, 6387, 6388, 7, 282, 2, 2, 6388, 6390, 7, 1086, 2, 2, 6389,
	6391, 7, 49, 2, 2, 6390, 6389, 3, 2, 2, 2, 6390, 6391, 3, 2, 2, 2, 6391,
	6392, 3, 2, 2, 2, 6392, 6403, 5, 630, 316, 2, 6393, 6394, 7, 118, 2, 2,
	6394, 6395, 7, 20, 2, 2, 6395, 6400, 5, 214, 108, 2, 6396, 6397, 7, 1088,
	2, 2, 6397, 6399, 5, 214, 108, 2, 6398, 6396, 3, 2, 2, 2, 6399, 6402, 3,
	2, 2, 2, 6400, 6398, 3, 2, 2, 2, 6400, 6401, 3, 2, 2, 2, 6401, 6404, 3,
	2, 2, 2, 6402, 6400, 3, 2, 2, 2, 6403, 6393, 3, 2, 2, 2, 6403, 6404, 3,
	2, 2, 2, 6404, 6407, 3, 2, 2, 2, 6405, 6406, 7, 148, 2, 2, 6406, 6408,
	7, 1101, 2, 2, 6407, 6405, 3, 2, 2, 2, 6407, 6408, 3, 2, 2, 2, 6408, 6409,
	3, 2, 2, 2, 6409, 6410, 7, 1087, 2, 2, 6410, 6412, 3, 2, 2, 2, 6411, 6352,
	3, 2, 2, 2, 6411, 6362, 3, 2, 2, 2, 6411, 6377, 3, 2, 2, 2, 6411, 6387,
	3, 2, 2, 2, 6412, 605, 3, 2, 2, 2, 6413, 6414, 9, 118, 2, 2, 6414, 6415,
	7, 1086, 2, 2, 6415, 6418, 5, 634, 318, 2, 6416, 6417, 7, 1088, 2, 2, 6417,
	6419, 5, 542, 272, 2, 6418, 6416, 3, 2, 2, 2, 6418, 6419, 3, 2, 2, 2, 6419,
	6422, 3, 2, 2, 2, 6420, 6421, 7, 1088, 2, 2, 6421, 6423, 5, 542, 272, 2,
	6422, 6420, 3, 2, 2, 2, 6422, 6423, 3, 2, 2, 2, 6423, 6424, 3, 2, 2, 2,
	6424, 6425, 7, 1087, 2, 2, 6425, 6426, 5, 608, 305, 2, 6426, 6452, 3, 2,
	2, 2, 6427, 6428, 9, 119, 2, 2, 6428, 6429, 7, 1086, 2, 2, 6429, 6430,
	5, 634, 318, 2, 6430, 6431, 7, 1087, 2, 2, 6431, 6432, 5, 608, 305, 2,
	6432, 6452, 3, 2, 2, 2, 6433, 6434, 9, 120, 2, 2, 6434, 6435, 7, 1086,
	2, 2, 6435, 6436, 7, 1087, 2, 2, 6436, 6452, 5, 608, 305, 2, 6437, 6438,
	7, 289, 2, 2, 6438, 6439, 7, 1086, 2, 2, 6439, 6440, 5, 634, 318, 2, 6440,
	6441, 7, 1088, 2, 2, 6441, 6442, 5, 542, 272, 2, 6442, 6443, 7, 1087, 2,
	2, 6443, 6444, 5, 608, 305, 2, 6444, 6452, 3, 2, 2, 2, 6445, 6446, 7, 288,
	2, 2, 6446, 6447, 7, 1086, 2, 2, 6447, 6448, 5, 542, 272, 2, 6448, 6449,
	7, 1087, 2, 2, 6449, 6450, 5, 608, 305, 2, 6450, 6452, 3, 2, 2, 2, 6451,
	6413, 3, 2, 2, 2, 6451, 6427, 3, 2, 2, 2, 6451, 6433, 3, 2, 2, 2, 6451,
	6437, 3, 2, 2, 2, 6451, 6445, 3, 2, 2, 2, 6452, 607, 3, 2, 2, 2, 6453,
	6460, 7, 120, 2, 2, 6454, 6456, 7, 1086, 2, 2, 6455, 6457, 5, 610, 306,
	2, 6456, 6455, 3, 2, 2, 2, 6456, 6457, 3, 2, 2, 2, 6457, 6458, 3, 2, 2,
	2, 6458, 6461, 7, 1087, 2, 2, 6459, 6461, 5, 612, 307, 2, 6460, 6454, 3,
	2, 2, 2, 6460, 6459, 3, 2, 2, 2, 6461, 609, 3, 2, 2, 2, 6462, 6464, 5,
	612, 307, 2, 6463, 6462, 3, 2, 2, 2, 6463, 6464, 3, 2, 2, 2, 6464, 6466,
	3, 2, 2, 2, 6465, 6467, 5, 624, 313, 2, 6466, 6465, 3, 2, 2, 2, 6466, 6467,
	3, 2, 2, 2, 6467, 6469, 3, 2, 2, 2, 6468, 6470, 5, 212, 107, 2, 6469, 6468,
	3, 2, 2, 2, 6469, 6470, 3, 2, 2, 2, 6470, 6472, 3, 2, 2, 2, 6471, 6473,
	5, 614, 308, 2, 6472, 6471, 3, 2, 2, 2, 6472, 6473, 3, 2, 2, 2, 6473, 611,
	3, 2, 2, 2, 6474, 6475, 5, 536, 269, 2, 6475, 613, 3, 2, 2, 2, 6476, 6477,
	5, 616, 309, 2, 6477, 6478, 5, 618, 310, 2, 6478, 615, 3, 2, 2, 2, 6479,
	6480, 9, 121, 2, 2, 6480, 617, 3, 2, 2, 2, 6481, 6484, 5, 622, 312, 2,
	6482, 6484, 5, 620, 311, 2, 6483, 6481, 3, 2, 2, 2, 6483, 6482, 3, 2, 2,
	2, 6484, 619, 3, 2, 2, 2, 6485, 6486, 7, 17, 2, 2, 6486, 6487, 5, 622,
	312, 2, 6487, 6488, 7, 12, 2, 2, 6488, 6489, 5, 622, 312, 2, 6489, 621,
	3, 2, 2, 2, 6490, 6491, 7, 36, 2, 2, 6491, 6498, 7, 568, 2, 2, 6492, 6493,
	7, 623, 2, 2, 6493, 6498, 9, 122, 2, 2, 6494, 6495, 5, 634, 318, 2, 6495,
	6496, 9, 122, 2, 2, 6496, 6498, 3, 2, 2, 2, 6497, 6490, 3, 2, 2, 2, 6497,
	6492, 3, 2, 2, 2, 6497, 6494, 3, 2, 2, 2, 6498, 623, 3, 2, 2, 2, 6499,
	6500, 7, 123, 2, 2, 6500, 6501, 7, 20, 2, 2, 6501, 6506, 5, 634, 318, 2,
	6502, 6503, 7, 1088, 2, 2, 6503, 6505, 5, 634, 318, 2, 6504, 6502, 3, 2,
	2, 2, 6505, 6508, 3, 2, 2, 2, 6506, 6504, 3, 2, 2, 2, 6506, 6507, 3, 2,
	2, 2, 6507, 625, 3, 2, 2, 2, 6508, 6506, 3, 2, 2, 2, 6509, 6533, 5, 664,
	333, 2, 6510, 6533, 7, 704, 2, 2, 6511, 6533, 7, 305, 2, 2, 6512, 6533,
	7, 301, 2, 2, 6513, 6533, 7, 302, 2, 2, 6514, 6533, 7, 303, 2, 2, 6515,
	6533, 7, 306, 2, 2, 6516, 6533, 7, 307, 2, 2, 6517, 6533, 7, 308, 2, 2,
	6518, 6533, 7, 76, 2, 2, 6519, 6533, 7, 83, 2, 2, 6520, 6533, 7, 304, 2,
	2, 6521, 6533, 7, 310, 2, 2, 6522, 6533, 7, 488, 2, 2, 6523, 6533, 7, 311,
	2, 2, 6524, 6533, 7, 135, 2, 2, 6525, 6533, 7, 313, 2, 2, 6526, 6533, 7,
	314, 2, 2, 6527, 6533, 7, 315, 2, 2, 6528, 6533, 7, 316, 2, 2, 6529, 6533,
	7, 317, 2, 2, 6530, 6533, 7, 318, 2, 2, 6531, 6533, 7, 319, 2, 2, 6532,
	6509, 3, 2, 2, 2, 6532, 6510, 3, 2, 2, 2, 6532, 6511, 3, 2, 2, 2, 6532,
	6512, 3, 2, 2, 2, 6532, 6513, 3, 2, 2, 2, 6532, 6514, 3, 2, 2, 2, 6532,
	6515, 3, 2, 2, 2, 6532, 6516, 3, 2, 2, 2, 6532, 6517, 3, 2, 2, 2, 6532,
	6518, 3, 2, 2, 2, 6532, 6519, 3, 2, 2, 2, 6532, 6520, 3, 2, 2, 2, 6532,
	6521, 3, 2, 2, 2, 6532, 6522, 3, 2, 2, 2, 6532, 6523, 3, 2, 2, 2, 6532,
	6524, 3, 2, 2, 2, 6532, 6525, 3, 2, 2, 2, 6532, 6526, 3, 2, 2, 2, 6532,
	6527, 3, 2, 2, 2, 6532, 6528, 3, 2, 2, 2, 6532, 6529, 3, 2, 2, 2, 6532,
	6530, 3, 2, 2, 2, 6532, 6531, 3, 2, 2, 2, 6533, 627, 3, 2, 2, 2, 6534,
	6535, 9, 123, 2, 2, 6535, 6536, 7, 1086, 2, 2, 6536, 6537, 5, 632, 317,
	2, 6537, 6538, 7, 1087, 2, 2, 6538, 629, 3, 2, 2, 2, 6539, 6544, 5, 554,
	278, 2, 6540, 6544, 5, 514, 258, 2, 6541, 6544, 5, 594, 298, 2, 6542, 6544,
	5, 634, 318, 2, 6543, 6539, 3, 2, 2, 2, 6543, 6540, 3, 2, 2, 2, 6543, 6541,
	3, 2, 2, 2, 6543, 6542, 3, 2, 2, 2, 6544, 6554, 3, 2, 2, 2, 6545, 6550,
	7, 1088, 2, 2, 6546, 6551, 5, 554, 278, 2, 6547, 6551, 5, 514, 258, 2,
	6548, 6551, 5, 594, 298, 2, 6549, 6551, 5, 634, 318, 2, 6550, 6546, 3,
	2, 2, 2, 6550, 6547, 3, 2, 2, 2, 6550, 6548, 3, 2, 2, 2, 6550, 6549, 3,
	2, 2, 2, 6551, 6553, 3, 2, 2, 2, 6552, 6545, 3, 2, 2, 2, 6553, 6556, 3,
	2, 2, 2, 6554, 6552, 3, 2, 2, 2, 6554, 6555, 3, 2, 2, 2, 6555, 631, 3,
	2, 2, 2, 6556, 6554, 3, 2, 2, 2, 6557, 6562, 5, 554, 278, 2, 6558, 6562,
	5, 514, 258, 2, 6559, 6562, 5, 594, 298, 2, 6560, 6562, 5, 634, 318, 2,
	6561, 6557, 3, 2, 2, 2, 6561, 6558, 3, 2, 2, 2, 6561, 6559, 3, 2, 2, 2,
	6561, 6560, 3, 2, 2, 2, 6562, 633, 3, 2, 2, 2, 6563, 6564, 8, 318, 1, 2,
	6564, 6565, 9, 124, 2, 2, 6565, 6575, 5, 634, 318, 6, 6566, 6567, 5, 636,
	319, 2, 6567, 6569, 7, 86, 2, 2, 6568, 6570, 7, 109, 2, 2, 6569, 6568,
	3, 2, 2, 2, 6569, 6570, 3, 2, 2, 2, 6570, 6571, 3, 2, 2, 2, 6571, 6572,
	9, 125, 2, 2, 6572, 6575, 3, 2, 2, 2, 6573, 6575, 5, 636, 319, 2, 6574,
	6563, 3, 2, 2, 2, 6574, 6566, 3, 2, 2, 2, 6574, 6573, 3, 2, 2, 2, 6575,
	6582, 3, 2, 2, 2, 6576, 6577, 12, 5, 2, 2, 6577, 6578, 5, 644, 323, 2,
	6578, 6579, 5, 634, 318, 6, 6579, 6581, 3, 2, 2, 2, 6580, 6576, 3, 2, 2,
	2, 6581, 6584, 3, 2, 2, 2, 6582, 6580, 3, 2, 2, 2, 6582, 6583, 3, 2, 2,
	2, 6583, 635, 3, 2, 2, 2, 6584, 6582, 3, 2, 2, 2, 6585, 6588, 8, 319, 1,
	2, 6586, 6587, 7, 1113, 2, 2, 6587, 6589, 7, 1061, 2, 2, 6588, 6586, 3,
	2, 2, 2, 6588, 6589, 3, 2, 2, 2, 6589, 6590, 3, 2, 2, 2, 6590, 6591, 5,
	638, 320, 2, 6591, 6656, 3, 2, 2, 2, 6592, 6593, 12, 10, 2, 2, 6593, 6594,
	5, 642, 322, 2, 6594, 6595, 5, 636, 319, 11, 6595, 6655, 3, 2, 2, 2, 6596,
	6598, 12, 8, 2, 2, 6597, 6599, 7, 109, 2, 2, 6598, 6597, 3, 2, 2, 2, 6598,
	6599, 3, 2, 2, 2, 6599, 6600, 3, 2, 2, 2, 6600, 6601, 7, 17, 2, 2, 6601,
	6602, 5, 636, 319, 2, 6602, 6603, 7, 12, 2, 2, 6603, 6604, 5, 636, 319,
	9, 6604, 6655, 3, 2, 2, 2, 6605, 6606, 12, 7, 2, 2, 6606, 6607, 7, 586,
	2, 2, 6607, 6608, 7, 95, 2, 2, 6608, 6655, 5, 636, 319, 8, 6609, 6611,
	12, 5, 2, 2, 6610, 6612, 7, 109, 2, 2, 6611, 6610, 3, 2, 2, 2, 6611, 6612,
	3, 2, 2, 2, 6612, 6613, 3, 2, 2, 2, 6613, 6614, 9, 126, 2, 2, 6614, 6655,
	5, 636, 319, 6, 6615, 6617, 12, 12, 2, 2, 6616, 6618, 7, 109, 2, 2, 6617,
	6616, 3, 2, 2, 2, 6617, 6618, 3, 2, 2, 2, 6618, 6619, 3, 2, 2, 2, 6619,
	6620, 7, 78, 2, 2, 6620, 6623, 7, 1086, 2, 2, 6621, 6624, 5, 184, 93, 2,
	6622, 6624, 5, 574, 288, 2, 6623, 6621, 3, 2, 2, 2, 6623, 6622, 3, 2, 2,
	2, 6624, 6625, 3, 2, 2, 2, 6625, 6626, 7, 1087, 2, 2, 6626, 6655, 3, 2,
	2, 2, 6627, 6628, 12, 11, 2, 2, 6628, 6629, 7, 86, 2, 2, 6629, 6655, 5,
	552, 277, 2, 6630, 6631, 12, 9, 2, 2, 6631, 6632, 5, 642, 322, 2, 6632,
	6633, 9, 127, 2, 2, 6633, 6634, 7, 1086, 2, 2, 6634, 6635, 5, 184, 93,
	2, 6635, 6636, 7, 1087, 2, 2, 6636, 6655, 3, 2, 2, 2, 6637, 6639, 12, 6,
	2, 2, 6638, 6640, 7, 109, 2, 2, 6639, 6638, 3, 2, 2, 2, 6639, 6640, 3,
	2, 2, 2, 6640, 6641, 3, 2, 2, 2, 6641, 6642, 7, 95, 2, 2, 6642, 6645, 5,
	636, 319, 2, 6643, 6644, 7, 397, 2, 2, 6644, 6646, 7, 1101, 2, 2, 6645,
	6643, 3, 2, 2, 2, 6645, 6646, 3, 2, 2, 2, 6646, 6655, 3, 2, 2, 2, 6647,
	6648, 12, 3, 2, 2, 6648, 6649, 7, 485, 2, 2, 6649, 6650, 7, 507, 2, 2,
	6650, 6651, 7, 1086, 2, 2, 6651, 6652, 5, 636, 319, 2, 6652, 6653, 7, 1087,
	2, 2, 6653, 6655, 3, 2, 2, 2, 6654, 6592, 3, 2, 2, 2, 6654, 6596, 3, 2,
	2, 2, 6654, 6605, 3, 2, 2, 2, 6654, 6609, 3, 2, 2, 2, 6654, 6615, 3, 2,
	2, 2, 6654, 6627, 3, 2, 2, 2, 6654, 6630, 3, 2, 2, 2, 6654, 6637, 3, 2,
	2, 2, 6654, 6647, 3, 2, 2, 2, 6655, 6658, 3, 2, 2, 2, 6656, 6654, 3, 2,
	2, 2, 6656, 6657, 3, 2, 2, 2, 6657, 637, 3, 2, 2, 2, 6658, 6656, 3, 2,
	2, 2, 6659, 6660, 8, 320, 1, 2, 6660, 6705, 5, 554, 278, 2, 6661, 6705,
	5, 514, 258, 2, 6662, 6705, 5, 594, 298, 2, 6663, 6705, 5, 520, 261, 2,
	6664, 6665, 5, 640, 321, 2, 6665, 6666, 5, 638, 320, 12, 6666, 6705, 3,
	2, 2, 2, 6667, 6668, 7, 217, 2, 2, 6668, 6705, 5, 638, 320, 11, 6669, 6670,
	7, 1086, 2, 2, 6670, 6675, 5, 634, 318, 2, 6671, 6672, 7, 1088, 2, 2, 6672,
	6674, 5, 634, 318, 2, 6673, 6671, 3, 2, 2, 2, 6674, 6677, 3, 2, 2, 2, 6675,
	6673, 3, 2, 2, 2, 6675, 6676, 3, 2, 2, 2, 6676, 6678, 3, 2, 2, 2, 6677,
	6675, 3, 2, 2, 2, 6678, 6679, 7, 1087, 2, 2, 6679, 6705, 3, 2, 2, 2, 6680,
	6681, 7, 568, 2, 2, 6681, 6682, 7, 1086, 2, 2, 6682, 6685, 5, 634, 318,
	2, 6683, 6684, 7, 1088, 2, 2, 6684, 6686, 5, 634, 318, 2, 6685, 6683, 3,
	2, 2, 2, 6686, 6687, 3, 2, 2, 2, 6687, 6685, 3, 2, 2, 2, 6687, 6688, 3,
	2, 2, 2, 6688, 6689, 3, 2, 2, 2, 6689, 6690, 7, 1087, 2, 2, 6690, 6705,
	3, 2, 2, 2, 6691, 6692, 7, 59, 2, 2, 6692, 6693, 7, 1086, 2, 2, 6693, 6694,
	5, 184, 93, 2, 6694, 6695, 7, 1087, 2, 2, 6695, 6705, 3, 2, 2, 2, 6696,
	6697, 7, 1086, 2, 2, 6697, 6698, 5, 184, 93, 2, 6698, 6699, 7, 1087, 2,
	2, 6699, 6705, 3, 2, 2, 2, 6700, 6701, 7, 84, 2, 2, 6701, 6702, 5, 634,
	318, 2, 6702, 6703, 5, 62, 32, 2, 6703, 6705, 3, 2, 2, 2, 6704, 6659, 3,
	2, 2, 2, 6704, 6661, 3, 2, 2, 2, 6704, 6662, 3, 2, 2, 2, 6704, 6663, 3,
	2, 2, 2, 6704, 6664, 3, 2, 2, 2, 6704, 6667, 3, 2, 2, 2, 6704, 6669, 3,
	2, 2, 2, 6704, 6680, 3, 2, 2, 2, 6704, 6691, 3, 2, 2, 2, 6704, 6696, 3,
	2, 2, 2, 6704, 6700, 3, 2, 2, 2, 6705, 6723, 3, 2, 2, 2, 6706, 6707, 12,
	5, 2, 2, 6707, 6708, 5, 646, 324, 2, 6708, 6709, 5, 638, 320, 6, 6709,
	6722, 3, 2, 2, 2, 6710, 6711, 12, 4, 2, 2, 6711, 6712, 5, 648, 325, 2,
	6712, 6713, 5, 638, 320, 5, 6713, 6722, 3, 2, 2, 2, 6714, 6715, 12, 3,
	2, 2, 6715, 6716, 5, 650, 326, 2, 6716, 6717, 5, 638, 320, 4, 6717, 6722,
	3, 2, 2, 2, 6718, 6719, 12, 14, 2, 2, 6719, 6720, 7, 28, 2, 2, 6720, 6722,
	5, 524, 263, 2, 6721, 6706, 3, 2, 2, 2, 6721, 6710, 3, 2, 2, 2, 6721, 6714,
	3, 2, 2, 2, 6721, 6718, 3, 2, 2, 2, 6722, 6725, 3, 2, 2, 2, 6723, 6721,
	3, 2, 2, 2, 6723, 6724, 3, 2, 2, 2, 6724, 639, 3, 2, 2, 2, 6725, 6723,
	3, 2, 2, 2, 6726, 6727, 9, 128, 2, 2, 6727, 641, 3, 2, 2, 2, 6728, 6743,
	7, 1077, 2, 2, 6729, 6743, 7, 1078, 2, 2, 6730, 6743, 7, 1079, 2, 2, 6731,
	6732, 7, 1079, 2, 2, 6732, 6743, 7, 1077, 2, 2, 6733, 6734, 7, 1078, 2,
	2, 6734, 6743, 7, 1077, 2, 2, 6735, 6736, 7, 1079, 2, 2, 6736, 6743, 7,
	1078, 2, 2, 6737, 6738, 7, 1080, 2, 2, 6738, 6743, 7, 1077, 2, 2, 6739,
	6740, 7, 1079, 2, 2, 6740, 6741, 7, 1077, 2, 2, 6741, 6743, 7, 1078, 2,
	2, 6742, 6728, 3, 2, 2, 2, 6742, 6729, 3, 2, 2, 2, 6742, 6730, 3, 2, 2,
	2, 6742, 6731, 3, 2, 2, 2, 6742, 6733, 3, 2, 2, 2, 6742, 6735, 3, 2, 2,
	2, 6742, 6737, 3, 2, 2, 2, 6742, 6739, 3, 2, 2, 2, 6743, 643, 3, 2, 2,
	2, 6744, 6752, 7, 12, 2, 2, 6745, 6746, 7, 1083, 2, 2, 6746, 6752, 7, 1083,
	2, 2, 6747, 6752, 7, 185, 2, 2, 6748, 6752, 7, 117, 2, 2, 6749, 6750, 7,
	1082, 2, 2, 6750, 6752, 7, 1082, 2, 2, 6751, 6744, 3, 2, 2, 2, 6751, 6745,
	3, 2, 2, 2, 6751, 6747, 3, 2, 2, 2, 6751, 6748, 3, 2, 2, 2, 6751, 6749,
	3, 2, 2, 2, 6752, 645, 3, 2, 2, 2, 6753, 6754, 7, 1079, 2, 2, 6754, 6761,
	7, 1079, 2, 2, 6755, 6756, 7, 1078, 2, 2, 6756, 6761, 7, 1078, 2, 2, 6757,
	6761, 7, 1083, 2, 2, 6758, 6761, 7, 1084, 2, 2, 6759, 6761, 7, 1082, 2,
	2, 6760, 6753, 3, 2, 2, 2, 6760, 6755, 3, 2, 2, 2, 6760, 6757, 3, 2, 2,
	2, 6760, 6758, 3, 2, 2, 2, 6760, 6759, 3, 2, 2, 2, 6761, 647, 3, 2, 2,
	2, 6762, 6763, 9, 129, 2, 2, 6763, 649, 3, 2, 2, 2, 6764, 6765, 7, 1074,
	2, 2, 6765, 6770, 7, 1078, 2, 2, 6766, 6767, 7, 1074, 2, 2, 6767, 6768,
	7, 1078, 2, 2, 6768, 6770, 7, 1078, 2, 2, 6769, 6764, 3, 2, 2, 2, 6769,
	6766, 3, 2, 2, 2, 6770, 651, 3, 2, 2, 2, 6771, 6772, 9, 130, 2, 2, 6772,
	653, 3, 2, 2, 2, 6773, 6774, 9, 131, 2, 2, 6774, 655, 3, 2, 2, 2, 6775,
	6776, 9, 132, 2, 2, 6776, 657, 3, 2, 2, 2, 6777, 6778, 9, 133, 2, 2, 6778,
	659, 3, 2, 2, 2, 6779, 6780, 9, 134, 2, 2, 6780, 661, 3, 2, 2, 2, 6781,
	6782, 9, 135, 2, 2, 6782, 663, 3, 2, 2, 2, 6783, 6784, 9, 136, 2, 2, 6784,
	665, 3, 2, 2, 2, 981, 667, 671, 678, 681, 684, 686, 692, 695, 698, 707,
	746, 758, 769, 786, 791, 803, 830, 839, 844, 850, 855, 859, 868, 871, 874,
	878, 885, 888, 893, 901, 906, 911, 914, 916, 928, 931, 935, 938, 942, 945,
	949, 952, 955, 959, 962, 966, 972, 978, 984, 991, 998, 1004, 1010, 1019,
	1024, 1040, 1047, 1051, 1061, 1065, 1069, 1073, 1077, 1082, 1085, 1088,
	1091, 1094, 1100, 1104, 1110, 1115, 1118, 1121, 1123, 1134, 1138, 1141,
	1155, 1158, 1162, 1165, 1169, 1172, 1176, 1179, 1183, 1186, 1189, 1193,
	1196, 1200, 1206, 1219, 1226, 1231, 1234, 1239, 1247, 1253, 1257, 1260,
	1264, 1268, 1271, 1275, 1278, 1285, 1293, 1295, 1302, 1308, 1316, 1319,
	1326, 1329, 1331, 1337, 1343, 1360, 1367, 1374, 1385, 1388, 1401, 1414,
	1419, 1435, 1443, 1453, 1459, 1471, 1474, 1479, 1492, 1499, 1506, 1508,
	1515, 1519, 1521, 1526, 1529, 1535, 1540, 1542, 1546, 1549, 1552, 1558,
	1563, 1565, 1570, 1577, 1579, 1586, 1591, 1595, 1598, 1606, 1614, 1616,
	1624, 1628, 1631, 1637, 1642, 1645, 1651, 1654, 1658, 1661, 1665, 1670,
	1674, 1678, 1682, 1686, 1690, 1694, 1699, 1704, 1709, 1715, 1720, 1725,
	1731, 1736, 1741, 1746, 1751, 1756, 1761, 1766, 1771, 1776, 1781, 1787,
	1795, 1801, 1813, 1820, 1822, 1830, 1835, 1838, 1846, 1852, 1868, 1880,
	1882, 1885, 1893, 1899, 1905, 1918, 1925, 1934, 1939, 1950, 1959, 1964,
	1976, 1983, 1992, 1997, 2009, 2016, 2025, 2030, 2037, 2046, 2051, 2053,
	2058, 2066, 2075, 2079, 2082, 2086, 2091, 2097, 2103, 2108, 2113, 2118,
	2123, 2126, 2131, 2136, 2146, 2150, 2157, 2162, 2165, 2170, 2173, 2177,
	2181, 2189, 2208, 2211, 2214, 2218, 2228, 2241, 2248, 2251, 2260, 2263,
	2266, 2277, 2280, 2284, 2292, 2295, 2300, 2308, 2314, 2318, 2322, 2327,
	2332, 2339, 2343, 2354, 2362, 2365, 2371, 2377, 2379, 2384, 2387, 2393,
	2399, 2401, 2405, 2408, 2411, 2417, 2423, 2426, 2432, 2438, 2440, 2445,
	2453, 2455, 2464, 2469, 2477, 2481, 2489, 2499, 2504, 2511, 2515, 2519,
	2551, 2555, 2567, 2570, 2579, 2596, 2608, 2615, 2622, 2637, 2650, 2656,
	2662, 2668, 2674, 2680, 2686, 2691, 2698, 2705, 2712, 2717, 2720, 2722,
	2736, 2743, 2750, 2756, 2760, 2764, 2771, 2774, 2779, 2786, 2793, 2797,
	2806, 2815, 2824, 2827, 2831, 2840, 2844, 2847, 2850, 2856, 2859, 2865,
	2874, 2877, 2888, 2891, 2896, 2899, 2904, 2914, 2919, 2925, 2927, 2933,
	2935, 2941, 2949, 2954, 2962, 2965, 2970, 2973, 2978, 2986, 2994, 3000,
	3008, 3013, 3021, 3024, 3028, 3031, 3039, 3045, 3054, 3057, 3061, 3065,
	3071, 3075, 3079, 3081, 3084, 3087, 3090, 3096, 3100, 3103, 3106, 3109,
	3112, 3114, 3118, 3124, 3130, 3135, 3138, 3144, 3148, 3156, 3160, 3163,
	3166, 3175, 3179, 3182, 3186, 3190, 3193, 3196, 3201, 3207, 3211, 3221,
	3227, 3231, 3237, 3241, 3247, 3250, 3262, 3266, 3270, 3278, 3282, 3290,
	3293, 3297, 3300, 3308, 3313, 3316, 3319, 3323, 3326, 3335, 3340, 3349,
	3354, 3361, 3368, 3376, 3381, 3389, 3392, 3395, 3402, 3405, 3412, 3415,
	3423, 3429, 3440, 3443, 3454, 3460, 3464, 3475, 3480, 3482, 3486, 3496,
	3506, 3512, 3517, 3520, 3523, 3526, 3529, 3532, 3535, 3541, 3546, 3549,
	3552, 3555, 3558, 3561, 3564, 3566, 3572, 3577, 3580, 3583, 3586, 3589,
	3592, 3596, 3602, 3606, 3616, 3620, 3626, 3635, 3638, 3642, 3645, 3649,
	3653, 3656, 3658, 3666, 3678, 3684, 3686, 3692, 3694, 3696, 3702, 3710,
	3718, 3722, 3726, 3735, 3740, 3760, 3765, 3771, 3778, 3783, 3792, 3795,
	3799, 3803, 3807, 3810, 3813, 3816, 3820, 3824, 3827, 3830, 3833, 3840,
	3844, 3859, 3872, 3880, 3890, 3894, 3897, 3903, 3906, 3909, 3918, 3927,
	3937, 3941, 3951, 3961, 3969, 3972, 3981, 3984, 3988, 3993, 3997, 4006,
	4009, 4040, 4043, 4046, 4102, 4107, 4135, 4149, 4156, 4160, 4166, 4174,
	4176, 4187, 4197, 4204, 4210, 4218, 4223, 4231, 4239, 4247, 4255, 4261,
	4264, 4268, 4273, 4278, 4284, 4286, 4297, 4302, 4309, 4311, 4325, 4331,
	4336, 4341, 4347, 4354, 4362, 4370, 4375, 4381, 4384, 4392, 4399, 4408,
	4411, 4428, 4436, 4444, 4448, 4455, 4461, 4469, 4478, 4484, 4491, 4498,
	4503, 4506, 4508, 4514, 4516, 4520, 4522, 4525, 4534, 4540, 4547, 4554,
	4559, 4562, 4564, 4570, 4572, 4576, 4578, 4581, 4586, 4593, 4602, 4607,
	4616, 4623, 4628, 4631, 4633, 4639, 4641, 4644, 4652, 4657, 4662, 4666,
	4672, 4677, 4681, 4687, 4689, 4700, 4703, 4710, 4713, 4725, 4731, 4740,
	4749, 4754, 4763, 4769, 4780, 4789, 4795, 4800, 4804, 4807, 4819, 4826,
	4831, 4846, 4853, 4861, 4864, 4874, 4884, 4894, 4904, 4908, 4912, 4922,
	4927, 4985, 5003, 5011, 5023, 5030, 5032, 5042, 5045, 5053, 5060, 5064,
	5071, 5076, 5079, 5082, 5091, 5095, 5125, 5132, 5139, 5142, 5158, 5161,
	5171, 5175, 5181, 5184, 5189, 5193, 5200, 5203, 5209, 5233, 5246, 5249,
	5259, 5267, 5271, 5278, 5281, 5290, 5296, 5302, 5312, 5314, 5320, 5323,
	5326, 5338, 5341, 5347, 5350, 5358, 5366, 5372, 5376, 5390, 5402, 5409,
	5412, 5419, 5426, 5431, 5436, 5447, 5458, 5464, 5469, 5482, 5484, 5489,
	5494, 5496, 5503, 5510, 5513, 5516, 5522, 5526, 5532, 5538, 5551, 5556,
	5564, 5567, 5572, 5577, 5585, 5588, 5596, 5600, 5613, 5619, 5631, 5634,
	5643, 5648, 5654, 5661, 5663, 5668, 5670, 5674, 5680, 5683, 5686, 5696,
	5700, 5720, 5727, 5729, 5736, 5738, 5742, 5747, 5758, 5763, 5769, 5772,
	5776, 5781, 5784, 5788, 5792, 5794, 5799, 5804, 5817, 5820, 5824, 5827,
	5830, 5835, 5840, 5845, 5848, 5853, 5856, 5862, 5865, 5869, 5874, 5879,
	5884, 5889, 5892, 5897, 5902, 5907, 5913, 5918, 5923, 5928, 5931, 5936,
	5940, 5944, 5952, 5959, 5963, 5968, 5973, 5977, 5979, 5982, 5998, 6007,
	6015, 6024, 6034, 6042, 6050, 6058, 6066, 6071, 6079, 6084, 6089, 6092,
	6097, 6100, 6104, 6119, 6126, 6131, 6136, 6169, 6173, 6181, 6185, 6194,
	6202, 6207, 6215, 6220, 6225, 6227, 6236, 6241, 6249, 6254, 6262, 6270,
	6273, 6283, 6301, 6307, 6311, 6317, 6321, 6325, 6338, 6346, 6350, 6355,
	6360, 6366, 6371, 6375, 6380, 6385, 6390, 6400, 6403, 6407, 6411, 6418,
	6422, 6451, 6456, 6460, 6463, 6466, 6469, 6472, 6483, 6497, 6506, 6532,
	6543, 6550, 6554, 6561, 6569, 6574, 6582, 6588, 6598, 6611, 6617, 6623,
	6639, 6645, 6654, 6656, 6675, 6687, 6704, 6721, 6723, 6742, 6751, 6760,
	6769,
}
var literalNames = []string{
	"", "", "", "", "", "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", "'ANALYZE'",
	"'AND'", "'ARRAY'", "'AS'", "'ASC'", "'BEFORE'", "'BETWEEN'", "'BOTH'",
	"'BUCKETS'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'",
	"'CHARACTER'", "'CHECK'", "'COLLATE'", "'COLUMN'", "'CONDITION'", "'CONSTRAINT'",
	"'CONTINUE'", "'CONVERT'", "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_USER'",
	"'CURSOR'", "'DATABASE'", "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'",
	"'DELETE'", "'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'",
	"'DISTINCT'", "'DISTINCTROW'", "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'",
	"'EMPTY'", "'ENCLOSED'", "'ESCAPED'", "'EXCEPT'", "'EXISTS'", "'EXIT'",
	"'EXPLAIN'", "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", "'FOREIGN'", "'FROM'",
	"'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", "'GROUP'", "'HAVING'",
	"'HIGH_PRIORITY'", "'HISTOGRAM'", "'IF'", "'IGNORE'", "'IN'", "'INDEX'",
	"'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", "'INTERVAL'", "'INTO'", "'IS'",
	"'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", "'KILL'", "'LEADING'", "'LEAVE'",
	"'LEFT'", "'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", "'LOCK'",
	"'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", "'MASTER_SSL_VERIFY_SERVER_CERT'",
	"'MATCH'", "'MAXVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'",
	"'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", "'OPTIONALLY'",
	"'OR'", "'ORDER'", "'OUT'", "'OVER'", "'OUTER'", "'OUTFILE'", "'PARTITION'",
	"'PRIMARY'", "'PROCEDURE'", "'PURGE'", "'RANGE'", "'READ'", "'READS'",
	"'REFERENCES'", "'REGEXP'", "'RELEASE'", "'RENAME'", "'REPEAT'", "'REPLACE'",
	"'REQUIRE'", "'RESIGNAL'", "'RESTRICT'", "'RETAIN'", "'RETURN'", "'REVOKE'",
	"'RIGHT'", "'RLIKE'", "'SCHEMA'", "'SCHEMAS'", "'SELECT'", "'SET'", "'SEPARATOR'",
	"'SHOW'", "'SIGNAL'", "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'",
	"'SQLWARNING'", "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'",
	"'SSL'", "'STACKED'", "'STARTING'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'",
	"'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'",
	"'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", "'USING'",
	"'VALUES'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'",
	"'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'",
	"'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'",
	"'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'",
	"'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", "'TIMESTAMP'",
	"'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", "'NATIONAL'",
	"'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'",
	"'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'",
	"'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'",
	"'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'",
	"'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", "'JSON_ARRAY'",
	"'JSON_OBJECT'", "'JSON_QUOTE'", "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'",
	"'JSON_EXTRACT'", "'JSON_KEYS'", "'JSON_OVERLAPS'", "'JSON_SEARCH'", "'JSON_VALUE'",
	"'JSON_ARRAY_APPEND'", "'JSON_ARRAY_INSERT'", "'JSON_INSERT'", "'JSON_MERGE'",
	"'JSON_MERGE_PATCH'", "'JSON_MERGE_PRESERVE'", "'JSON_REMOVE'", "'JSON_REPLACE'",
	"'JSON_SET'", "'JSON_UNQUOTE'", "'JSON_DEPTH'", "'JSON_LENGTH'", "'JSON_TYPE'",
	"'JSON_VALID'", "'JSON_TABLE'", "'JSON_SCHEMA_VALID'", "'JSON_SCHEMA_VALIDATION_REPORT'",
	"'JSON_PRETTY'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", "'JSON_ARRAYAGG'",
	"'JSON_OBJECTAGG'", "'AVG'", "'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'",
	"'CUME_DIST'", "'DENSE_RANK'", "'FIRST_VALUE'", "'GROUP_CONCAT'", "'LAG'",
	"'LAST_VALUE'", "'LEAD'", "'MAX'", "'MIN'", "'NTILE'", "'NTH_VALUE'", "'PERCENT_RANK'",
	"'RANK'", "'ROW_NUMBER'", "'STD'", "'STDDEV'", "'STDDEV_POP'", "'STDDEV_SAMP'",
	"'SUM'", "'VAR_POP'", "'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'",
	"'CURRENT_TIMESTAMP'", "'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'",
	"'DATE_SUB'", "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", "'SUBSTR'",
	"'SUBSTRING'", "'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", "'UTC_TIMESTAMP'",
	"'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", "'ALGORITHM'", "'ANY'",
	"'AT'", "'AUTHORS'", "'AUTOCOMMIT'", "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'",
	"'AVG_ROW_LENGTH'", "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'",
	"'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", "'CHANGED'",
	"'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", "'CIPHER'", "'CLASS_ORIGIN'",
	"'CLIENT'", "'CLOSE'", "'COALESCE'", "'CODE'", "'COLUMNS'", "'COLUMN_FORMAT'",
	"'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", "'COMPACT'", "'COMPLETION'",
	"'COMPRESSED'", "'COMPRESSION'", "'CONCURRENT'", "'CONNECT'", "'CONNECTION'",
	"'CONSISTENT'", "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'",
	"'CONTAINS'", "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CURSOR_NAME'",
	"'DATA'", "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'",
	"'DELAY_KEY_WRITE'", "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", "'DISCARD'",
	"'DISK'", "'DO'", "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", "'ENABLE'",
	"'ENCRYPTION'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'",
	"'ERRORS'", "'ESCAPE'", "'EVEN'", "'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'",
	"'EXCLUSIVE'", "'EXPIRE'", "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FAST'",
	"'FAULTS'", "'FIELDS'", "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", "'FIXED'",
	"'FLUSH'", "'FOLLOWING'", "'FOLLOWS'", "'FOUND'", "'FULL'", "'FUNCTION'",
	"'GENERAL'", "'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", "'HANDLER'",
	"'HASH'", "'HELP'", "'HOST'", "'HOSTS'", "'IDENTIFIED'", "'IGNORE_SERVER_IDS'",
	"'IMPORT'", "'INDEXES'", "'INITIAL_SIZE'", "'INPLACE'", "'INSERT_METHOD'",
	"'INSTALL'", "'INSTANCE'", "'INVISIBLE'", "'INVOKER'", "'IO'", "'IO_THREAD'",
	"'IPC'", "'ISOLATION'", "'ISSUER'", "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'",
	"'LAST'", "'LEAVES'", "'LESS'", "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'",
	"'LOGS'", "'MASTER'", "'MASTER_AUTO_POSITION'", "'MASTER_CONNECT_RETRY'",
	"'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", "'MASTER_HOST'", "'MASTER_LOG_FILE'",
	"'MASTER_LOG_POS'", "'MASTER_PASSWORD'", "'MASTER_PORT'", "'MASTER_RETRY_COUNT'",
	"'MASTER_SSL'", "'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'",
	"'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'",
	"'MASTER_TLS_VERSION'", "'MASTER_USER'", "'MAX_CONNECTIONS_PER_HOUR'",
	"'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", "'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'",
	"'MAX_USER_CONNECTIONS'", "'MEDIUM'", "'MEMBER'", "'MERGE'", "'MESSAGE_TEXT'",
	"'MID'", "'MIGRATE'", "'MIN_ROWS'", "'MODE'", "'MODIFY'", "'MUTEX'", "'MYSQL'",
	"'MYSQL_ERRNO'", "'NAME'", "'NAMES'", "'NCHAR'", "'NEVER'", "'NEXT'", "'NO'",
	"'NODEGROUP'", "'NONE'", "'ODBC'", "'OFFLINE'", "'OFFSET'", "'OF'", "'OJ'",
	"'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", "'OPTIMIZER_COSTS'",
	"'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", "'PARSER'", "'PARTIAL'",
	"'PARTITIONING'", "'PARTITIONS'", "'PASSWORD'", "'PHASE'", "'PLUGIN'",
	"'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", "'PRECEDING'", "'PREPARE'",
	"'PRESERVE'", "'PREV'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", "'PROXY'",
	"'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'REDO_BUFFER_SIZE'", "'REDUNDANT'",
	"'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", "'RELAYLOG'", "'REMOVE'",
	"'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'",
	"'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'",
	"'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'",
	"'RESET'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", "'RETURNS'",
	"'ROLE'", "'ROLLBACK'", "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'",
	"'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SERVER'", "'SESSION'", "'SHARE'",
	"'SHARED'", "'SIGNED'", "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'",
	"'SOCKET'", "'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'",
	"'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", "'SQL_CACHE'",
	"'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", "'STATS_AUTO_RECALC'",
	"'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", "'STORAGE'",
	"'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", "'SUBPARTITION'",
	"'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", "'SWITCHES'", "'TABLE_NAME'",
	"'TABLESPACE'", "'TABLE_TYPE'", "'TEMPORARY'", "'TEMPTABLE'", "'THAN'",
	"'TRADITIONAL'", "'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'",
	"'UNBOUNDED'", "'UNDEFINED'", "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'",
	"'UNKNOWN'", "'UNTIL'", "'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'",
	"'VALIDATION'", "'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'",
	"'WAIT'", "'WARNINGS'", "'WINDOW'", "'WITHOUT'", "'WORK'", "'WRAPPER'",
	"'X509'", "'XA'", "'XML'", "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'",
	"'QUARTER'", "'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", "'SECOND'",
	"'MICROSECOND'", "'TABLES'", "'ROUTINE'", "'EXECUTE'", "'FILE'", "'PROCESS'",
	"'RELOAD'", "'SHUTDOWN'", "'SUPER'", "'PRIVILEGES'", "'APPLICATION_PASSWORD_ADMIN'",
	"'AUDIT_ADMIN'", "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'",
	"'CLONE_ADMIN'", "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'FIREWALL_ADMIN'",
	"'FIREWALL_USER'", "'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", "'FLUSH_TABLES'",
	"'FLUSH_USER_RESOURCES'", "'GROUP_REPLICATION_ADMIN'", "'INNODB_REDO_LOG_ARCHIVE'",
	"'INNODB_REDO_LOG_ENABLE'", "'NDB_STORED_USER'", "'PERSIST_RO_VARIABLES_ADMIN'",
	"'REPLICATION_APPLIER'", "'REPLICATION_SLAVE_ADMIN'", "'RESOURCE_GROUP_ADMIN'",
	"'RESOURCE_GROUP_USER'", "'ROLE_ADMIN'", "'SERVICE_CONNECTION_ADMIN'",
	"", "'SET_USER_ID'", "'SHOW_ROUTINE'", "'SYSTEM_VARIABLES_ADMIN'", "'TABLE_ENCRYPTION_ADMIN'",
	"'VERSION_TOKEN_ADMIN'", "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'",
	"'BIG5'", "'CP1250'", "'CP1251'", "'CP1256'", "'CP1257'", "'CP850'", "'CP852'",
	"'CP866'", "'CP932'", "'DEC8'", "'EUCJPMS'", "'EUCKR'", "'GB18030'", "'GB2312'",
	"'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", "'HP8'", "'KEYBCS2'", "'KOI8R'",
	"'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", "'LATIN7'", "'MACCE'", "'MACROMAN'",
	"'SJIS'", "'SWE7'", "'TIS620'", "'UCS2'", "'UJIS'", "'UTF16'", "'UTF16LE'",
	"'UTF32'", "'UTF8'", "'UTF8MB3'", "'UTF8MB4'", "'ARCHIVE'", "'BLACKHOLE'",
	"'CSV'", "'FEDERATED'", "'INNODB'", "'MEMORY'", "'MRG_MYISAM'", "'MYISAM'",
	"'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", "'TOKUDB'", "'REPEATABLE'",
	"'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", "'GEOMETRYCOLLECTION'",
	"'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", "'MULTILINESTRING'",
	"'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", "'ABS'", "'ACOS'",
	"'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", "'AREA'", "'ASBINARY'",
	"'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", "'ASYMMETRIC_DERIVE'",
	"'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", "'ATAN'",
	"'ATAN2'", "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", "'BUFFER'",
	"'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'",
	"'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'",
	"'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'",
	"'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", "'CREATE_ASYMMETRIC_PUB_KEY'",
	"'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'",
	"'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'",
	"'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", "'DIMENSION'",
	"'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", "'ENDPOINT'", "'ENVELOPE'",
	"'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'",
	"'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", "'FOUND_ROWS'", "'FROM_BASE64'",
	"'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", "'GEOMCOLLFROMWKB'",
	"'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", "'GEOMETRYFROMTEXT'",
	"'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", "'GEOMFROMTEXT'",
	"'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", "'GLENGTH'", "'GREATEST'",
	"'GTID_SUBSET'", "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", "'INET6_ATON'",
	"'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", "'INTERIORRINGN'",
	"'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", "'ISSIMPLE'", "'IS_FREE_LOCK'",
	"'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", "'IS_IPV6'", "'IS_USED_LOCK'",
	"'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", "'LENGTH'", "'LINEFROMTEXT'",
	"'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", "'LINESTRINGFROMWKB'", "'LN'",
	"'LOAD_FILE'", "'LOCATE'", "'LOG'", "'LOG10'", "'LOG2'", "'LOWER'", "'LPAD'",
	"'LTRIM'", "'MAKEDATE'", "'MAKETIME'", "'MAKE_SET'", "'MASTER_POS_WAIT'",
	"'MBRCONTAINS'", "'MBRDISJOINT'", "'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'",
	"'MBRTOUCHES'", "'MBRWITHIN'", "'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'",
	"'MONTHNAME'", "'MPOINTFROMTEXT'", "'MPOINTFROMWKB'", "'MPOLYFROMTEXT'",
	"'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", "'MULTILINESTRINGFROMWKB'",
	"'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", "'MULTIPOLYGONFROMTEXT'",
	"'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", "'NUMGEOMETRIES'",
	"'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", "'ORD'",
	"'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", "'POINTFROMTEXT'",
	"'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", "'POLYFROMWKB'", "'POLYGONFROMTEXT'",
	"'POLYGONFROMWKB'", "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'",
	"'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", "'ROW_COUNT'",
	"'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", "'SESSION_USER'", "'SHA'", "'SHA1'",
	"'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", "'SQL_THREAD_WAIT_AFTER_GTIDS'",
	"'SQRT'", "'SRID'", "'STARTPOINT'", "'STRCMP'", "'STR_TO_DATE'", "'ST_AREA'",
	"'ST_ASBINARY'", "'ST_ASTEXT'", "'ST_ASWKB'", "'ST_ASWKT'", "'ST_BUFFER'",
	"'ST_CENTROID'", "'ST_CONTAINS'", "'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'",
	"'ST_DISJOINT'", "'ST_DISTANCE'", "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'",
	"'ST_EXTERIORRING'", "'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'",
	"'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", "'ST_GEOMETRYFROMTEXT'",
	"'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", "'ST_GEOMETRYTYPE'", "'ST_GEOMFROMTEXT'",
	"'ST_GEOMFROMWKB'", "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", "'ST_INTERSECTS'",
	"'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", "'ST_LINEFROMTEXT'",
	"'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'",
	"'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'",
	"'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'",
	"'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'",
	"'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'",
	"'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", "'SUBDATE'",
	"'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", "'TAN'", "'TIMEDIFF'",
	"'TIMESTAMPADD'", "'TIMESTAMPDIFF'", "'TIME_FORMAT'", "'TIME_TO_SEC'",
	"'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", "'TO_SECONDS'", "'UCASE'", "'UNCOMPRESS'",
	"'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", "'UPDATEXML'",
	"'UPPER'", "'UUID'", "'UUID_SHORT'", "'VALIDATE_PASSWORD_STRENGTH'", "'VERSION'",
	"'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", "'WEEKDAY'", "'WEEKOFYEAR'", "'WEIGHT_STRING'",
	"'WITHIN'", "'YEARWEEK'", "'Y'", "'X'", "':='", "'+='", "'-='", "'*='",
	"'/='", "'%='", "'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'-'",
	"'DIV'", "'MOD'", "'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", "'^'",
	"'.'", "'('", "')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", "'''", "'\"'",
	"'`'", "':'",
}
var symbolicNames = []string{
	"", "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", "ADD",
	"ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "ARRAY", "AS", "ASC", "BEFORE",
	"BETWEEN", "BOTH", "BUCKETS", "BY", "CALL", "CASCADE", "CASE", "CAST",
	"CHANGE", "CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT",
	"CONTINUE", "CONVERT", "CREATE", "CROSS", "CURRENT", "CURRENT_USER", "CURSOR",
	"DATABASE", "DATABASES", "DECLARE", "DEFAULT", "DELAYED", "DELETE", "DESC",
	"DESCRIBE", "DETERMINISTIC", "DIAGNOSTICS", "DISTINCT", "DISTINCTROW",
	"DROP", "EACH", "ELSE", "ELSEIF", "EMPTY", "ENCLOSED", "ESCAPED", "EXCEPT",
	"EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN",
	"FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", "GROUP", "HAVING", "HIGH_PRIORITY",
	"HISTOGRAM", "IF", "IGNORE", "IN", "INDEX", "INFILE", "INNER", "INOUT",
	"INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", "KEY", "KEYS", "KILL",
	"LEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD",
	"LOCK", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT",
	"MATCH", "MAXVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG",
	"NULL_LITERAL", "NUMBER", "ON", "OPTIMIZE", "OPTION", "OPTIONALLY", "OR",
	"ORDER", "OUT", "OVER", "OUTER", "OUTFILE", "PARTITION", "PRIMARY", "PROCEDURE",
	"PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", "RELEASE", "RENAME",
	"REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", "RETAIN", "RETURN",
	"REVOKE", "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", "SELECT", "SET", "SEPARATOR",
	"SHOW", "SIGNAL", "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING",
	"SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED",
	"STARTING", "STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", "TRAILING",
	"TRIGGER", "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE",
	"USAGE", "USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE",
	"XOR", "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT",
	"INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "BIGINT", "REAL", "DOUBLE",
	"PRECISION", "FLOAT", "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC",
	"DATE", "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR",
	"NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONG",
	"LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING",
	"SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE",
	"HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND",
	"HOUR_MICROSECOND", "DAY_MICROSECOND", "JSON_ARRAY", "JSON_OBJECT", "JSON_QUOTE",
	"JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_EXTRACT", "JSON_KEYS", "JSON_OVERLAPS",
	"JSON_SEARCH", "JSON_VALUE", "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT",
	"JSON_INSERT", "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE",
	"JSON_REMOVE", "JSON_REPLACE", "JSON_SET", "JSON_UNQUOTE", "JSON_DEPTH",
	"JSON_LENGTH", "JSON_TYPE", "JSON_VALID", "JSON_TABLE", "JSON_SCHEMA_VALID",
	"JSON_SCHEMA_VALIDATION_REPORT", "JSON_PRETTY", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE",
	"JSON_ARRAYAGG", "JSON_OBJECTAGG", "AVG", "BIT_AND", "BIT_OR", "BIT_XOR",
	"COUNT", "CUME_DIST", "DENSE_RANK", "FIRST_VALUE", "GROUP_CONCAT", "LAG",
	"LAST_VALUE", "LEAD", "MAX", "MIN", "NTILE", "NTH_VALUE", "PERCENT_RANK",
	"RANK", "ROW_NUMBER", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", "SUM",
	"VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP",
	"LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", "EXTRACT", "LOCALTIMESTAMP",
	"NOW", "POSITION", "SUBSTR", "SUBSTRING", "SYSDATE", "TRIM", "UTC_DATE",
	"UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", "ACTION", "AFTER", "AGGREGATE",
	"ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", "AUTOEXTEND_SIZE", "AUTO_INCREMENT",
	"AVG_ROW_LENGTH", "BEGIN", "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN",
	"BTREE", "CACHE", "CASCADED", "CHAIN", "CHANGED", "CHANNEL", "CHECKSUM",
	"PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", "CLIENT", "CLOSE", "COALESCE",
	"CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", "COMMENT", "COMMIT",
	"COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", "CONCURRENT", "CONNECT",
	"CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA",
	"CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", "COPY", "CPU",
	"CURSOR_NAME", "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER",
	"DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", "DISK",
	"DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTION", "END",
	"ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT",
	"EVENTS", "EVERY", "EXCHANGE", "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED",
	"EXTENT_SIZE", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", "FILTER",
	"FIRST", "FIXED", "FLUSH", "FOLLOWING", "FOLLOWS", "FOUND", "FULL", "FUNCTION",
	"GENERAL", "GLOBAL", "GRANTS", "GROUP_REPLICATION", "HANDLER", "HASH",
	"HELP", "HOST", "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INDEXES",
	"INITIAL_SIZE", "INPLACE", "INSERT_METHOD", "INSTALL", "INSTANCE", "INVISIBLE",
	"INVOKER", "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE",
	"LANGUAGE", "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE",
	"LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY",
	"MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", "MASTER_LOG_POS",
	"MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA",
	"MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", "MASTER_SSL_CRL",
	"MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER",
	"MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE",
	"MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE",
	"MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX",
	"MYSQL", "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO",
	"NODEGROUP", "NONE", "ODBC", "OFFLINE", "OFFSET", "OF", "OJ", "OLD_PASSWORD",
	"ONE", "ONLINE", "ONLY", "OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER",
	"PACK_KEYS", "PAGE", "PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS",
	"PASSWORD", "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES",
	"PRECEDING", "PREPARE", "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", "PROFILES",
	"PROXY", "QUERY", "QUICK", "REBUILD", "RECOVER", "REDO_BUFFER_SIZE", "REDUNDANT",
	"RELAY", "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE",
	"REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB",
	"REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE",
	"REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", "RESUME", "RETURNED_SQLSTATE",
	"RETURNING", "RETURNS", "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW",
	"ROWS", "ROW_FORMAT", "SAVEPOINT", "SCHEDULE", "SECURITY", "SERVER", "SESSION",
	"SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET",
	"SOME", "SONAME", "SOUNDS", "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS",
	"SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD",
	"START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES",
	"STATUS", "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", "SUBJECT",
	"SUBPARTITION", "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME",
	"TABLESPACE", "TABLE_TYPE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL",
	"TRANSACTION", "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNBOUNDED", "UNDEFINED",
	"UNDOFILE", "UNDO_BUFFER_SIZE", "UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE",
	"USER", "USE_FRM", "USER_RESOURCES", "VALIDATION", "VALUE", "VARIABLES",
	"VIEW", "VIRTUAL", "VISIBLE", "WAIT", "WARNINGS", "WINDOW", "WITHOUT",
	"WORK", "WRAPPER", "X509", "XA", "XML", "EUR", "USA", "JIS", "ISO", "INTERNAL",
	"QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "MICROSECOND",
	"TABLES", "ROUTINE", "EXECUTE", "FILE", "PROCESS", "RELOAD", "SHUTDOWN",
	"SUPER", "PRIVILEGES", "APPLICATION_PASSWORD_ADMIN", "AUDIT_ADMIN", "BACKUP_ADMIN",
	"BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", "CLONE_ADMIN", "CONNECTION_ADMIN",
	"ENCRYPTION_KEY_ADMIN", "FIREWALL_ADMIN", "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS",
	"FLUSH_STATUS", "FLUSH_TABLES", "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN",
	"INNODB_REDO_LOG_ARCHIVE", "INNODB_REDO_LOG_ENABLE", "NDB_STORED_USER",
	"PERSIST_RO_VARIABLES_ADMIN", "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN",
	"RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", "ROLE_ADMIN", "SERVICE_CONNECTION_ADMIN",
	"SESSION_VARIABLES_ADMIN", "SET_USER_ID", "SHOW_ROUTINE", "SYSTEM_VARIABLES_ADMIN",
	"TABLE_ENCRYPTION_ADMIN", "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", "ARMSCII8",
	"ASCII", "BIG5", "CP1250", "CP1251", "CP1256", "CP1257", "CP850", "CP852",
	"CP866", "CP932", "DEC8", "EUCJPMS", "EUCKR", "GB18030", "GB2312", "GBK",
	"GEOSTD8", "GREEK", "HEBREW", "HP8", "KEYBCS2", "KOI8R", "KOI8U", "LATIN1",
	"LATIN2", "LATIN5", "LATIN7", "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620",
	"UCS2", "UJIS", "UTF16", "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4",
	"ARCHIVE", "BLACKHOLE", "CSV", "FEDERATED", "INNODB", "MEMORY", "MRG_MYISAM",
	"MYISAM", "NDB", "NDBCLUSTER", "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE",
	"COMMITTED", "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", "GEOMCOLLECTION",
	"GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", "MULTIPOLYGON",
	"POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT",
	"AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", "ASWKT",
	"ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN",
	"ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT",
	"BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", "CENTROID",
	"CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", "COLLATION",
	"COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ",
	"COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY",
	"CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT",
	"DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES",
	"DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE",
	"ENCRYPT", "ENDPOINT", "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING",
	"EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS",
	"FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB",
	"GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT",
	"GEOMETRYFROMWKB", "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB",
	"GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT",
	"HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA",
	"INSTR", "INTERIORRINGN", "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL",
	"ISSIMPLE", "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED",
	"IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH",
	"LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB",
	"LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM",
	"MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", "MBRDISJOINT",
	"MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN",
	"MD5", "MLINEFROMTEXT", "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT",
	"MPOINTFROMWKB", "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT",
	"MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT",
	"MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS",
	"NUMPOINTS", "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF",
	"PI", "POINTFROMTEXT", "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB",
	"POLYGONFROMTEXT", "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS",
	"RAND", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", "ROW_COUNT",
	"RPAD", "RTRIM", "SEC_TO_TIME", "SESSION_USER", "SHA", "SHA1", "SHA2",
	"SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS",
	"SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY",
	"ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS",
	"ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE",
	"ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT",
	"ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT",
	"ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB",
	"ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB",
	"ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED",
	"ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT",
	"ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS",
	"ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", "ST_POINTN",
	"ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB",
	"ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", "ST_UNION",
	"ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER",
	"TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC",
	"TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", "UCASE", "UNCOMPRESS",
	"UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", "UPPER",
	"UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS",
	"WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION",
	"X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN",
	"DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR",
	"DIVIDE", "MODULE", "PLUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", "GREATER_SYMBOL",
	"LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP",
	"BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", "AT_SIGN",
	"ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", "DOUBLE_QUOTE_SYMB",
	"REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL",
	"START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL",
	"REAL_LITERAL", "NULL_SPEC_LITERAL", "BIT_STRING", "STRING_CHARSET_NAME",
	"DOT_ID", "ID", "REVERSE_QUOTE_ID", "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID",
	"GLOBAL_ID", "ERROR_RECONGNIGION", "ADMIN", "OPTIONAL",
}

var ruleNames = []string{
	"root", "sqlStatements", "sqlStatement", "emptyStatement_", "ddlStatement",
	"dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement",
	"compoundStatement", "administrationStatement", "utilityStatement", "createDatabase",
	"createEvent", "createIndex", "createLogfileGroup", "createProcedure",
	"createFunction", "createServer", "createTable", "createTablespaceInnodb",
	"createTablespaceNdb", "createTrigger", "createView", "createDatabaseOption",
	"charSet", "ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr",
	"intervalType", "enableType", "indexType", "indexOption", "procedureParameter",
	"functionParameter", "routineOption", "serverOption", "createDefinitions",
	"createDefinition", "columnDefinition", "columnConstraint", "tableConstraint",
	"referenceDefinition", "referenceAction", "referenceControlType", "indexColumnDefinition",
	"tableOption", "tableType", "tablespaceStorage", "partitionDefinitions",
	"partitionFunctionDefinition", "subpartitionFunctionDefinition", "partitionDefinition",
	"partitionDefinerAtom", "partitionDefinerVector", "subpartitionDefinition",
	"partitionOption", "alterDatabase", "alterEvent", "alterFunction", "alterInstance",
	"alterLogfileGroup", "alterProcedure", "alterServer", "alterTable", "alterTablespace",
	"alterView", "alterSpecification", "dropDatabase", "dropEvent", "dropIndex",
	"dropLogfileGroup", "dropProcedure", "dropFunction", "dropServer", "dropTable",
	"dropTablespace", "dropTrigger", "dropView", "renameTable", "renameTableClause",
	"truncateTable", "callStatement", "deleteStatement", "doStatement", "handlerStatement",
	"insertStatement", "loadDataStatement", "loadXmlStatement", "replaceStatement",
	"selectStatement", "updateStatement", "insertStatementValue", "updatedElement",
	"assignmentField", "lockClause", "singleDeleteStatement", "multipleDeleteStatement",
	"handlerOpenStatement", "handlerReadIndexStatement", "handlerReadStatement",
	"handlerCloseStatement", "singleUpdateStatement", "multipleUpdateStatement",
	"orderByClause", "orderByExpression", "tableSources", "tableSource", "tableSourceItem",
	"indexHint", "indexHintType", "joinPart", "queryExpression", "queryExpressionNointo",
	"querySpecification", "querySpecificationNointo", "unionParenthesis", "unionStatement",
	"selectSpec", "selectElements", "selectElement", "selectIntoExpression",
	"selectFieldsInto", "selectLinesInto", "fromClause", "groupByClause", "havingClause",
	"windowClause", "groupByItem", "limitClause", "limitClauseAtom", "startTransaction",
	"beginWork", "commitWork", "rollbackWork", "savepointStatement", "rollbackStatement",
	"releaseStatement", "lockTables", "unlockTables", "setAutocommitStatement",
	"setTransactionStatement", "transactionMode", "lockTableElement", "lockAction",
	"transactionOption", "transactionLevel", "changeMaster", "changeReplicationFilter",
	"purgeBinaryLogs", "resetMaster", "resetSlave", "startSlave", "stopSlave",
	"startGroupReplication", "stopGroupReplication", "masterOption", "stringMasterOption",
	"decimalMasterOption", "boolMasterOption", "channelOption", "replicationFilter",
	"tablePair", "threadType", "untilOption", "connectionOption", "gtuidSet",
	"xaStartTransaction", "xaEndTransaction", "xaPrepareStatement", "xaCommitWork",
	"xaRollbackWork", "xaRecoverWork", "prepareStatement", "executeStatement",
	"deallocatePrepare", "routineBody", "blockStatement", "caseStatement",
	"ifStatement", "iterateStatement", "leaveStatement", "loopStatement", "repeatStatement",
	"returnStatement", "whileStatement", "cursorStatement", "declareVariable",
	"declareCondition", "declareCursor", "declareHandler", "handlerConditionValue",
	"procedureSqlStatement", "caseAlternative", "elifAlternative", "alterUser",
	"createUser", "dropUser", "grantStatement", "roleOption", "grantProxy",
	"renameUser", "revokeStatement", "revokeProxy", "setPasswordStatement",
	"userSpecification", "userAuthOption", "tlsOption", "userResourceOption",
	"userPasswordOption", "userLockOption", "privelegeClause", "privilege",
	"privilegeLevel", "renameUserClause", "analyzeTable", "checkTable", "checksumTable",
	"optimizeTable", "repairTable", "checkTableOption", "createUdfunction",
	"installPlugin", "uninstallPlugin", "setStatement", "showStatement", "variableClause",
	"showCommonEntity", "showFilter", "showGlobalInfoClause", "showSchemaEntity",
	"showProfileType", "binlogStatement", "cacheIndexStatement", "flushStatement",
	"killStatement", "loadIndexIntoCache", "resetStatement", "shutdownStatement",
	"tableIndexes", "flushOption", "flushTableOption", "loadedTableIndexes",
	"simpleDescribeStatement", "fullDescribeStatement", "helpStatement", "useStatement",
	"signalStatement", "resignalStatement", "signalConditionInformation", "diagnosticsStatement",
	"diagnosticsConditionInformationName", "describeObjectClause", "fullId",
	"tableName", "fullColumnName", "indexColumnName", "userName", "mysqlVariable",
	"charsetName", "collationName", "engineName", "uuidSet", "xid", "xuidStringId",
	"authPlugin", "uid", "simpleId", "dottedId", "decimalLiteral", "fileSizeLiteral",
	"stringLiteral", "booleanLiteral", "hexadecimalLiteral", "nullNotnull",
	"constant", "dataType", "collectionOptions", "convertedDataType", "lengthOneDimension",
	"lengthTwoDimension", "lengthTwoOptionalDimension", "uidList", "tables",
	"indexColumnNames", "expressions", "expressionsWithDefaults", "constants",
	"simpleStrings", "userVariables", "defaultValue", "currentTimestamp", "expressionOrDefault",
	"ifExists", "ifNotExists", "functionCall", "specificFunction", "caseFuncAlternative",
	"levelsInWeightString", "levelInWeightListElement", "aggregateWindowedFunction",
	"nonAggregateWindowedFunction", "overClause", "windowSpec", "windowName",
	"frameClause", "frameUnits", "frameExtent", "frameBetween", "frameRange",
	"partitionClause", "scalarFunctionName", "passwordFunctionClause", "functionArgs",
	"functionArg", "expression", "predicate", "expressionAtom", "unaryOperator",
	"comparisonOperator", "logicalOperator", "bitOperator", "mathOperator",
	"jsonOperator", "charsetNameBase", "transactionLevelBase", "privilegesBase",
	"intervalTypeBase", "dataTypeBase", "keywordsCanBeId", "functionNameBase",
}

type MySqlParser struct {
	*antlr.BaseParser
}

// NewMySqlParser produces a new parser instance for the optional input antlr.TokenStream.
//
// The *MySqlParser instance produced may be reused by calling the SetInputStream method.
// The initial parser configuration is expensive to construct, and the object is not thread-safe;
// however, if used within a Golang sync.Pool, the construction cost amortizes well and the
// objects can be used in a thread-safe manner.
func NewMySqlParser(input antlr.TokenStream) *MySqlParser {
	this := new(MySqlParser)
	deserializer := antlr.NewATNDeserializer(nil)
	deserializedATN := deserializer.DeserializeFromUInt16(parserATN)
	decisionToDFA := make([]*antlr.DFA, len(deserializedATN.DecisionToState))
	for index, ds := range deserializedATN.DecisionToState {
		decisionToDFA[index] = antlr.NewDFA(ds, index)
	}
	this.BaseParser = antlr.NewBaseParser(input)

	this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache())
	this.RuleNames = ruleNames
	this.LiteralNames = literalNames
	this.SymbolicNames = symbolicNames
	this.GrammarFileName = "MySqlParser.g4"

	return this
}

// MySqlParser tokens.
const (
	MySqlParserEOF                               = antlr.TokenEOF
	MySqlParserSPACE                             = 1
	MySqlParserSPEC_MYSQL_COMMENT                = 2
	MySqlParserCOMMENT_INPUT                     = 3
	MySqlParserLINE_COMMENT                      = 4
	MySqlParserADD                               = 5
	MySqlParserALL                               = 6
	MySqlParserALTER                             = 7
	MySqlParserALWAYS                            = 8
	MySqlParserANALYZE                           = 9
	MySqlParserAND                               = 10
	MySqlParserARRAY                             = 11
	MySqlParserAS                                = 12
	MySqlParserASC                               = 13
	MySqlParserBEFORE                            = 14
	MySqlParserBETWEEN                           = 15
	MySqlParserBOTH                              = 16
	MySqlParserBUCKETS                           = 17
	MySqlParserBY                                = 18
	MySqlParserCALL                              = 19
	MySqlParserCASCADE                           = 20
	MySqlParserCASE                              = 21
	MySqlParserCAST                              = 22
	MySqlParserCHANGE                            = 23
	MySqlParserCHARACTER                         = 24
	MySqlParserCHECK                             = 25
	MySqlParserCOLLATE                           = 26
	MySqlParserCOLUMN                            = 27
	MySqlParserCONDITION                         = 28
	MySqlParserCONSTRAINT                        = 29
	MySqlParserCONTINUE                          = 30
	MySqlParserCONVERT                           = 31
	MySqlParserCREATE                            = 32
	MySqlParserCROSS                             = 33
	MySqlParserCURRENT                           = 34
	MySqlParserCURRENT_USER                      = 35
	MySqlParserCURSOR                            = 36
	MySqlParserDATABASE                          = 37
	MySqlParserDATABASES                         = 38
	MySqlParserDECLARE                           = 39
	MySqlParserDEFAULT                           = 40
	MySqlParserDELAYED                           = 41
	MySqlParserDELETE                            = 42
	MySqlParserDESC                              = 43
	MySqlParserDESCRIBE                          = 44
	MySqlParserDETERMINISTIC                     = 45
	MySqlParserDIAGNOSTICS                       = 46
	MySqlParserDISTINCT                          = 47
	MySqlParserDISTINCTROW                       = 48
	MySqlParserDROP                              = 49
	MySqlParserEACH                              = 50
	MySqlParserELSE                              = 51
	MySqlParserELSEIF                            = 52
	MySqlParserEMPTY                             = 53
	MySqlParserENCLOSED                          = 54
	MySqlParserESCAPED                           = 55
	MySqlParserEXCEPT                            = 56
	MySqlParserEXISTS                            = 57
	MySqlParserEXIT                              = 58
	MySqlParserEXPLAIN                           = 59
	MySqlParserFALSE                             = 60
	MySqlParserFETCH                             = 61
	MySqlParserFOR                               = 62
	MySqlParserFORCE                             = 63
	MySqlParserFOREIGN                           = 64
	MySqlParserFROM                              = 65
	MySqlParserFULLTEXT                          = 66
	MySqlParserGENERATED                         = 67
	MySqlParserGET                               = 68
	MySqlParserGRANT                             = 69
	MySqlParserGROUP                             = 70
	MySqlParserHAVING                            = 71
	MySqlParserHIGH_PRIORITY                     = 72
	MySqlParserHISTOGRAM                         = 73
	MySqlParserIF                                = 74
	MySqlParserIGNORE                            = 75
	MySqlParserIN                                = 76
	MySqlParserINDEX                             = 77
	MySqlParserINFILE                            = 78
	MySqlParserINNER                             = 79
	MySqlParserINOUT                             = 80
	MySqlParserINSERT                            = 81
	MySqlParserINTERVAL                          = 82
	MySqlParserINTO                              = 83
	MySqlParserIS                                = 84
	MySqlParserITERATE                           = 85
	MySqlParserJOIN                              = 86
	MySqlParserKEY                               = 87
	MySqlParserKEYS                              = 88
	MySqlParserKILL                              = 89
	MySqlParserLEADING                           = 90
	MySqlParserLEAVE                             = 91
	MySqlParserLEFT                              = 92
	MySqlParserLIKE                              = 93
	MySqlParserLIMIT                             = 94
	MySqlParserLINEAR                            = 95
	MySqlParserLINES                             = 96
	MySqlParserLOAD                              = 97
	MySqlParserLOCK                              = 98
	MySqlParserLOOP                              = 99
	MySqlParserLOW_PRIORITY                      = 100
	MySqlParserMASTER_BIND                       = 101
	MySqlParserMASTER_SSL_VERIFY_SERVER_CERT     = 102
	MySqlParserMATCH                             = 103
	MySqlParserMAXVALUE                          = 104
	MySqlParserMODIFIES                          = 105
	MySqlParserNATURAL                           = 106
	MySqlParserNOT                               = 107
	MySqlParserNO_WRITE_TO_BINLOG                = 108
	MySqlParserNULL_LITERAL                      = 109
	MySqlParserNUMBER                            = 110
	MySqlParserON                                = 111
	MySqlParserOPTIMIZE                          = 112
	MySqlParserOPTION                            = 113
	MySqlParserOPTIONALLY                        = 114
	MySqlParserOR                                = 115
	MySqlParserORDER                             = 116
	MySqlParserOUT                               = 117
	MySqlParserOVER                              = 118
	MySqlParserOUTER                             = 119
	MySqlParserOUTFILE                           = 120
	MySqlParserPARTITION                         = 121
	MySqlParserPRIMARY                           = 122
	MySqlParserPROCEDURE                         = 123
	MySqlParserPURGE                             = 124
	MySqlParserRANGE                             = 125
	MySqlParserREAD                              = 126
	MySqlParserREADS                             = 127
	MySqlParserREFERENCES                        = 128
	MySqlParserREGEXP                            = 129
	MySqlParserRELEASE                           = 130
	MySqlParserRENAME                            = 131
	MySqlParserREPEAT                            = 132
	MySqlParserREPLACE                           = 133
	MySqlParserREQUIRE                           = 134
	MySqlParserRESIGNAL                          = 135
	MySqlParserRESTRICT                          = 136
	MySqlParserRETAIN                            = 137
	MySqlParserRETURN                            = 138
	MySqlParserREVOKE                            = 139
	MySqlParserRIGHT                             = 140
	MySqlParserRLIKE                             = 141
	MySqlParserSCHEMA                            = 142
	MySqlParserSCHEMAS                           = 143
	MySqlParserSELECT                            = 144
	MySqlParserSET                               = 145
	MySqlParserSEPARATOR                         = 146
	MySqlParserSHOW                              = 147
	MySqlParserSIGNAL                            = 148
	MySqlParserSPATIAL                           = 149
	MySqlParserSQL                               = 150
	MySqlParserSQLEXCEPTION                      = 151
	MySqlParserSQLSTATE                          = 152
	MySqlParserSQLWARNING                        = 153
	MySqlParserSQL_BIG_RESULT                    = 154
	MySqlParserSQL_CALC_FOUND_ROWS               = 155
	MySqlParserSQL_SMALL_RESULT                  = 156
	MySqlParserSSL                               = 157
	MySqlParserSTACKED                           = 158
	MySqlParserSTARTING                          = 159
	MySqlParserSTRAIGHT_JOIN                     = 160
	MySqlParserTABLE                             = 161
	MySqlParserTERMINATED                        = 162
	MySqlParserTHEN                              = 163
	MySqlParserTO                                = 164
	MySqlParserTRAILING                          = 165
	MySqlParserTRIGGER                           = 166
	MySqlParserTRUE                              = 167
	MySqlParserUNDO                              = 168
	MySqlParserUNION                             = 169
	MySqlParserUNIQUE                            = 170
	MySqlParserUNLOCK                            = 171
	MySqlParserUNSIGNED                          = 172
	MySqlParserUPDATE                            = 173
	MySqlParserUSAGE                             = 174
	MySqlParserUSE                               = 175
	MySqlParserUSING                             = 176
	MySqlParserVALUES                            = 177
	MySqlParserWHEN                              = 178
	MySqlParserWHERE                             = 179
	MySqlParserWHILE                             = 180
	MySqlParserWITH                              = 181
	MySqlParserWRITE                             = 182
	MySqlParserXOR                               = 183
	MySqlParserZEROFILL                          = 184
	MySqlParserTINYINT                           = 185
	MySqlParserSMALLINT                          = 186
	MySqlParserMEDIUMINT                         = 187
	MySqlParserMIDDLEINT                         = 188
	MySqlParserINT                               = 189
	MySqlParserINT1                              = 190
	MySqlParserINT2                              = 191
	MySqlParserINT3                              = 192
	MySqlParserINT4                              = 193
	MySqlParserINT8                              = 194
	MySqlParserINTEGER                           = 195
	MySqlParserBIGINT                            = 196
	MySqlParserREAL                              = 197
	MySqlParserDOUBLE                            = 198
	MySqlParserPRECISION                         = 199
	MySqlParserFLOAT                             = 200
	MySqlParserFLOAT4                            = 201
	MySqlParserFLOAT8                            = 202
	MySqlParserDECIMAL                           = 203
	MySqlParserDEC                               = 204
	MySqlParserNUMERIC                           = 205
	MySqlParserDATE                              = 206
	MySqlParserTIME                              = 207
	MySqlParserTIMESTAMP                         = 208
	MySqlParserDATETIME                          = 209
	MySqlParserYEAR                              = 210
	MySqlParserCHAR                              = 211
	MySqlParserVARCHAR                           = 212
	MySqlParserNVARCHAR                          = 213
	MySqlParserNATIONAL                          = 214
	MySqlParserBINARY                            = 215
	MySqlParserVARBINARY                         = 216
	MySqlParserTINYBLOB                          = 217
	MySqlParserBLOB                              = 218
	MySqlParserMEDIUMBLOB                        = 219
	MySqlParserLONG                              = 220
	MySqlParserLONGBLOB                          = 221
	MySqlParserTINYTEXT                          = 222
	MySqlParserTEXT                              = 223
	MySqlParserMEDIUMTEXT                        = 224
	MySqlParserLONGTEXT                          = 225
	MySqlParserENUM                              = 226
	MySqlParserVARYING                           = 227
	MySqlParserSERIAL                            = 228
	MySqlParserYEAR_MONTH                        = 229
	MySqlParserDAY_HOUR                          = 230
	MySqlParserDAY_MINUTE                        = 231
	MySqlParserDAY_SECOND                        = 232
	MySqlParserHOUR_MINUTE                       = 233
	MySqlParserHOUR_SECOND                       = 234
	MySqlParserMINUTE_SECOND                     = 235
	MySqlParserSECOND_MICROSECOND                = 236
	MySqlParserMINUTE_MICROSECOND                = 237
	MySqlParserHOUR_MICROSECOND                  = 238
	MySqlParserDAY_MICROSECOND                   = 239
	MySqlParserJSON_ARRAY                        = 240
	MySqlParserJSON_OBJECT                       = 241
	MySqlParserJSON_QUOTE                        = 242
	MySqlParserJSON_CONTAINS                     = 243
	MySqlParserJSON_CONTAINS_PATH                = 244
	MySqlParserJSON_EXTRACT                      = 245
	MySqlParserJSON_KEYS                         = 246
	MySqlParserJSON_OVERLAPS                     = 247
	MySqlParserJSON_SEARCH                       = 248
	MySqlParserJSON_VALUE                        = 249
	MySqlParserJSON_ARRAY_APPEND                 = 250
	MySqlParserJSON_ARRAY_INSERT                 = 251
	MySqlParserJSON_INSERT                       = 252
	MySqlParserJSON_MERGE                        = 253
	MySqlParserJSON_MERGE_PATCH                  = 254
	MySqlParserJSON_MERGE_PRESERVE               = 255
	MySqlParserJSON_REMOVE                       = 256
	MySqlParserJSON_REPLACE                      = 257
	MySqlParserJSON_SET                          = 258
	MySqlParserJSON_UNQUOTE                      = 259
	MySqlParserJSON_DEPTH                        = 260
	MySqlParserJSON_LENGTH                       = 261
	MySqlParserJSON_TYPE                         = 262
	MySqlParserJSON_VALID                        = 263
	MySqlParserJSON_TABLE                        = 264
	MySqlParserJSON_SCHEMA_VALID                 = 265
	MySqlParserJSON_SCHEMA_VALIDATION_REPORT     = 266
	MySqlParserJSON_PRETTY                       = 267
	MySqlParserJSON_STORAGE_FREE                 = 268
	MySqlParserJSON_STORAGE_SIZE                 = 269
	MySqlParserJSON_ARRAYAGG                     = 270
	MySqlParserJSON_OBJECTAGG                    = 271
	MySqlParserAVG                               = 272
	MySqlParserBIT_AND                           = 273
	MySqlParserBIT_OR                            = 274
	MySqlParserBIT_XOR                           = 275
	MySqlParserCOUNT                             = 276
	MySqlParserCUME_DIST                         = 277
	MySqlParserDENSE_RANK                        = 278
	MySqlParserFIRST_VALUE                       = 279
	MySqlParserGROUP_CONCAT                      = 280
	MySqlParserLAG                               = 281
	MySqlParserLAST_VALUE                        = 282
	MySqlParserLEAD                              = 283
	MySqlParserMAX                               = 284
	MySqlParserMIN                               = 285
	MySqlParserNTILE                             = 286
	MySqlParserNTH_VALUE                         = 287
	MySqlParserPERCENT_RANK                      = 288
	MySqlParserRANK                              = 289
	MySqlParserROW_NUMBER                        = 290
	MySqlParserSTD                               = 291
	MySqlParserSTDDEV                            = 292
	MySqlParserSTDDEV_POP                        = 293
	MySqlParserSTDDEV_SAMP                       = 294
	MySqlParserSUM                               = 295
	MySqlParserVAR_POP                           = 296
	MySqlParserVAR_SAMP                          = 297
	MySqlParserVARIANCE                          = 298
	MySqlParserCURRENT_DATE                      = 299
	MySqlParserCURRENT_TIME                      = 300
	MySqlParserCURRENT_TIMESTAMP                 = 301
	MySqlParserLOCALTIME                         = 302
	MySqlParserCURDATE                           = 303
	MySqlParserCURTIME                           = 304
	MySqlParserDATE_ADD                          = 305
	MySqlParserDATE_SUB                          = 306
	MySqlParserEXTRACT                           = 307
	MySqlParserLOCALTIMESTAMP                    = 308
	MySqlParserNOW                               = 309
	MySqlParserPOSITION                          = 310
	MySqlParserSUBSTR                            = 311
	MySqlParserSUBSTRING                         = 312
	MySqlParserSYSDATE                           = 313
	MySqlParserTRIM                              = 314
	MySqlParserUTC_DATE                          = 315
	MySqlParserUTC_TIME                          = 316
	MySqlParserUTC_TIMESTAMP                     = 317
	MySqlParserACCOUNT                           = 318
	MySqlParserACTION                            = 319
	MySqlParserAFTER                             = 320
	MySqlParserAGGREGATE                         = 321
	MySqlParserALGORITHM                         = 322
	MySqlParserANY                               = 323
	MySqlParserAT                                = 324
	MySqlParserAUTHORS                           = 325
	MySqlParserAUTOCOMMIT                        = 326
	MySqlParserAUTOEXTEND_SIZE                   = 327
	MySqlParserAUTO_INCREMENT                    = 328
	MySqlParserAVG_ROW_LENGTH                    = 329
	MySqlParserBEGIN                             = 330
	MySqlParserBINLOG                            = 331
	MySqlParserBIT                               = 332
	MySqlParserBLOCK                             = 333
	MySqlParserBOOL                              = 334
	MySqlParserBOOLEAN                           = 335
	MySqlParserBTREE                             = 336
	MySqlParserCACHE                             = 337
	MySqlParserCASCADED                          = 338
	MySqlParserCHAIN                             = 339
	MySqlParserCHANGED                           = 340
	MySqlParserCHANNEL                           = 341
	MySqlParserCHECKSUM                          = 342
	MySqlParserPAGE_CHECKSUM                     = 343
	MySqlParserCIPHER                            = 344
	MySqlParserCLASS_ORIGIN                      = 345
	MySqlParserCLIENT                            = 346
	MySqlParserCLOSE                             = 347
	MySqlParserCOALESCE                          = 348
	MySqlParserCODE                              = 349
	MySqlParserCOLUMNS                           = 350
	MySqlParserCOLUMN_FORMAT                     = 351
	MySqlParserCOLUMN_NAME                       = 352
	MySqlParserCOMMENT                           = 353
	MySqlParserCOMMIT                            = 354
	MySqlParserCOMPACT                           = 355
	MySqlParserCOMPLETION                        = 356
	MySqlParserCOMPRESSED                        = 357
	MySqlParserCOMPRESSION                       = 358
	MySqlParserCONCURRENT                        = 359
	MySqlParserCONNECT                           = 360
	MySqlParserCONNECTION                        = 361
	MySqlParserCONSISTENT                        = 362
	MySqlParserCONSTRAINT_CATALOG                = 363
	MySqlParserCONSTRAINT_SCHEMA                 = 364
	MySqlParserCONSTRAINT_NAME                   = 365
	MySqlParserCONTAINS                          = 366
	MySqlParserCONTEXT                           = 367
	MySqlParserCONTRIBUTORS                      = 368
	MySqlParserCOPY                              = 369
	MySqlParserCPU                               = 370
	MySqlParserCURSOR_NAME                       = 371
	MySqlParserDATA                              = 372
	MySqlParserDATAFILE                          = 373
	MySqlParserDEALLOCATE                        = 374
	MySqlParserDEFAULT_AUTH                      = 375
	MySqlParserDEFINER                           = 376
	MySqlParserDELAY_KEY_WRITE                   = 377
	MySqlParserDES_KEY_FILE                      = 378
	MySqlParserDIRECTORY                         = 379
	MySqlParserDISABLE                           = 380
	MySqlParserDISCARD                           = 381
	MySqlParserDISK                              = 382
	MySqlParserDO                                = 383
	MySqlParserDUMPFILE                          = 384
	MySqlParserDUPLICATE                         = 385
	MySqlParserDYNAMIC                           = 386
	MySqlParserENABLE                            = 387
	MySqlParserENCRYPTION                        = 388
	MySqlParserEND                               = 389
	MySqlParserENDS                              = 390
	MySqlParserENGINE                            = 391
	MySqlParserENGINES                           = 392
	MySqlParserERROR                             = 393
	MySqlParserERRORS                            = 394
	MySqlParserESCAPE                            = 395
	MySqlParserEVEN                              = 396
	MySqlParserEVENT                             = 397
	MySqlParserEVENTS                            = 398
	MySqlParserEVERY                             = 399
	MySqlParserEXCHANGE                          = 400
	MySqlParserEXCLUSIVE                         = 401
	MySqlParserEXPIRE                            = 402
	MySqlParserEXPORT                            = 403
	MySqlParserEXTENDED                          = 404
	MySqlParserEXTENT_SIZE                       = 405
	MySqlParserFAST                              = 406
	MySqlParserFAULTS                            = 407
	MySqlParserFIELDS                            = 408
	MySqlParserFILE_BLOCK_SIZE                   = 409
	MySqlParserFILTER                            = 410
	MySqlParserFIRST                             = 411
	MySqlParserFIXED                             = 412
	MySqlParserFLUSH                             = 413
	MySqlParserFOLLOWING                         = 414
	MySqlParserFOLLOWS                           = 415
	MySqlParserFOUND                             = 416
	MySqlParserFULL                              = 417
	MySqlParserFUNCTION                          = 418
	MySqlParserGENERAL                           = 419
	MySqlParserGLOBAL                            = 420
	MySqlParserGRANTS                            = 421
	MySqlParserGROUP_REPLICATION                 = 422
	MySqlParserHANDLER                           = 423
	MySqlParserHASH                              = 424
	MySqlParserHELP                              = 425
	MySqlParserHOST                              = 426
	MySqlParserHOSTS                             = 427
	MySqlParserIDENTIFIED                        = 428
	MySqlParserIGNORE_SERVER_IDS                 = 429
	MySqlParserIMPORT                            = 430
	MySqlParserINDEXES                           = 431
	MySqlParserINITIAL_SIZE                      = 432
	MySqlParserINPLACE                           = 433
	MySqlParserINSERT_METHOD                     = 434
	MySqlParserINSTALL                           = 435
	MySqlParserINSTANCE                          = 436
	MySqlParserINVISIBLE                         = 437
	MySqlParserINVOKER                           = 438
	MySqlParserIO                                = 439
	MySqlParserIO_THREAD                         = 440
	MySqlParserIPC                               = 441
	MySqlParserISOLATION                         = 442
	MySqlParserISSUER                            = 443
	MySqlParserJSON                              = 444
	MySqlParserKEY_BLOCK_SIZE                    = 445
	MySqlParserLANGUAGE                          = 446
	MySqlParserLAST                              = 447
	MySqlParserLEAVES                            = 448
	MySqlParserLESS                              = 449
	MySqlParserLEVEL                             = 450
	MySqlParserLIST                              = 451
	MySqlParserLOCAL                             = 452
	MySqlParserLOGFILE                           = 453
	MySqlParserLOGS                              = 454
	MySqlParserMASTER                            = 455
	MySqlParserMASTER_AUTO_POSITION              = 456
	MySqlParserMASTER_CONNECT_RETRY              = 457
	MySqlParserMASTER_DELAY                      = 458
	MySqlParserMASTER_HEARTBEAT_PERIOD           = 459
	MySqlParserMASTER_HOST                       = 460
	MySqlParserMASTER_LOG_FILE                   = 461
	MySqlParserMASTER_LOG_POS                    = 462
	MySqlParserMASTER_PASSWORD                   = 463
	MySqlParserMASTER_PORT                       = 464
	MySqlParserMASTER_RETRY_COUNT                = 465
	MySqlParserMASTER_SSL                        = 466
	MySqlParserMASTER_SSL_CA                     = 467
	MySqlParserMASTER_SSL_CAPATH                 = 468
	MySqlParserMASTER_SSL_CERT                   = 469
	MySqlParserMASTER_SSL_CIPHER                 = 470
	MySqlParserMASTER_SSL_CRL                    = 471
	MySqlParserMASTER_SSL_CRLPATH                = 472
	MySqlParserMASTER_SSL_KEY                    = 473
	MySqlParserMASTER_TLS_VERSION                = 474
	MySqlParserMASTER_USER                       = 475
	MySqlParserMAX_CONNECTIONS_PER_HOUR          = 476
	MySqlParserMAX_QUERIES_PER_HOUR              = 477
	MySqlParserMAX_ROWS                          = 478
	MySqlParserMAX_SIZE                          = 479
	MySqlParserMAX_UPDATES_PER_HOUR              = 480
	MySqlParserMAX_USER_CONNECTIONS              = 481
	MySqlParserMEDIUM                            = 482
	MySqlParserMEMBER                            = 483
	MySqlParserMERGE                             = 484
	MySqlParserMESSAGE_TEXT                      = 485
	MySqlParserMID                               = 486
	MySqlParserMIGRATE                           = 487
	MySqlParserMIN_ROWS                          = 488
	MySqlParserMODE                              = 489
	MySqlParserMODIFY                            = 490
	MySqlParserMUTEX                             = 491
	MySqlParserMYSQL                             = 492
	MySqlParserMYSQL_ERRNO                       = 493
	MySqlParserNAME                              = 494
	MySqlParserNAMES                             = 495
	MySqlParserNCHAR                             = 496
	MySqlParserNEVER                             = 497
	MySqlParserNEXT                              = 498
	MySqlParserNO                                = 499
	MySqlParserNODEGROUP                         = 500
	MySqlParserNONE                              = 501
	MySqlParserODBC                              = 502
	MySqlParserOFFLINE                           = 503
	MySqlParserOFFSET                            = 504
	MySqlParserOF                                = 505
	MySqlParserOJ                                = 506
	MySqlParserOLD_PASSWORD                      = 507
	MySqlParserONE                               = 508
	MySqlParserONLINE                            = 509
	MySqlParserONLY                              = 510
	MySqlParserOPEN                              = 511
	MySqlParserOPTIMIZER_COSTS                   = 512
	MySqlParserOPTIONS                           = 513
	MySqlParserOWNER                             = 514
	MySqlParserPACK_KEYS                         = 515
	MySqlParserPAGE                              = 516
	MySqlParserPARSER                            = 517
	MySqlParserPARTIAL                           = 518
	MySqlParserPARTITIONING                      = 519
	MySqlParserPARTITIONS                        = 520
	MySqlParserPASSWORD                          = 521
	MySqlParserPHASE                             = 522
	MySqlParserPLUGIN                            = 523
	MySqlParserPLUGIN_DIR                        = 524
	MySqlParserPLUGINS                           = 525
	MySqlParserPORT                              = 526
	MySqlParserPRECEDES                          = 527
	MySqlParserPRECEDING                         = 528
	MySqlParserPREPARE                           = 529
	MySqlParserPRESERVE                          = 530
	MySqlParserPREV                              = 531
	MySqlParserPROCESSLIST                       = 532
	MySqlParserPROFILE                           = 533
	MySqlParserPROFILES                          = 534
	MySqlParserPROXY                             = 535
	MySqlParserQUERY                             = 536
	MySqlParserQUICK                             = 537
	MySqlParserREBUILD                           = 538
	MySqlParserRECOVER                           = 539
	MySqlParserREDO_BUFFER_SIZE                  = 540
	MySqlParserREDUNDANT                         = 541
	MySqlParserRELAY                             = 542
	MySqlParserRELAY_LOG_FILE                    = 543
	MySqlParserRELAY_LOG_POS                     = 544
	MySqlParserRELAYLOG                          = 545
	MySqlParserREMOVE                            = 546
	MySqlParserREORGANIZE                        = 547
	MySqlParserREPAIR                            = 548
	MySqlParserREPLICATE_DO_DB                   = 549
	MySqlParserREPLICATE_DO_TABLE                = 550
	MySqlParserREPLICATE_IGNORE_DB               = 551
	MySqlParserREPLICATE_IGNORE_TABLE            = 552
	MySqlParserREPLICATE_REWRITE_DB              = 553
	MySqlParserREPLICATE_WILD_DO_TABLE           = 554
	MySqlParserREPLICATE_WILD_IGNORE_TABLE       = 555
	MySqlParserREPLICATION                       = 556
	MySqlParserRESET                             = 557
	MySqlParserRESUME                            = 558
	MySqlParserRETURNED_SQLSTATE                 = 559
	MySqlParserRETURNING                         = 560
	MySqlParserRETURNS                           = 561
	MySqlParserROLE                              = 562
	MySqlParserROLLBACK                          = 563
	MySqlParserROLLUP                            = 564
	MySqlParserROTATE                            = 565
	MySqlParserROW                               = 566
	MySqlParserROWS                              = 567
	MySqlParserROW_FORMAT                        = 568
	MySqlParserSAVEPOINT                         = 569
	MySqlParserSCHEDULE                          = 570
	MySqlParserSECURITY                          = 571
	MySqlParserSERVER                            = 572
	MySqlParserSESSION                           = 573
	MySqlParserSHARE                             = 574
	MySqlParserSHARED                            = 575
	MySqlParserSIGNED                            = 576
	MySqlParserSIMPLE                            = 577
	MySqlParserSLAVE                             = 578
	MySqlParserSLOW                              = 579
	MySqlParserSNAPSHOT                          = 580
	MySqlParserSOCKET                            = 581
	MySqlParserSOME                              = 582
	MySqlParserSONAME                            = 583
	MySqlParserSOUNDS                            = 584
	MySqlParserSOURCE                            = 585
	MySqlParserSQL_AFTER_GTIDS                   = 586
	MySqlParserSQL_AFTER_MTS_GAPS                = 587
	MySqlParserSQL_BEFORE_GTIDS                  = 588
	MySqlParserSQL_BUFFER_RESULT                 = 589
	MySqlParserSQL_CACHE                         = 590
	MySqlParserSQL_NO_CACHE                      = 591
	MySqlParserSQL_THREAD                        = 592
	MySqlParserSTART                             = 593
	MySqlParserSTARTS                            = 594
	MySqlParserSTATS_AUTO_RECALC                 = 595
	MySqlParserSTATS_PERSISTENT                  = 596
	MySqlParserSTATS_SAMPLE_PAGES                = 597
	MySqlParserSTATUS                            = 598
	MySqlParserSTOP                              = 599
	MySqlParserSTORAGE                           = 600
	MySqlParserSTORED                            = 601
	MySqlParserSTRING                            = 602
	MySqlParserSUBCLASS_ORIGIN                   = 603
	MySqlParserSUBJECT                           = 604
	MySqlParserSUBPARTITION                      = 605
	MySqlParserSUBPARTITIONS                     = 606
	MySqlParserSUSPEND                           = 607
	MySqlParserSWAPS                             = 608
	MySqlParserSWITCHES                          = 609
	MySqlParserTABLE_NAME                        = 610
	MySqlParserTABLESPACE                        = 611
	MySqlParserTABLE_TYPE                        = 612
	MySqlParserTEMPORARY                         = 613
	MySqlParserTEMPTABLE                         = 614
	MySqlParserTHAN                              = 615
	MySqlParserTRADITIONAL                       = 616
	MySqlParserTRANSACTION                       = 617
	MySqlParserTRANSACTIONAL                     = 618
	MySqlParserTRIGGERS                          = 619
	MySqlParserTRUNCATE                          = 620
	MySqlParserUNBOUNDED                         = 621
	MySqlParserUNDEFINED                         = 622
	MySqlParserUNDOFILE                          = 623
	MySqlParserUNDO_BUFFER_SIZE                  = 624
	MySqlParserUNINSTALL                         = 625
	MySqlParserUNKNOWN                           = 626
	MySqlParserUNTIL                             = 627
	MySqlParserUPGRADE                           = 628
	MySqlParserUSER                              = 629
	MySqlParserUSE_FRM                           = 630
	MySqlParserUSER_RESOURCES                    = 631
	MySqlParserVALIDATION                        = 632
	MySqlParserVALUE                             = 633
	MySqlParserVARIABLES                         = 634
	MySqlParserVIEW                              = 635
	MySqlParserVIRTUAL                           = 636
	MySqlParserVISIBLE                           = 637
	MySqlParserWAIT                              = 638
	MySqlParserWARNINGS                          = 639
	MySqlParserWINDOW                            = 640
	MySqlParserWITHOUT                           = 641
	MySqlParserWORK                              = 642
	MySqlParserWRAPPER                           = 643
	MySqlParserX509                              = 644
	MySqlParserXA                                = 645
	MySqlParserXML                               = 646
	MySqlParserEUR                               = 647
	MySqlParserUSA                               = 648
	MySqlParserJIS                               = 649
	MySqlParserISO                               = 650
	MySqlParserINTERNAL                          = 651
	MySqlParserQUARTER                           = 652
	MySqlParserMONTH                             = 653
	MySqlParserDAY                               = 654
	MySqlParserHOUR                              = 655
	MySqlParserMINUTE                            = 656
	MySqlParserWEEK                              = 657
	MySqlParserSECOND                            = 658
	MySqlParserMICROSECOND                       = 659
	MySqlParserTABLES                            = 660
	MySqlParserROUTINE                           = 661
	MySqlParserEXECUTE                           = 662
	MySqlParserFILE                              = 663
	MySqlParserPROCESS                           = 664
	MySqlParserRELOAD                            = 665
	MySqlParserSHUTDOWN                          = 666
	MySqlParserSUPER                             = 667
	MySqlParserPRIVILEGES                        = 668
	MySqlParserAPPLICATION_PASSWORD_ADMIN        = 669
	MySqlParserAUDIT_ADMIN                       = 670
	MySqlParserBACKUP_ADMIN                      = 671
	MySqlParserBINLOG_ADMIN                      = 672
	MySqlParserBINLOG_ENCRYPTION_ADMIN           = 673
	MySqlParserCLONE_ADMIN                       = 674
	MySqlParserCONNECTION_ADMIN                  = 675
	MySqlParserENCRYPTION_KEY_ADMIN              = 676
	MySqlParserFIREWALL_ADMIN                    = 677
	MySqlParserFIREWALL_USER                     = 678
	MySqlParserFLUSH_OPTIMIZER_COSTS             = 679
	MySqlParserFLUSH_STATUS                      = 680
	MySqlParserFLUSH_TABLES                      = 681
	MySqlParserFLUSH_USER_RESOURCES              = 682
	MySqlParserGROUP_REPLICATION_ADMIN           = 683
	MySqlParserINNODB_REDO_LOG_ARCHIVE           = 684
	MySqlParserINNODB_REDO_LOG_ENABLE            = 685
	MySqlParserNDB_STORED_USER                   = 686
	MySqlParserPERSIST_RO_VARIABLES_ADMIN        = 687
	MySqlParserREPLICATION_APPLIER               = 688
	MySqlParserREPLICATION_SLAVE_ADMIN           = 689
	MySqlParserRESOURCE_GROUP_ADMIN              = 690
	MySqlParserRESOURCE_GROUP_USER               = 691
	MySqlParserROLE_ADMIN                        = 692
	MySqlParserSERVICE_CONNECTION_ADMIN          = 693
	MySqlParserSESSION_VARIABLES_ADMIN           = 694
	MySqlParserSET_USER_ID                       = 695
	MySqlParserSHOW_ROUTINE                      = 696
	MySqlParserSYSTEM_VARIABLES_ADMIN            = 697
	MySqlParserTABLE_ENCRYPTION_ADMIN            = 698
	MySqlParserVERSION_TOKEN_ADMIN               = 699
	MySqlParserXA_RECOVER_ADMIN                  = 700
	MySqlParserARMSCII8                          = 701
	MySqlParserASCII                             = 702
	MySqlParserBIG5                              = 703
	MySqlParserCP1250                            = 704
	MySqlParserCP1251                            = 705
	MySqlParserCP1256                            = 706
	MySqlParserCP1257                            = 707
	MySqlParserCP850                             = 708
	MySqlParserCP852                             = 709
	MySqlParserCP866                             = 710
	MySqlParserCP932                             = 711
	MySqlParserDEC8                              = 712
	MySqlParserEUCJPMS                           = 713
	MySqlParserEUCKR                             = 714
	MySqlParserGB18030                           = 715
	MySqlParserGB2312                            = 716
	MySqlParserGBK                               = 717
	MySqlParserGEOSTD8                           = 718
	MySqlParserGREEK                             = 719
	MySqlParserHEBREW                            = 720
	MySqlParserHP8                               = 721
	MySqlParserKEYBCS2                           = 722
	MySqlParserKOI8R                             = 723
	MySqlParserKOI8U                             = 724
	MySqlParserLATIN1                            = 725
	MySqlParserLATIN2                            = 726
	MySqlParserLATIN5                            = 727
	MySqlParserLATIN7                            = 728
	MySqlParserMACCE                             = 729
	MySqlParserMACROMAN                          = 730
	MySqlParserSJIS                              = 731
	MySqlParserSWE7                              = 732
	MySqlParserTIS620                            = 733
	MySqlParserUCS2                              = 734
	MySqlParserUJIS                              = 735
	MySqlParserUTF16                             = 736
	MySqlParserUTF16LE                           = 737
	MySqlParserUTF32                             = 738
	MySqlParserUTF8                              = 739
	MySqlParserUTF8MB3                           = 740
	MySqlParserUTF8MB4                           = 741
	MySqlParserARCHIVE                           = 742
	MySqlParserBLACKHOLE                         = 743
	MySqlParserCSV                               = 744
	MySqlParserFEDERATED                         = 745
	MySqlParserINNODB                            = 746
	MySqlParserMEMORY                            = 747
	MySqlParserMRG_MYISAM                        = 748
	MySqlParserMYISAM                            = 749
	MySqlParserNDB                               = 750
	MySqlParserNDBCLUSTER                        = 751
	MySqlParserPERFORMANCE_SCHEMA                = 752
	MySqlParserTOKUDB                            = 753
	MySqlParserREPEATABLE                        = 754
	MySqlParserCOMMITTED                         = 755
	MySqlParserUNCOMMITTED                       = 756
	MySqlParserSERIALIZABLE                      = 757
	MySqlParserGEOMETRYCOLLECTION                = 758
	MySqlParserGEOMCOLLECTION                    = 759
	MySqlParserGEOMETRY                          = 760
	MySqlParserLINESTRING                        = 761
	MySqlParserMULTILINESTRING                   = 762
	MySqlParserMULTIPOINT                        = 763
	MySqlParserMULTIPOLYGON                      = 764
	MySqlParserPOINT                             = 765
	MySqlParserPOLYGON                           = 766
	MySqlParserABS                               = 767
	MySqlParserACOS                              = 768
	MySqlParserADDDATE                           = 769
	MySqlParserADDTIME                           = 770
	MySqlParserAES_DECRYPT                       = 771
	MySqlParserAES_ENCRYPT                       = 772
	MySqlParserAREA                              = 773
	MySqlParserASBINARY                          = 774
	MySqlParserASIN                              = 775
	MySqlParserASTEXT                            = 776
	MySqlParserASWKB                             = 777
	MySqlParserASWKT                             = 778
	MySqlParserASYMMETRIC_DECRYPT                = 779
	MySqlParserASYMMETRIC_DERIVE                 = 780
	MySqlParserASYMMETRIC_ENCRYPT                = 781
	MySqlParserASYMMETRIC_SIGN                   = 782
	MySqlParserASYMMETRIC_VERIFY                 = 783
	MySqlParserATAN                              = 784
	MySqlParserATAN2                             = 785
	MySqlParserBENCHMARK                         = 786
	MySqlParserBIN                               = 787
	MySqlParserBIT_COUNT                         = 788
	MySqlParserBIT_LENGTH                        = 789
	MySqlParserBUFFER                            = 790
	MySqlParserCATALOG_NAME                      = 791
	MySqlParserCEIL                              = 792
	MySqlParserCEILING                           = 793
	MySqlParserCENTROID                          = 794
	MySqlParserCHARACTER_LENGTH                  = 795
	MySqlParserCHARSET                           = 796
	MySqlParserCHAR_LENGTH                       = 797
	MySqlParserCOERCIBILITY                      = 798
	MySqlParserCOLLATION                         = 799
	MySqlParserCOMPRESS                          = 800
	MySqlParserCONCAT                            = 801
	MySqlParserCONCAT_WS                         = 802
	MySqlParserCONNECTION_ID                     = 803
	MySqlParserCONV                              = 804
	MySqlParserCONVERT_TZ                        = 805
	MySqlParserCOS                               = 806
	MySqlParserCOT                               = 807
	MySqlParserCRC32                             = 808
	MySqlParserCREATE_ASYMMETRIC_PRIV_KEY        = 809
	MySqlParserCREATE_ASYMMETRIC_PUB_KEY         = 810
	MySqlParserCREATE_DH_PARAMETERS              = 811
	MySqlParserCREATE_DIGEST                     = 812
	MySqlParserCROSSES                           = 813
	MySqlParserDATEDIFF                          = 814
	MySqlParserDATE_FORMAT                       = 815
	MySqlParserDAYNAME                           = 816
	MySqlParserDAYOFMONTH                        = 817
	MySqlParserDAYOFWEEK                         = 818
	MySqlParserDAYOFYEAR                         = 819
	MySqlParserDECODE                            = 820
	MySqlParserDEGREES                           = 821
	MySqlParserDES_DECRYPT                       = 822
	MySqlParserDES_ENCRYPT                       = 823
	MySqlParserDIMENSION                         = 824
	MySqlParserDISJOINT                          = 825
	MySqlParserELT                               = 826
	MySqlParserENCODE                            = 827
	MySqlParserENCRYPT                           = 828
	MySqlParserENDPOINT                          = 829
	MySqlParserENVELOPE                          = 830
	MySqlParserEQUALS                            = 831
	MySqlParserEXP                               = 832
	MySqlParserEXPORT_SET                        = 833
	MySqlParserEXTERIORRING                      = 834
	MySqlParserEXTRACTVALUE                      = 835
	MySqlParserFIELD                             = 836
	MySqlParserFIND_IN_SET                       = 837
	MySqlParserFLOOR                             = 838
	MySqlParserFORMAT                            = 839
	MySqlParserFOUND_ROWS                        = 840
	MySqlParserFROM_BASE64                       = 841
	MySqlParserFROM_DAYS                         = 842
	MySqlParserFROM_UNIXTIME                     = 843
	MySqlParserGEOMCOLLFROMTEXT                  = 844
	MySqlParserGEOMCOLLFROMWKB                   = 845
	MySqlParserGEOMETRYCOLLECTIONFROMTEXT        = 846
	MySqlParserGEOMETRYCOLLECTIONFROMWKB         = 847
	MySqlParserGEOMETRYFROMTEXT                  = 848
	MySqlParserGEOMETRYFROMWKB                   = 849
	MySqlParserGEOMETRYN                         = 850
	MySqlParserGEOMETRYTYPE                      = 851
	MySqlParserGEOMFROMTEXT                      = 852
	MySqlParserGEOMFROMWKB                       = 853
	MySqlParserGET_FORMAT                        = 854
	MySqlParserGET_LOCK                          = 855
	MySqlParserGLENGTH                           = 856
	MySqlParserGREATEST                          = 857
	MySqlParserGTID_SUBSET                       = 858
	MySqlParserGTID_SUBTRACT                     = 859
	MySqlParserHEX                               = 860
	MySqlParserIFNULL                            = 861
	MySqlParserINET6_ATON                        = 862
	MySqlParserINET6_NTOA                        = 863
	MySqlParserINET_ATON                         = 864
	MySqlParserINET_NTOA                         = 865
	MySqlParserINSTR                             = 866
	MySqlParserINTERIORRINGN                     = 867
	MySqlParserINTERSECTS                        = 868
	MySqlParserISCLOSED                          = 869
	MySqlParserISEMPTY                           = 870
	MySqlParserISNULL                            = 871
	MySqlParserISSIMPLE                          = 872
	MySqlParserIS_FREE_LOCK                      = 873
	MySqlParserIS_IPV4                           = 874
	MySqlParserIS_IPV4_COMPAT                    = 875
	MySqlParserIS_IPV4_MAPPED                    = 876
	MySqlParserIS_IPV6                           = 877
	MySqlParserIS_USED_LOCK                      = 878
	MySqlParserLAST_INSERT_ID                    = 879
	MySqlParserLCASE                             = 880
	MySqlParserLEAST                             = 881
	MySqlParserLENGTH                            = 882
	MySqlParserLINEFROMTEXT                      = 883
	MySqlParserLINEFROMWKB                       = 884
	MySqlParserLINESTRINGFROMTEXT                = 885
	MySqlParserLINESTRINGFROMWKB                 = 886
	MySqlParserLN                                = 887
	MySqlParserLOAD_FILE                         = 888
	MySqlParserLOCATE                            = 889
	MySqlParserLOG                               = 890
	MySqlParserLOG10                             = 891
	MySqlParserLOG2                              = 892
	MySqlParserLOWER                             = 893
	MySqlParserLPAD                              = 894
	MySqlParserLTRIM                             = 895
	MySqlParserMAKEDATE                          = 896
	MySqlParserMAKETIME                          = 897
	MySqlParserMAKE_SET                          = 898
	MySqlParserMASTER_POS_WAIT                   = 899
	MySqlParserMBRCONTAINS                       = 900
	MySqlParserMBRDISJOINT                       = 901
	MySqlParserMBREQUAL                          = 902
	MySqlParserMBRINTERSECTS                     = 903
	MySqlParserMBROVERLAPS                       = 904
	MySqlParserMBRTOUCHES                        = 905
	MySqlParserMBRWITHIN                         = 906
	MySqlParserMD5                               = 907
	MySqlParserMLINEFROMTEXT                     = 908
	MySqlParserMLINEFROMWKB                      = 909
	MySqlParserMONTHNAME                         = 910
	MySqlParserMPOINTFROMTEXT                    = 911
	MySqlParserMPOINTFROMWKB                     = 912
	MySqlParserMPOLYFROMTEXT                     = 913
	MySqlParserMPOLYFROMWKB                      = 914
	MySqlParserMULTILINESTRINGFROMTEXT           = 915
	MySqlParserMULTILINESTRINGFROMWKB            = 916
	MySqlParserMULTIPOINTFROMTEXT                = 917
	MySqlParserMULTIPOINTFROMWKB                 = 918
	MySqlParserMULTIPOLYGONFROMTEXT              = 919
	MySqlParserMULTIPOLYGONFROMWKB               = 920
	MySqlParserNAME_CONST                        = 921
	MySqlParserNULLIF                            = 922
	MySqlParserNUMGEOMETRIES                     = 923
	MySqlParserNUMINTERIORRINGS                  = 924
	MySqlParserNUMPOINTS                         = 925
	MySqlParserOCT                               = 926
	MySqlParserOCTET_LENGTH                      = 927
	MySqlParserORD                               = 928
	MySqlParserOVERLAPS                          = 929
	MySqlParserPERIOD_ADD                        = 930
	MySqlParserPERIOD_DIFF                       = 931
	MySqlParserPI                                = 932
	MySqlParserPOINTFROMTEXT                     = 933
	MySqlParserPOINTFROMWKB                      = 934
	MySqlParserPOINTN                            = 935
	MySqlParserPOLYFROMTEXT                      = 936
	MySqlParserPOLYFROMWKB                       = 937
	MySqlParserPOLYGONFROMTEXT                   = 938
	MySqlParserPOLYGONFROMWKB                    = 939
	MySqlParserPOW                               = 940
	MySqlParserPOWER                             = 941
	MySqlParserQUOTE                             = 942
	MySqlParserRADIANS                           = 943
	MySqlParserRAND                              = 944
	MySqlParserRANDOM_BYTES                      = 945
	MySqlParserRELEASE_LOCK                      = 946
	MySqlParserREVERSE                           = 947
	MySqlParserROUND                             = 948
	MySqlParserROW_COUNT                         = 949
	MySqlParserRPAD                              = 950
	MySqlParserRTRIM                             = 951
	MySqlParserSEC_TO_TIME                       = 952
	MySqlParserSESSION_USER                      = 953
	MySqlParserSHA                               = 954
	MySqlParserSHA1                              = 955
	MySqlParserSHA2                              = 956
	MySqlParserSCHEMA_NAME                       = 957
	MySqlParserSIGN                              = 958
	MySqlParserSIN                               = 959
	MySqlParserSLEEP                             = 960
	MySqlParserSOUNDEX                           = 961
	MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS       = 962
	MySqlParserSQRT                              = 963
	MySqlParserSRID                              = 964
	MySqlParserSTARTPOINT                        = 965
	MySqlParserSTRCMP                            = 966
	MySqlParserSTR_TO_DATE                       = 967
	MySqlParserST_AREA                           = 968
	MySqlParserST_ASBINARY                       = 969
	MySqlParserST_ASTEXT                         = 970
	MySqlParserST_ASWKB                          = 971
	MySqlParserST_ASWKT                          = 972
	MySqlParserST_BUFFER                         = 973
	MySqlParserST_CENTROID                       = 974
	MySqlParserST_CONTAINS                       = 975
	MySqlParserST_CROSSES                        = 976
	MySqlParserST_DIFFERENCE                     = 977
	MySqlParserST_DIMENSION                      = 978
	MySqlParserST_DISJOINT                       = 979
	MySqlParserST_DISTANCE                       = 980
	MySqlParserST_ENDPOINT                       = 981
	MySqlParserST_ENVELOPE                       = 982
	MySqlParserST_EQUALS                         = 983
	MySqlParserST_EXTERIORRING                   = 984
	MySqlParserST_GEOMCOLLFROMTEXT               = 985
	MySqlParserST_GEOMCOLLFROMTXT                = 986
	MySqlParserST_GEOMCOLLFROMWKB                = 987
	MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT     = 988
	MySqlParserST_GEOMETRYCOLLECTIONFROMWKB      = 989
	MySqlParserST_GEOMETRYFROMTEXT               = 990
	MySqlParserST_GEOMETRYFROMWKB                = 991
	MySqlParserST_GEOMETRYN                      = 992
	MySqlParserST_GEOMETRYTYPE                   = 993
	MySqlParserST_GEOMFROMTEXT                   = 994
	MySqlParserST_GEOMFROMWKB                    = 995
	MySqlParserST_INTERIORRINGN                  = 996
	MySqlParserST_INTERSECTION                   = 997
	MySqlParserST_INTERSECTS                     = 998
	MySqlParserST_ISCLOSED                       = 999
	MySqlParserST_ISEMPTY                        = 1000
	MySqlParserST_ISSIMPLE                       = 1001
	MySqlParserST_LINEFROMTEXT                   = 1002
	MySqlParserST_LINEFROMWKB                    = 1003
	MySqlParserST_LINESTRINGFROMTEXT             = 1004
	MySqlParserST_LINESTRINGFROMWKB              = 1005
	MySqlParserST_NUMGEOMETRIES                  = 1006
	MySqlParserST_NUMINTERIORRING                = 1007
	MySqlParserST_NUMINTERIORRINGS               = 1008
	MySqlParserST_NUMPOINTS                      = 1009
	MySqlParserST_OVERLAPS                       = 1010
	MySqlParserST_POINTFROMTEXT                  = 1011
	MySqlParserST_POINTFROMWKB                   = 1012
	MySqlParserST_POINTN                         = 1013
	MySqlParserST_POLYFROMTEXT                   = 1014
	MySqlParserST_POLYFROMWKB                    = 1015
	MySqlParserST_POLYGONFROMTEXT                = 1016
	MySqlParserST_POLYGONFROMWKB                 = 1017
	MySqlParserST_SRID                           = 1018
	MySqlParserST_STARTPOINT                     = 1019
	MySqlParserST_SYMDIFFERENCE                  = 1020
	MySqlParserST_TOUCHES                        = 1021
	MySqlParserST_UNION                          = 1022
	MySqlParserST_WITHIN                         = 1023
	MySqlParserST_X                              = 1024
	MySqlParserST_Y                              = 1025
	MySqlParserSUBDATE                           = 1026
	MySqlParserSUBSTRING_INDEX                   = 1027
	MySqlParserSUBTIME                           = 1028
	MySqlParserSYSTEM_USER                       = 1029
	MySqlParserTAN                               = 1030
	MySqlParserTIMEDIFF                          = 1031
	MySqlParserTIMESTAMPADD                      = 1032
	MySqlParserTIMESTAMPDIFF                     = 1033
	MySqlParserTIME_FORMAT                       = 1034
	MySqlParserTIME_TO_SEC                       = 1035
	MySqlParserTOUCHES                           = 1036
	MySqlParserTO_BASE64                         = 1037
	MySqlParserTO_DAYS                           = 1038
	MySqlParserTO_SECONDS                        = 1039
	MySqlParserUCASE                             = 1040
	MySqlParserUNCOMPRESS                        = 1041
	MySqlParserUNCOMPRESSED_LENGTH               = 1042
	MySqlParserUNHEX                             = 1043
	MySqlParserUNIX_TIMESTAMP                    = 1044
	MySqlParserUPDATEXML                         = 1045
	MySqlParserUPPER                             = 1046
	MySqlParserUUID                              = 1047
	MySqlParserUUID_SHORT                        = 1048
	MySqlParserVALIDATE_PASSWORD_STRENGTH        = 1049
	MySqlParserVERSION                           = 1050
	MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 1051
	MySqlParserWEEKDAY                           = 1052
	MySqlParserWEEKOFYEAR                        = 1053
	MySqlParserWEIGHT_STRING                     = 1054
	MySqlParserWITHIN                            = 1055
	MySqlParserYEARWEEK                          = 1056
	MySqlParserY_FUNCTION                        = 1057
	MySqlParserX_FUNCTION                        = 1058
	MySqlParserVAR_ASSIGN                        = 1059
	MySqlParserPLUS_ASSIGN                       = 1060
	MySqlParserMINUS_ASSIGN                      = 1061
	MySqlParserMULT_ASSIGN                       = 1062
	MySqlParserDIV_ASSIGN                        = 1063
	MySqlParserMOD_ASSIGN                        = 1064
	MySqlParserAND_ASSIGN                        = 1065
	MySqlParserXOR_ASSIGN                        = 1066
	MySqlParserOR_ASSIGN                         = 1067
	MySqlParserSTAR                              = 1068
	MySqlParserDIVIDE                            = 1069
	MySqlParserMODULE                            = 1070
	MySqlParserPLUS                              = 1071
	MySqlParserMINUS                             = 1072
	MySqlParserDIV                               = 1073
	MySqlParserMOD                               = 1074
	MySqlParserEQUAL_SYMBOL                      = 1075
	MySqlParserGREATER_SYMBOL                    = 1076
	MySqlParserLESS_SYMBOL                       = 1077
	MySqlParserEXCLAMATION_SYMBOL                = 1078
	MySqlParserBIT_NOT_OP                        = 1079
	MySqlParserBIT_OR_OP                         = 1080
	MySqlParserBIT_AND_OP                        = 1081
	MySqlParserBIT_XOR_OP                        = 1082
	MySqlParserDOT                               = 1083
	MySqlParserLR_BRACKET                        = 1084
	MySqlParserRR_BRACKET                        = 1085
	MySqlParserCOMMA                             = 1086
	MySqlParserSEMI                              = 1087
	MySqlParserAT_SIGN                           = 1088
	MySqlParserZERO_DECIMAL                      = 1089
	MySqlParserONE_DECIMAL                       = 1090
	MySqlParserTWO_DECIMAL                       = 1091
	MySqlParserSINGLE_QUOTE_SYMB                 = 1092
	MySqlParserDOUBLE_QUOTE_SYMB                 = 1093
	MySqlParserREVERSE_QUOTE_SYMB                = 1094
	MySqlParserCOLON_SYMB                        = 1095
	MySqlParserCHARSET_REVERSE_QOUTE_STRING      = 1096
	MySqlParserFILESIZE_LITERAL                  = 1097
	MySqlParserSTART_NATIONAL_STRING_LITERAL     = 1098
	MySqlParserSTRING_LITERAL                    = 1099
	MySqlParserDECIMAL_LITERAL                   = 1100
	MySqlParserHEXADECIMAL_LITERAL               = 1101
	MySqlParserREAL_LITERAL                      = 1102
	MySqlParserNULL_SPEC_LITERAL                 = 1103
	MySqlParserBIT_STRING                        = 1104
	MySqlParserSTRING_CHARSET_NAME               = 1105
	MySqlParserDOT_ID                            = 1106
	MySqlParserID                                = 1107
	MySqlParserREVERSE_QUOTE_ID                  = 1108
	MySqlParserSTRING_USER_NAME                  = 1109
	MySqlParserIP_ADDRESS                        = 1110
	MySqlParserLOCAL_ID                          = 1111
	MySqlParserGLOBAL_ID                         = 1112
	MySqlParserERROR_RECONGNIGION                = 1113
	MySqlParserADMIN                             = 1114
	MySqlParserOPTIONAL                          = 1115
)

// MySqlParser rules.
const (
	MySqlParserRULE_root                                = 0
	MySqlParserRULE_sqlStatements                       = 1
	MySqlParserRULE_sqlStatement                        = 2
	MySqlParserRULE_emptyStatement_                     = 3
	MySqlParserRULE_ddlStatement                        = 4
	MySqlParserRULE_dmlStatement                        = 5
	MySqlParserRULE_transactionStatement                = 6
	MySqlParserRULE_replicationStatement                = 7
	MySqlParserRULE_preparedStatement                   = 8
	MySqlParserRULE_compoundStatement                   = 9
	MySqlParserRULE_administrationStatement             = 10
	MySqlParserRULE_utilityStatement                    = 11
	MySqlParserRULE_createDatabase                      = 12
	MySqlParserRULE_createEvent                         = 13
	MySqlParserRULE_createIndex                         = 14
	MySqlParserRULE_createLogfileGroup                  = 15
	MySqlParserRULE_createProcedure                     = 16
	MySqlParserRULE_createFunction                      = 17
	MySqlParserRULE_createServer                        = 18
	MySqlParserRULE_createTable                         = 19
	MySqlParserRULE_createTablespaceInnodb              = 20
	MySqlParserRULE_createTablespaceNdb                 = 21
	MySqlParserRULE_createTrigger                       = 22
	MySqlParserRULE_createView                          = 23
	MySqlParserRULE_createDatabaseOption                = 24
	MySqlParserRULE_charSet                             = 25
	MySqlParserRULE_ownerStatement                      = 26
	MySqlParserRULE_scheduleExpression                  = 27
	MySqlParserRULE_timestampValue                      = 28
	MySqlParserRULE_intervalExpr                        = 29
	MySqlParserRULE_intervalType                        = 30
	MySqlParserRULE_enableType                          = 31
	MySqlParserRULE_indexType                           = 32
	MySqlParserRULE_indexOption                         = 33
	MySqlParserRULE_procedureParameter                  = 34
	MySqlParserRULE_functionParameter                   = 35
	MySqlParserRULE_routineOption                       = 36
	MySqlParserRULE_serverOption                        = 37
	MySqlParserRULE_createDefinitions                   = 38
	MySqlParserRULE_createDefinition                    = 39
	MySqlParserRULE_columnDefinition                    = 40
	MySqlParserRULE_columnConstraint                    = 41
	MySqlParserRULE_tableConstraint                     = 42
	MySqlParserRULE_referenceDefinition                 = 43
	MySqlParserRULE_referenceAction                     = 44
	MySqlParserRULE_referenceControlType                = 45
	MySqlParserRULE_indexColumnDefinition               = 46
	MySqlParserRULE_tableOption                         = 47
	MySqlParserRULE_tableType                           = 48
	MySqlParserRULE_tablespaceStorage                   = 49
	MySqlParserRULE_partitionDefinitions                = 50
	MySqlParserRULE_partitionFunctionDefinition         = 51
	MySqlParserRULE_subpartitionFunctionDefinition      = 52
	MySqlParserRULE_partitionDefinition                 = 53
	MySqlParserRULE_partitionDefinerAtom                = 54
	MySqlParserRULE_partitionDefinerVector              = 55
	MySqlParserRULE_subpartitionDefinition              = 56
	MySqlParserRULE_partitionOption                     = 57
	MySqlParserRULE_alterDatabase                       = 58
	MySqlParserRULE_alterEvent                          = 59
	MySqlParserRULE_alterFunction                       = 60
	MySqlParserRULE_alterInstance                       = 61
	MySqlParserRULE_alterLogfileGroup                   = 62
	MySqlParserRULE_alterProcedure                      = 63
	MySqlParserRULE_alterServer                         = 64
	MySqlParserRULE_alterTable                          = 65
	MySqlParserRULE_alterTablespace                     = 66
	MySqlParserRULE_alterView                           = 67
	MySqlParserRULE_alterSpecification                  = 68
	MySqlParserRULE_dropDatabase                        = 69
	MySqlParserRULE_dropEvent                           = 70
	MySqlParserRULE_dropIndex                           = 71
	MySqlParserRULE_dropLogfileGroup                    = 72
	MySqlParserRULE_dropProcedure                       = 73
	MySqlParserRULE_dropFunction                        = 74
	MySqlParserRULE_dropServer                          = 75
	MySqlParserRULE_dropTable                           = 76
	MySqlParserRULE_dropTablespace                      = 77
	MySqlParserRULE_dropTrigger                         = 78
	MySqlParserRULE_dropView                            = 79
	MySqlParserRULE_renameTable                         = 80
	MySqlParserRULE_renameTableClause                   = 81
	MySqlParserRULE_truncateTable                       = 82
	MySqlParserRULE_callStatement                       = 83
	MySqlParserRULE_deleteStatement                     = 84
	MySqlParserRULE_doStatement                         = 85
	MySqlParserRULE_handlerStatement                    = 86
	MySqlParserRULE_insertStatement                     = 87
	MySqlParserRULE_loadDataStatement                   = 88
	MySqlParserRULE_loadXmlStatement                    = 89
	MySqlParserRULE_replaceStatement                    = 90
	MySqlParserRULE_selectStatement                     = 91
	MySqlParserRULE_updateStatement                     = 92
	MySqlParserRULE_insertStatementValue                = 93
	MySqlParserRULE_updatedElement                      = 94
	MySqlParserRULE_assignmentField                     = 95
	MySqlParserRULE_lockClause                          = 96
	MySqlParserRULE_singleDeleteStatement               = 97
	MySqlParserRULE_multipleDeleteStatement             = 98
	MySqlParserRULE_handlerOpenStatement                = 99
	MySqlParserRULE_handlerReadIndexStatement           = 100
	MySqlParserRULE_handlerReadStatement                = 101
	MySqlParserRULE_handlerCloseStatement               = 102
	MySqlParserRULE_singleUpdateStatement               = 103
	MySqlParserRULE_multipleUpdateStatement             = 104
	MySqlParserRULE_orderByClause                       = 105
	MySqlParserRULE_orderByExpression                   = 106
	MySqlParserRULE_tableSources                        = 107
	MySqlParserRULE_tableSource                         = 108
	MySqlParserRULE_tableSourceItem                     = 109
	MySqlParserRULE_indexHint                           = 110
	MySqlParserRULE_indexHintType                       = 111
	MySqlParserRULE_joinPart                            = 112
	MySqlParserRULE_queryExpression                     = 113
	MySqlParserRULE_queryExpressionNointo               = 114
	MySqlParserRULE_querySpecification                  = 115
	MySqlParserRULE_querySpecificationNointo            = 116
	MySqlParserRULE_unionParenthesis                    = 117
	MySqlParserRULE_unionStatement                      = 118
	MySqlParserRULE_selectSpec                          = 119
	MySqlParserRULE_selectElements                      = 120
	MySqlParserRULE_selectElement                       = 121
	MySqlParserRULE_selectIntoExpression                = 122
	MySqlParserRULE_selectFieldsInto                    = 123
	MySqlParserRULE_selectLinesInto                     = 124
	MySqlParserRULE_fromClause                          = 125
	MySqlParserRULE_groupByClause                       = 126
	MySqlParserRULE_havingClause                        = 127
	MySqlParserRULE_windowClause                        = 128
	MySqlParserRULE_groupByItem                         = 129
	MySqlParserRULE_limitClause                         = 130
	MySqlParserRULE_limitClauseAtom                     = 131
	MySqlParserRULE_startTransaction                    = 132
	MySqlParserRULE_beginWork                           = 133
	MySqlParserRULE_commitWork                          = 134
	MySqlParserRULE_rollbackWork                        = 135
	MySqlParserRULE_savepointStatement                  = 136
	MySqlParserRULE_rollbackStatement                   = 137
	MySqlParserRULE_releaseStatement                    = 138
	MySqlParserRULE_lockTables                          = 139
	MySqlParserRULE_unlockTables                        = 140
	MySqlParserRULE_setAutocommitStatement              = 141
	MySqlParserRULE_setTransactionStatement             = 142
	MySqlParserRULE_transactionMode                     = 143
	MySqlParserRULE_lockTableElement                    = 144
	MySqlParserRULE_lockAction                          = 145
	MySqlParserRULE_transactionOption                   = 146
	MySqlParserRULE_transactionLevel                    = 147
	MySqlParserRULE_changeMaster                        = 148
	MySqlParserRULE_changeReplicationFilter             = 149
	MySqlParserRULE_purgeBinaryLogs                     = 150
	MySqlParserRULE_resetMaster                         = 151
	MySqlParserRULE_resetSlave                          = 152
	MySqlParserRULE_startSlave                          = 153
	MySqlParserRULE_stopSlave                           = 154
	MySqlParserRULE_startGroupReplication               = 155
	MySqlParserRULE_stopGroupReplication                = 156
	MySqlParserRULE_masterOption                        = 157
	MySqlParserRULE_stringMasterOption                  = 158
	MySqlParserRULE_decimalMasterOption                 = 159
	MySqlParserRULE_boolMasterOption                    = 160
	MySqlParserRULE_channelOption                       = 161
	MySqlParserRULE_replicationFilter                   = 162
	MySqlParserRULE_tablePair                           = 163
	MySqlParserRULE_threadType                          = 164
	MySqlParserRULE_untilOption                         = 165
	MySqlParserRULE_connectionOption                    = 166
	MySqlParserRULE_gtuidSet                            = 167
	MySqlParserRULE_xaStartTransaction                  = 168
	MySqlParserRULE_xaEndTransaction                    = 169
	MySqlParserRULE_xaPrepareStatement                  = 170
	MySqlParserRULE_xaCommitWork                        = 171
	MySqlParserRULE_xaRollbackWork                      = 172
	MySqlParserRULE_xaRecoverWork                       = 173
	MySqlParserRULE_prepareStatement                    = 174
	MySqlParserRULE_executeStatement                    = 175
	MySqlParserRULE_deallocatePrepare                   = 176
	MySqlParserRULE_routineBody                         = 177
	MySqlParserRULE_blockStatement                      = 178
	MySqlParserRULE_caseStatement                       = 179
	MySqlParserRULE_ifStatement                         = 180
	MySqlParserRULE_iterateStatement                    = 181
	MySqlParserRULE_leaveStatement                      = 182
	MySqlParserRULE_loopStatement                       = 183
	MySqlParserRULE_repeatStatement                     = 184
	MySqlParserRULE_returnStatement                     = 185
	MySqlParserRULE_whileStatement                      = 186
	MySqlParserRULE_cursorStatement                     = 187
	MySqlParserRULE_declareVariable                     = 188
	MySqlParserRULE_declareCondition                    = 189
	MySqlParserRULE_declareCursor                       = 190
	MySqlParserRULE_declareHandler                      = 191
	MySqlParserRULE_handlerConditionValue               = 192
	MySqlParserRULE_procedureSqlStatement               = 193
	MySqlParserRULE_caseAlternative                     = 194
	MySqlParserRULE_elifAlternative                     = 195
	MySqlParserRULE_alterUser                           = 196
	MySqlParserRULE_createUser                          = 197
	MySqlParserRULE_dropUser                            = 198
	MySqlParserRULE_grantStatement                      = 199
	MySqlParserRULE_roleOption                          = 200
	MySqlParserRULE_grantProxy                          = 201
	MySqlParserRULE_renameUser                          = 202
	MySqlParserRULE_revokeStatement                     = 203
	MySqlParserRULE_revokeProxy                         = 204
	MySqlParserRULE_setPasswordStatement                = 205
	MySqlParserRULE_userSpecification                   = 206
	MySqlParserRULE_userAuthOption                      = 207
	MySqlParserRULE_tlsOption                           = 208
	MySqlParserRULE_userResourceOption                  = 209
	MySqlParserRULE_userPasswordOption                  = 210
	MySqlParserRULE_userLockOption                      = 211
	MySqlParserRULE_privelegeClause                     = 212
	MySqlParserRULE_privilege                           = 213
	MySqlParserRULE_privilegeLevel                      = 214
	MySqlParserRULE_renameUserClause                    = 215
	MySqlParserRULE_analyzeTable                        = 216
	MySqlParserRULE_checkTable                          = 217
	MySqlParserRULE_checksumTable                       = 218
	MySqlParserRULE_optimizeTable                       = 219
	MySqlParserRULE_repairTable                         = 220
	MySqlParserRULE_checkTableOption                    = 221
	MySqlParserRULE_createUdfunction                    = 222
	MySqlParserRULE_installPlugin                       = 223
	MySqlParserRULE_uninstallPlugin                     = 224
	MySqlParserRULE_setStatement                        = 225
	MySqlParserRULE_showStatement                       = 226
	MySqlParserRULE_variableClause                      = 227
	MySqlParserRULE_showCommonEntity                    = 228
	MySqlParserRULE_showFilter                          = 229
	MySqlParserRULE_showGlobalInfoClause                = 230
	MySqlParserRULE_showSchemaEntity                    = 231
	MySqlParserRULE_showProfileType                     = 232
	MySqlParserRULE_binlogStatement                     = 233
	MySqlParserRULE_cacheIndexStatement                 = 234
	MySqlParserRULE_flushStatement                      = 235
	MySqlParserRULE_killStatement                       = 236
	MySqlParserRULE_loadIndexIntoCache                  = 237
	MySqlParserRULE_resetStatement                      = 238
	MySqlParserRULE_shutdownStatement                   = 239
	MySqlParserRULE_tableIndexes                        = 240
	MySqlParserRULE_flushOption                         = 241
	MySqlParserRULE_flushTableOption                    = 242
	MySqlParserRULE_loadedTableIndexes                  = 243
	MySqlParserRULE_simpleDescribeStatement             = 244
	MySqlParserRULE_fullDescribeStatement               = 245
	MySqlParserRULE_helpStatement                       = 246
	MySqlParserRULE_useStatement                        = 247
	MySqlParserRULE_signalStatement                     = 248
	MySqlParserRULE_resignalStatement                   = 249
	MySqlParserRULE_signalConditionInformation          = 250
	MySqlParserRULE_diagnosticsStatement                = 251
	MySqlParserRULE_diagnosticsConditionInformationName = 252
	MySqlParserRULE_describeObjectClause                = 253
	MySqlParserRULE_fullId                              = 254
	MySqlParserRULE_tableName                           = 255
	MySqlParserRULE_fullColumnName                      = 256
	MySqlParserRULE_indexColumnName                     = 257
	MySqlParserRULE_userName                            = 258
	MySqlParserRULE_mysqlVariable                       = 259
	MySqlParserRULE_charsetName                         = 260
	MySqlParserRULE_collationName                       = 261
	MySqlParserRULE_engineName                          = 262
	MySqlParserRULE_uuidSet                             = 263
	MySqlParserRULE_xid                                 = 264
	MySqlParserRULE_xuidStringId                        = 265
	MySqlParserRULE_authPlugin                          = 266
	MySqlParserRULE_uid                                 = 267
	MySqlParserRULE_simpleId                            = 268
	MySqlParserRULE_dottedId                            = 269
	MySqlParserRULE_decimalLiteral                      = 270
	MySqlParserRULE_fileSizeLiteral                     = 271
	MySqlParserRULE_stringLiteral                       = 272
	MySqlParserRULE_booleanLiteral                      = 273
	MySqlParserRULE_hexadecimalLiteral                  = 274
	MySqlParserRULE_nullNotnull                         = 275
	MySqlParserRULE_constant                            = 276
	MySqlParserRULE_dataType                            = 277
	MySqlParserRULE_collectionOptions                   = 278
	MySqlParserRULE_convertedDataType                   = 279
	MySqlParserRULE_lengthOneDimension                  = 280
	MySqlParserRULE_lengthTwoDimension                  = 281
	MySqlParserRULE_lengthTwoOptionalDimension          = 282
	MySqlParserRULE_uidList                             = 283
	MySqlParserRULE_tables                              = 284
	MySqlParserRULE_indexColumnNames                    = 285
	MySqlParserRULE_expressions                         = 286
	MySqlParserRULE_expressionsWithDefaults             = 287
	MySqlParserRULE_constants                           = 288
	MySqlParserRULE_simpleStrings                       = 289
	MySqlParserRULE_userVariables                       = 290
	MySqlParserRULE_defaultValue                        = 291
	MySqlParserRULE_currentTimestamp                    = 292
	MySqlParserRULE_expressionOrDefault                 = 293
	MySqlParserRULE_ifExists                            = 294
	MySqlParserRULE_ifNotExists                         = 295
	MySqlParserRULE_functionCall                        = 296
	MySqlParserRULE_specificFunction                    = 297
	MySqlParserRULE_caseFuncAlternative                 = 298
	MySqlParserRULE_levelsInWeightString                = 299
	MySqlParserRULE_levelInWeightListElement            = 300
	MySqlParserRULE_aggregateWindowedFunction           = 301
	MySqlParserRULE_nonAggregateWindowedFunction        = 302
	MySqlParserRULE_overClause                          = 303
	MySqlParserRULE_windowSpec                          = 304
	MySqlParserRULE_windowName                          = 305
	MySqlParserRULE_frameClause                         = 306
	MySqlParserRULE_frameUnits                          = 307
	MySqlParserRULE_frameExtent                         = 308
	MySqlParserRULE_frameBetween                        = 309
	MySqlParserRULE_frameRange                          = 310
	MySqlParserRULE_partitionClause                     = 311
	MySqlParserRULE_scalarFunctionName                  = 312
	MySqlParserRULE_passwordFunctionClause              = 313
	MySqlParserRULE_functionArgs                        = 314
	MySqlParserRULE_functionArg                         = 315
	MySqlParserRULE_expression                          = 316
	MySqlParserRULE_predicate                           = 317
	MySqlParserRULE_expressionAtom                      = 318
	MySqlParserRULE_unaryOperator                       = 319
	MySqlParserRULE_comparisonOperator                  = 320
	MySqlParserRULE_logicalOperator                     = 321
	MySqlParserRULE_bitOperator                         = 322
	MySqlParserRULE_mathOperator                        = 323
	MySqlParserRULE_jsonOperator                        = 324
	MySqlParserRULE_charsetNameBase                     = 325
	MySqlParserRULE_transactionLevelBase                = 326
	MySqlParserRULE_privilegesBase                      = 327
	MySqlParserRULE_intervalTypeBase                    = 328
	MySqlParserRULE_dataTypeBase                        = 329
	MySqlParserRULE_keywordsCanBeId                     = 330
	MySqlParserRULE_functionNameBase                    = 331
)

// IRootContext is an interface to support dynamic dispatch.
type IRootContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRootContext differentiates from other interfaces.
	IsRootContext()
}

type RootContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRootContext() *RootContext {
	var p = new(RootContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_root
	return p
}

func (*RootContext) IsRootContext() {}

func NewRootContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RootContext {
	var p = new(RootContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_root

	return p
}

func (s *RootContext) GetParser() antlr.Parser { return s.parser }

func (s *RootContext) EOF() antlr.TerminalNode {
	return s.GetToken(MySqlParserEOF, 0)
}

func (s *RootContext) SqlStatements() ISqlStatementsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISqlStatementsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISqlStatementsContext)
}

func (s *RootContext) AllMINUS() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserMINUS)
}

func (s *RootContext) MINUS(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, i)
}

func (s *RootContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RootContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RootContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoot(s)
	}
}

func (s *RootContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoot(s)
	}
}

func (p *MySqlParser) Root() (localctx IRootContext) {
	this := p
	_ = this

	localctx = NewRootContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 0, MySqlParserRULE_root)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(665)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la)&-(0x1f+1)) == 0 && ((1<<uint(_la))&((1<<MySqlParserALTER)|(1<<MySqlParserANALYZE)|(1<<MySqlParserCALL)|(1<<MySqlParserCHANGE)|(1<<MySqlParserCHECK))) != 0) || (((_la-32)&-(0x1f+1)) == 0 && ((1<<uint((_la-32)))&((1<<(MySqlParserCREATE-32))|(1<<(MySqlParserDELETE-32))|(1<<(MySqlParserDESC-32))|(1<<(MySqlParserDESCRIBE-32))|(1<<(MySqlParserDROP-32))|(1<<(MySqlParserEXPLAIN-32)))) != 0) || (((_la-68)&-(0x1f+1)) == 0 && ((1<<uint((_la-68)))&((1<<(MySqlParserGET-68))|(1<<(MySqlParserGRANT-68))|(1<<(MySqlParserINSERT-68))|(1<<(MySqlParserKILL-68))|(1<<(MySqlParserLOAD-68))|(1<<(MySqlParserLOCK-68)))) != 0) || (((_la-112)&-(0x1f+1)) == 0 && ((1<<uint((_la-112)))&((1<<(MySqlParserOPTIMIZE-112))|(1<<(MySqlParserPURGE-112))|(1<<(MySqlParserRELEASE-112))|(1<<(MySqlParserRENAME-112))|(1<<(MySqlParserREPLACE-112))|(1<<(MySqlParserRESIGNAL-112))|(1<<(MySqlParserREVOKE-112)))) != 0) || (((_la-144)&-(0x1f+1)) == 0 && ((1<<uint((_la-144)))&((1<<(MySqlParserSELECT-144))|(1<<(MySqlParserSET-144))|(1<<(MySqlParserSHOW-144))|(1<<(MySqlParserSIGNAL-144))|(1<<(MySqlParserUNLOCK-144))|(1<<(MySqlParserUPDATE-144))|(1<<(MySqlParserUSE-144)))) != 0) || (((_la-330)&-(0x1f+1)) == 0 && ((1<<uint((_la-330)))&((1<<(MySqlParserBEGIN-330))|(1<<(MySqlParserBINLOG-330))|(1<<(MySqlParserCACHE-330))|(1<<(MySqlParserCHECKSUM-330))|(1<<(MySqlParserCOMMIT-330)))) != 0) || _la == MySqlParserDEALLOCATE || _la == MySqlParserDO || (((_la-413)&-(0x1f+1)) == 0 && ((1<<uint((_la-413)))&((1<<(MySqlParserFLUSH-413))|(1<<(MySqlParserHANDLER-413))|(1<<(MySqlParserHELP-413))|(1<<(MySqlParserINSTALL-413)))) != 0) || (((_la-529)&-(0x1f+1)) == 0 && ((1<<uint((_la-529)))&((1<<(MySqlParserPREPARE-529))|(1<<(MySqlParserREPAIR-529))|(1<<(MySqlParserRESET-529)))) != 0) || (((_la-563)&-(0x1f+1)) == 0 && ((1<<uint((_la-563)))&((1<<(MySqlParserROLLBACK-563))|(1<<(MySqlParserSAVEPOINT-563))|(1<<(MySqlParserSTART-563)))) != 0) || (((_la-599)&-(0x1f+1)) == 0 && ((1<<uint((_la-599)))&((1<<(MySqlParserSTOP-599))|(1<<(MySqlParserTRUNCATE-599))|(1<<(MySqlParserUNINSTALL-599)))) != 0) || (((_la-645)&-(0x1f+1)) == 0 && ((1<<uint((_la-645)))&((1<<(MySqlParserXA-645))|(1<<(MySqlParserEXECUTE-645))|(1<<(MySqlParserSHUTDOWN-645)))) != 0) || _la == MySqlParserLR_BRACKET || _la == MySqlParserSEMI {
		{
			p.SetState(664)
			p.SqlStatements()
		}

	}
	p.SetState(669)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserMINUS {
		{
			p.SetState(667)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(668)
			p.Match(MySqlParserMINUS)
		}

	}
	{
		p.SetState(671)
		p.Match(MySqlParserEOF)
	}

	return localctx
}

// ISqlStatementsContext is an interface to support dynamic dispatch.
type ISqlStatementsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSqlStatementsContext differentiates from other interfaces.
	IsSqlStatementsContext()
}

type SqlStatementsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySqlStatementsContext() *SqlStatementsContext {
	var p = new(SqlStatementsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_sqlStatements
	return p
}

func (*SqlStatementsContext) IsSqlStatementsContext() {}

func NewSqlStatementsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlStatementsContext {
	var p = new(SqlStatementsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_sqlStatements

	return p
}

func (s *SqlStatementsContext) GetParser() antlr.Parser { return s.parser }

func (s *SqlStatementsContext) AllSqlStatement() []ISqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISqlStatementContext)(nil)).Elem())
	var tst = make([]ISqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISqlStatementContext)
		}
	}

	return tst
}

func (s *SqlStatementsContext) SqlStatement(i int) ISqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISqlStatementContext)
}

func (s *SqlStatementsContext) AllEmptyStatement_() []IEmptyStatement_Context {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IEmptyStatement_Context)(nil)).Elem())
	var tst = make([]IEmptyStatement_Context, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IEmptyStatement_Context)
		}
	}

	return tst
}

func (s *SqlStatementsContext) EmptyStatement_(i int) IEmptyStatement_Context {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEmptyStatement_Context)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IEmptyStatement_Context)
}

func (s *SqlStatementsContext) AllSEMI() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSEMI)
}

func (s *SqlStatementsContext) SEMI(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSEMI, i)
}

func (s *SqlStatementsContext) AllMINUS() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserMINUS)
}

func (s *SqlStatementsContext) MINUS(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, i)
}

func (s *SqlStatementsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SqlStatementsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SqlStatementsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSqlStatements(s)
	}
}

func (s *SqlStatementsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSqlStatements(s)
	}
}

func (p *MySqlParser) SqlStatements() (localctx ISqlStatementsContext) {
	this := p
	_ = this

	localctx = NewSqlStatementsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 2, MySqlParserRULE_sqlStatements)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(684)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			p.SetState(682)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserLR_BRACKET:
				{
					p.SetState(673)
					p.SqlStatement()
				}
				p.SetState(676)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserMINUS {
					{
						p.SetState(674)
						p.Match(MySqlParserMINUS)
					}
					{
						p.SetState(675)
						p.Match(MySqlParserMINUS)
					}

				}
				p.SetState(679)
				p.GetErrorHandler().Sync(p)

				if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) == 1 {
					{
						p.SetState(678)
						p.Match(MySqlParserSEMI)
					}

				}

			case MySqlParserSEMI:
				{
					p.SetState(681)
					p.EmptyStatement_()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(686)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext())
	}
	p.SetState(696)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserLR_BRACKET:
		{
			p.SetState(687)
			p.SqlStatement()
		}
		p.SetState(693)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 {
			p.SetState(690)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserMINUS {
				{
					p.SetState(688)
					p.Match(MySqlParserMINUS)
				}
				{
					p.SetState(689)
					p.Match(MySqlParserMINUS)
				}

			}
			{
				p.SetState(692)
				p.Match(MySqlParserSEMI)
			}

		}

	case MySqlParserSEMI:
		{
			p.SetState(695)
			p.EmptyStatement_()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISqlStatementContext is an interface to support dynamic dispatch.
type ISqlStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSqlStatementContext differentiates from other interfaces.
	IsSqlStatementContext()
}

type SqlStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySqlStatementContext() *SqlStatementContext {
	var p = new(SqlStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_sqlStatement
	return p
}

func (*SqlStatementContext) IsSqlStatementContext() {}

func NewSqlStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlStatementContext {
	var p = new(SqlStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_sqlStatement

	return p
}

func (s *SqlStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SqlStatementContext) DdlStatement() IDdlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDdlStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDdlStatementContext)
}

func (s *SqlStatementContext) DmlStatement() IDmlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDmlStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDmlStatementContext)
}

func (s *SqlStatementContext) TransactionStatement() ITransactionStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITransactionStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITransactionStatementContext)
}

func (s *SqlStatementContext) ReplicationStatement() IReplicationStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReplicationStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReplicationStatementContext)
}

func (s *SqlStatementContext) PreparedStatement() IPreparedStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPreparedStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPreparedStatementContext)
}

func (s *SqlStatementContext) AdministrationStatement() IAdministrationStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAdministrationStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAdministrationStatementContext)
}

func (s *SqlStatementContext) UtilityStatement() IUtilityStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUtilityStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUtilityStatementContext)
}

func (s *SqlStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SqlStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SqlStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSqlStatement(s)
	}
}

func (s *SqlStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSqlStatement(s)
	}
}

func (p *MySqlParser) SqlStatement() (localctx ISqlStatementContext) {
	this := p
	_ = this

	localctx = NewSqlStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 4, MySqlParserRULE_sqlStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(705)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 9, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(698)
			p.DdlStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(699)
			p.DmlStatement()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(700)
			p.TransactionStatement()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(701)
			p.ReplicationStatement()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(702)
			p.PreparedStatement()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(703)
			p.AdministrationStatement()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(704)
			p.UtilityStatement()
		}

	}

	return localctx
}

// IEmptyStatement_Context is an interface to support dynamic dispatch.
type IEmptyStatement_Context interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsEmptyStatement_Context differentiates from other interfaces.
	IsEmptyStatement_Context()
}

type EmptyStatement_Context struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyEmptyStatement_Context() *EmptyStatement_Context {
	var p = new(EmptyStatement_Context)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_emptyStatement_
	return p
}

func (*EmptyStatement_Context) IsEmptyStatement_Context() {}

func NewEmptyStatement_Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EmptyStatement_Context {
	var p = new(EmptyStatement_Context)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_emptyStatement_

	return p
}

func (s *EmptyStatement_Context) GetParser() antlr.Parser { return s.parser }

func (s *EmptyStatement_Context) SEMI() antlr.TerminalNode {
	return s.GetToken(MySqlParserSEMI, 0)
}

func (s *EmptyStatement_Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *EmptyStatement_Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *EmptyStatement_Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterEmptyStatement_(s)
	}
}

func (s *EmptyStatement_Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitEmptyStatement_(s)
	}
}

func (p *MySqlParser) EmptyStatement_() (localctx IEmptyStatement_Context) {
	this := p
	_ = this

	localctx = NewEmptyStatement_Context(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 6, MySqlParserRULE_emptyStatement_)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(707)
		p.Match(MySqlParserSEMI)
	}

	return localctx
}

// IDdlStatementContext is an interface to support dynamic dispatch.
type IDdlStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDdlStatementContext differentiates from other interfaces.
	IsDdlStatementContext()
}

type DdlStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDdlStatementContext() *DdlStatementContext {
	var p = new(DdlStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_ddlStatement
	return p
}

func (*DdlStatementContext) IsDdlStatementContext() {}

func NewDdlStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DdlStatementContext {
	var p = new(DdlStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_ddlStatement

	return p
}

func (s *DdlStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *DdlStatementContext) CreateDatabase() ICreateDatabaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDatabaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateDatabaseContext)
}

func (s *DdlStatementContext) CreateEvent() ICreateEventContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateEventContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateEventContext)
}

func (s *DdlStatementContext) CreateIndex() ICreateIndexContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateIndexContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateIndexContext)
}

func (s *DdlStatementContext) CreateLogfileGroup() ICreateLogfileGroupContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateLogfileGroupContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateLogfileGroupContext)
}

func (s *DdlStatementContext) CreateProcedure() ICreateProcedureContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateProcedureContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateProcedureContext)
}

func (s *DdlStatementContext) CreateFunction() ICreateFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateFunctionContext)
}

func (s *DdlStatementContext) CreateServer() ICreateServerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateServerContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateServerContext)
}

func (s *DdlStatementContext) CreateTable() ICreateTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateTableContext)
}

func (s *DdlStatementContext) CreateTablespaceInnodb() ICreateTablespaceInnodbContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateTablespaceInnodbContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateTablespaceInnodbContext)
}

func (s *DdlStatementContext) CreateTablespaceNdb() ICreateTablespaceNdbContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateTablespaceNdbContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateTablespaceNdbContext)
}

func (s *DdlStatementContext) CreateTrigger() ICreateTriggerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateTriggerContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateTriggerContext)
}

func (s *DdlStatementContext) CreateView() ICreateViewContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateViewContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateViewContext)
}

func (s *DdlStatementContext) AlterDatabase() IAlterDatabaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterDatabaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterDatabaseContext)
}

func (s *DdlStatementContext) AlterEvent() IAlterEventContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterEventContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterEventContext)
}

func (s *DdlStatementContext) AlterFunction() IAlterFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterFunctionContext)
}

func (s *DdlStatementContext) AlterInstance() IAlterInstanceContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterInstanceContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterInstanceContext)
}

func (s *DdlStatementContext) AlterLogfileGroup() IAlterLogfileGroupContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterLogfileGroupContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterLogfileGroupContext)
}

func (s *DdlStatementContext) AlterProcedure() IAlterProcedureContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterProcedureContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterProcedureContext)
}

func (s *DdlStatementContext) AlterServer() IAlterServerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterServerContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterServerContext)
}

func (s *DdlStatementContext) AlterTable() IAlterTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterTableContext)
}

func (s *DdlStatementContext) AlterTablespace() IAlterTablespaceContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterTablespaceContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterTablespaceContext)
}

func (s *DdlStatementContext) AlterView() IAlterViewContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterViewContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterViewContext)
}

func (s *DdlStatementContext) DropDatabase() IDropDatabaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropDatabaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropDatabaseContext)
}

func (s *DdlStatementContext) DropEvent() IDropEventContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropEventContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropEventContext)
}

func (s *DdlStatementContext) DropIndex() IDropIndexContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropIndexContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropIndexContext)
}

func (s *DdlStatementContext) DropLogfileGroup() IDropLogfileGroupContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropLogfileGroupContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropLogfileGroupContext)
}

func (s *DdlStatementContext) DropProcedure() IDropProcedureContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropProcedureContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropProcedureContext)
}

func (s *DdlStatementContext) DropFunction() IDropFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropFunctionContext)
}

func (s *DdlStatementContext) DropServer() IDropServerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropServerContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropServerContext)
}

func (s *DdlStatementContext) DropTable() IDropTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropTableContext)
}

func (s *DdlStatementContext) DropTablespace() IDropTablespaceContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropTablespaceContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropTablespaceContext)
}

func (s *DdlStatementContext) DropTrigger() IDropTriggerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropTriggerContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropTriggerContext)
}

func (s *DdlStatementContext) DropView() IDropViewContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropViewContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropViewContext)
}

func (s *DdlStatementContext) RenameTable() IRenameTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRenameTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRenameTableContext)
}

func (s *DdlStatementContext) TruncateTable() ITruncateTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITruncateTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITruncateTableContext)
}

func (s *DdlStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DdlStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DdlStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDdlStatement(s)
	}
}

func (s *DdlStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDdlStatement(s)
	}
}

func (p *MySqlParser) DdlStatement() (localctx IDdlStatementContext) {
	this := p
	_ = this

	localctx = NewDdlStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 8, MySqlParserRULE_ddlStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(744)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(709)
			p.CreateDatabase()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(710)
			p.CreateEvent()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(711)
			p.CreateIndex()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(712)
			p.CreateLogfileGroup()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(713)
			p.CreateProcedure()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(714)
			p.CreateFunction()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(715)
			p.CreateServer()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(716)
			p.CreateTable()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(717)
			p.CreateTablespaceInnodb()
		}

	case 10:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(718)
			p.CreateTablespaceNdb()
		}

	case 11:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(719)
			p.CreateTrigger()
		}

	case 12:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(720)
			p.CreateView()
		}

	case 13:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(721)
			p.AlterDatabase()
		}

	case 14:
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(722)
			p.AlterEvent()
		}

	case 15:
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(723)
			p.AlterFunction()
		}

	case 16:
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(724)
			p.AlterInstance()
		}

	case 17:
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(725)
			p.AlterLogfileGroup()
		}

	case 18:
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(726)
			p.AlterProcedure()
		}

	case 19:
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(727)
			p.AlterServer()
		}

	case 20:
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(728)
			p.AlterTable()
		}

	case 21:
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(729)
			p.AlterTablespace()
		}

	case 22:
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(730)
			p.AlterView()
		}

	case 23:
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(731)
			p.DropDatabase()
		}

	case 24:
		p.EnterOuterAlt(localctx, 24)
		{
			p.SetState(732)
			p.DropEvent()
		}

	case 25:
		p.EnterOuterAlt(localctx, 25)
		{
			p.SetState(733)
			p.DropIndex()
		}

	case 26:
		p.EnterOuterAlt(localctx, 26)
		{
			p.SetState(734)
			p.DropLogfileGroup()
		}

	case 27:
		p.EnterOuterAlt(localctx, 27)
		{
			p.SetState(735)
			p.DropProcedure()
		}

	case 28:
		p.EnterOuterAlt(localctx, 28)
		{
			p.SetState(736)
			p.DropFunction()
		}

	case 29:
		p.EnterOuterAlt(localctx, 29)
		{
			p.SetState(737)
			p.DropServer()
		}

	case 30:
		p.EnterOuterAlt(localctx, 30)
		{
			p.SetState(738)
			p.DropTable()
		}

	case 31:
		p.EnterOuterAlt(localctx, 31)
		{
			p.SetState(739)
			p.DropTablespace()
		}

	case 32:
		p.EnterOuterAlt(localctx, 32)
		{
			p.SetState(740)
			p.DropTrigger()
		}

	case 33:
		p.EnterOuterAlt(localctx, 33)
		{
			p.SetState(741)
			p.DropView()
		}

	case 34:
		p.EnterOuterAlt(localctx, 34)
		{
			p.SetState(742)
			p.RenameTable()
		}

	case 35:
		p.EnterOuterAlt(localctx, 35)
		{
			p.SetState(743)
			p.TruncateTable()
		}

	}

	return localctx
}

// IDmlStatementContext is an interface to support dynamic dispatch.
type IDmlStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDmlStatementContext differentiates from other interfaces.
	IsDmlStatementContext()
}

type DmlStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDmlStatementContext() *DmlStatementContext {
	var p = new(DmlStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dmlStatement
	return p
}

func (*DmlStatementContext) IsDmlStatementContext() {}

func NewDmlStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DmlStatementContext {
	var p = new(DmlStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dmlStatement

	return p
}

func (s *DmlStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *DmlStatementContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *DmlStatementContext) InsertStatement() IInsertStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IInsertStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IInsertStatementContext)
}

func (s *DmlStatementContext) UpdateStatement() IUpdateStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdateStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUpdateStatementContext)
}

func (s *DmlStatementContext) DeleteStatement() IDeleteStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeleteStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDeleteStatementContext)
}

func (s *DmlStatementContext) ReplaceStatement() IReplaceStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReplaceStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReplaceStatementContext)
}

func (s *DmlStatementContext) CallStatement() ICallStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICallStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICallStatementContext)
}

func (s *DmlStatementContext) LoadDataStatement() ILoadDataStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILoadDataStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILoadDataStatementContext)
}

func (s *DmlStatementContext) LoadXmlStatement() ILoadXmlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILoadXmlStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILoadXmlStatementContext)
}

func (s *DmlStatementContext) DoStatement() IDoStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDoStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDoStatementContext)
}

func (s *DmlStatementContext) HandlerStatement() IHandlerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHandlerStatementContext)
}

func (s *DmlStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DmlStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DmlStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDmlStatement(s)
	}
}

func (s *DmlStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDmlStatement(s)
	}
}

func (p *MySqlParser) DmlStatement() (localctx IDmlStatementContext) {
	this := p
	_ = this

	localctx = NewDmlStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 10, MySqlParserRULE_dmlStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(756)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(746)
			p.SelectStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(747)
			p.InsertStatement()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(748)
			p.UpdateStatement()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(749)
			p.DeleteStatement()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(750)
			p.ReplaceStatement()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(751)
			p.CallStatement()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(752)
			p.LoadDataStatement()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(753)
			p.LoadXmlStatement()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(754)
			p.DoStatement()
		}

	case 10:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(755)
			p.HandlerStatement()
		}

	}

	return localctx
}

// ITransactionStatementContext is an interface to support dynamic dispatch.
type ITransactionStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTransactionStatementContext differentiates from other interfaces.
	IsTransactionStatementContext()
}

type TransactionStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTransactionStatementContext() *TransactionStatementContext {
	var p = new(TransactionStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_transactionStatement
	return p
}

func (*TransactionStatementContext) IsTransactionStatementContext() {}

func NewTransactionStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionStatementContext {
	var p = new(TransactionStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_transactionStatement

	return p
}

func (s *TransactionStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *TransactionStatementContext) StartTransaction() IStartTransactionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStartTransactionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStartTransactionContext)
}

func (s *TransactionStatementContext) BeginWork() IBeginWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBeginWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBeginWorkContext)
}

func (s *TransactionStatementContext) CommitWork() ICommitWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICommitWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICommitWorkContext)
}

func (s *TransactionStatementContext) RollbackWork() IRollbackWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRollbackWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRollbackWorkContext)
}

func (s *TransactionStatementContext) SavepointStatement() ISavepointStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISavepointStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISavepointStatementContext)
}

func (s *TransactionStatementContext) RollbackStatement() IRollbackStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRollbackStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRollbackStatementContext)
}

func (s *TransactionStatementContext) ReleaseStatement() IReleaseStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReleaseStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReleaseStatementContext)
}

func (s *TransactionStatementContext) LockTables() ILockTablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockTablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockTablesContext)
}

func (s *TransactionStatementContext) UnlockTables() IUnlockTablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUnlockTablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUnlockTablesContext)
}

func (s *TransactionStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TransactionStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TransactionStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTransactionStatement(s)
	}
}

func (s *TransactionStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTransactionStatement(s)
	}
}

func (p *MySqlParser) TransactionStatement() (localctx ITransactionStatementContext) {
	this := p
	_ = this

	localctx = NewTransactionStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 12, MySqlParserRULE_transactionStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(767)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(758)
			p.StartTransaction()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(759)
			p.BeginWork()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(760)
			p.CommitWork()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(761)
			p.RollbackWork()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(762)
			p.SavepointStatement()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(763)
			p.RollbackStatement()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(764)
			p.ReleaseStatement()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(765)
			p.LockTables()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(766)
			p.UnlockTables()
		}

	}

	return localctx
}

// IReplicationStatementContext is an interface to support dynamic dispatch.
type IReplicationStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsReplicationStatementContext differentiates from other interfaces.
	IsReplicationStatementContext()
}

type ReplicationStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyReplicationStatementContext() *ReplicationStatementContext {
	var p = new(ReplicationStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_replicationStatement
	return p
}

func (*ReplicationStatementContext) IsReplicationStatementContext() {}

func NewReplicationStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReplicationStatementContext {
	var p = new(ReplicationStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_replicationStatement

	return p
}

func (s *ReplicationStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ReplicationStatementContext) ChangeMaster() IChangeMasterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChangeMasterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChangeMasterContext)
}

func (s *ReplicationStatementContext) ChangeReplicationFilter() IChangeReplicationFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChangeReplicationFilterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChangeReplicationFilterContext)
}

func (s *ReplicationStatementContext) PurgeBinaryLogs() IPurgeBinaryLogsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPurgeBinaryLogsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPurgeBinaryLogsContext)
}

func (s *ReplicationStatementContext) ResetMaster() IResetMasterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IResetMasterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IResetMasterContext)
}

func (s *ReplicationStatementContext) ResetSlave() IResetSlaveContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IResetSlaveContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IResetSlaveContext)
}

func (s *ReplicationStatementContext) StartSlave() IStartSlaveContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStartSlaveContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStartSlaveContext)
}

func (s *ReplicationStatementContext) StopSlave() IStopSlaveContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStopSlaveContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStopSlaveContext)
}

func (s *ReplicationStatementContext) StartGroupReplication() IStartGroupReplicationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStartGroupReplicationContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStartGroupReplicationContext)
}

func (s *ReplicationStatementContext) StopGroupReplication() IStopGroupReplicationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStopGroupReplicationContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStopGroupReplicationContext)
}

func (s *ReplicationStatementContext) XaStartTransaction() IXaStartTransactionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaStartTransactionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaStartTransactionContext)
}

func (s *ReplicationStatementContext) XaEndTransaction() IXaEndTransactionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaEndTransactionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaEndTransactionContext)
}

func (s *ReplicationStatementContext) XaPrepareStatement() IXaPrepareStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaPrepareStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaPrepareStatementContext)
}

func (s *ReplicationStatementContext) XaCommitWork() IXaCommitWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaCommitWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaCommitWorkContext)
}

func (s *ReplicationStatementContext) XaRollbackWork() IXaRollbackWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaRollbackWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaRollbackWorkContext)
}

func (s *ReplicationStatementContext) XaRecoverWork() IXaRecoverWorkContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXaRecoverWorkContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXaRecoverWorkContext)
}

func (s *ReplicationStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReplicationStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReplicationStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReplicationStatement(s)
	}
}

func (s *ReplicationStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReplicationStatement(s)
	}
}

func (p *MySqlParser) ReplicationStatement() (localctx IReplicationStatementContext) {
	this := p
	_ = this

	localctx = NewReplicationStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 14, MySqlParserRULE_replicationStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(784)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(769)
			p.ChangeMaster()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(770)
			p.ChangeReplicationFilter()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(771)
			p.PurgeBinaryLogs()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(772)
			p.ResetMaster()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(773)
			p.ResetSlave()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(774)
			p.StartSlave()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(775)
			p.StopSlave()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(776)
			p.StartGroupReplication()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(777)
			p.StopGroupReplication()
		}

	case 10:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(778)
			p.XaStartTransaction()
		}

	case 11:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(779)
			p.XaEndTransaction()
		}

	case 12:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(780)
			p.XaPrepareStatement()
		}

	case 13:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(781)
			p.XaCommitWork()
		}

	case 14:
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(782)
			p.XaRollbackWork()
		}

	case 15:
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(783)
			p.XaRecoverWork()
		}

	}

	return localctx
}

// IPreparedStatementContext is an interface to support dynamic dispatch.
type IPreparedStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPreparedStatementContext differentiates from other interfaces.
	IsPreparedStatementContext()
}

type PreparedStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPreparedStatementContext() *PreparedStatementContext {
	var p = new(PreparedStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_preparedStatement
	return p
}

func (*PreparedStatementContext) IsPreparedStatementContext() {}

func NewPreparedStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PreparedStatementContext {
	var p = new(PreparedStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_preparedStatement

	return p
}

func (s *PreparedStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *PreparedStatementContext) PrepareStatement() IPrepareStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrepareStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPrepareStatementContext)
}

func (s *PreparedStatementContext) ExecuteStatement() IExecuteStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExecuteStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExecuteStatementContext)
}

func (s *PreparedStatementContext) DeallocatePrepare() IDeallocatePrepareContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeallocatePrepareContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDeallocatePrepareContext)
}

func (s *PreparedStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PreparedStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PreparedStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPreparedStatement(s)
	}
}

func (s *PreparedStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPreparedStatement(s)
	}
}

func (p *MySqlParser) PreparedStatement() (localctx IPreparedStatementContext) {
	this := p
	_ = this

	localctx = NewPreparedStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 16, MySqlParserRULE_preparedStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(789)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserPREPARE:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(786)
			p.PrepareStatement()
		}

	case MySqlParserEXECUTE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(787)
			p.ExecuteStatement()
		}

	case MySqlParserDROP, MySqlParserDEALLOCATE:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(788)
			p.DeallocatePrepare()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ICompoundStatementContext is an interface to support dynamic dispatch.
type ICompoundStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCompoundStatementContext differentiates from other interfaces.
	IsCompoundStatementContext()
}

type CompoundStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCompoundStatementContext() *CompoundStatementContext {
	var p = new(CompoundStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_compoundStatement
	return p
}

func (*CompoundStatementContext) IsCompoundStatementContext() {}

func NewCompoundStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CompoundStatementContext {
	var p = new(CompoundStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_compoundStatement

	return p
}

func (s *CompoundStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *CompoundStatementContext) BlockStatement() IBlockStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBlockStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBlockStatementContext)
}

func (s *CompoundStatementContext) CaseStatement() ICaseStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICaseStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICaseStatementContext)
}

func (s *CompoundStatementContext) IfStatement() IIfStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfStatementContext)
}

func (s *CompoundStatementContext) LeaveStatement() ILeaveStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILeaveStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILeaveStatementContext)
}

func (s *CompoundStatementContext) LoopStatement() ILoopStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILoopStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILoopStatementContext)
}

func (s *CompoundStatementContext) RepeatStatement() IRepeatStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRepeatStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRepeatStatementContext)
}

func (s *CompoundStatementContext) WhileStatement() IWhileStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWhileStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWhileStatementContext)
}

func (s *CompoundStatementContext) IterateStatement() IIterateStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIterateStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIterateStatementContext)
}

func (s *CompoundStatementContext) ReturnStatement() IReturnStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReturnStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReturnStatementContext)
}

func (s *CompoundStatementContext) CursorStatement() ICursorStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICursorStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICursorStatementContext)
}

func (s *CompoundStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CompoundStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CompoundStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCompoundStatement(s)
	}
}

func (s *CompoundStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCompoundStatement(s)
	}
}

func (p *MySqlParser) CompoundStatement() (localctx ICompoundStatementContext) {
	this := p
	_ = this

	localctx = NewCompoundStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 18, MySqlParserRULE_compoundStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(801)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(791)
			p.BlockStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(792)
			p.CaseStatement()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(793)
			p.IfStatement()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(794)
			p.LeaveStatement()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(795)
			p.LoopStatement()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(796)
			p.RepeatStatement()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(797)
			p.WhileStatement()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(798)
			p.IterateStatement()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(799)
			p.ReturnStatement()
		}

	case 10:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(800)
			p.CursorStatement()
		}

	}

	return localctx
}

// IAdministrationStatementContext is an interface to support dynamic dispatch.
type IAdministrationStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAdministrationStatementContext differentiates from other interfaces.
	IsAdministrationStatementContext()
}

type AdministrationStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAdministrationStatementContext() *AdministrationStatementContext {
	var p = new(AdministrationStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_administrationStatement
	return p
}

func (*AdministrationStatementContext) IsAdministrationStatementContext() {}

func NewAdministrationStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AdministrationStatementContext {
	var p = new(AdministrationStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_administrationStatement

	return p
}

func (s *AdministrationStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *AdministrationStatementContext) AlterUser() IAlterUserContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterUserContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAlterUserContext)
}

func (s *AdministrationStatementContext) CreateUser() ICreateUserContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateUserContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateUserContext)
}

func (s *AdministrationStatementContext) DropUser() IDropUserContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDropUserContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDropUserContext)
}

func (s *AdministrationStatementContext) GrantStatement() IGrantStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGrantStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IGrantStatementContext)
}

func (s *AdministrationStatementContext) GrantProxy() IGrantProxyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGrantProxyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IGrantProxyContext)
}

func (s *AdministrationStatementContext) RenameUser() IRenameUserContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRenameUserContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRenameUserContext)
}

func (s *AdministrationStatementContext) RevokeStatement() IRevokeStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRevokeStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRevokeStatementContext)
}

func (s *AdministrationStatementContext) RevokeProxy() IRevokeProxyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRevokeProxyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRevokeProxyContext)
}

func (s *AdministrationStatementContext) AnalyzeTable() IAnalyzeTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAnalyzeTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAnalyzeTableContext)
}

func (s *AdministrationStatementContext) CheckTable() ICheckTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICheckTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICheckTableContext)
}

func (s *AdministrationStatementContext) ChecksumTable() IChecksumTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChecksumTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChecksumTableContext)
}

func (s *AdministrationStatementContext) OptimizeTable() IOptimizeTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOptimizeTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOptimizeTableContext)
}

func (s *AdministrationStatementContext) RepairTable() IRepairTableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRepairTableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRepairTableContext)
}

func (s *AdministrationStatementContext) CreateUdfunction() ICreateUdfunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateUdfunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateUdfunctionContext)
}

func (s *AdministrationStatementContext) InstallPlugin() IInstallPluginContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IInstallPluginContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IInstallPluginContext)
}

func (s *AdministrationStatementContext) UninstallPlugin() IUninstallPluginContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUninstallPluginContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUninstallPluginContext)
}

func (s *AdministrationStatementContext) SetStatement() ISetStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISetStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISetStatementContext)
}

func (s *AdministrationStatementContext) ShowStatement() IShowStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowStatementContext)
}

func (s *AdministrationStatementContext) BinlogStatement() IBinlogStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBinlogStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBinlogStatementContext)
}

func (s *AdministrationStatementContext) CacheIndexStatement() ICacheIndexStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICacheIndexStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICacheIndexStatementContext)
}

func (s *AdministrationStatementContext) FlushStatement() IFlushStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFlushStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFlushStatementContext)
}

func (s *AdministrationStatementContext) KillStatement() IKillStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IKillStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IKillStatementContext)
}

func (s *AdministrationStatementContext) LoadIndexIntoCache() ILoadIndexIntoCacheContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILoadIndexIntoCacheContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILoadIndexIntoCacheContext)
}

func (s *AdministrationStatementContext) ResetStatement() IResetStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IResetStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IResetStatementContext)
}

func (s *AdministrationStatementContext) ShutdownStatement() IShutdownStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShutdownStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShutdownStatementContext)
}

func (s *AdministrationStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AdministrationStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AdministrationStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAdministrationStatement(s)
	}
}

func (s *AdministrationStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAdministrationStatement(s)
	}
}

func (p *MySqlParser) AdministrationStatement() (localctx IAdministrationStatementContext) {
	this := p
	_ = this

	localctx = NewAdministrationStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 20, MySqlParserRULE_administrationStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(828)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(803)
			p.AlterUser()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(804)
			p.CreateUser()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(805)
			p.DropUser()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(806)
			p.GrantStatement()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(807)
			p.GrantProxy()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(808)
			p.RenameUser()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(809)
			p.RevokeStatement()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(810)
			p.RevokeProxy()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(811)
			p.AnalyzeTable()
		}

	case 10:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(812)
			p.CheckTable()
		}

	case 11:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(813)
			p.ChecksumTable()
		}

	case 12:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(814)
			p.OptimizeTable()
		}

	case 13:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(815)
			p.RepairTable()
		}

	case 14:
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(816)
			p.CreateUdfunction()
		}

	case 15:
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(817)
			p.InstallPlugin()
		}

	case 16:
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(818)
			p.UninstallPlugin()
		}

	case 17:
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(819)
			p.SetStatement()
		}

	case 18:
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(820)
			p.ShowStatement()
		}

	case 19:
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(821)
			p.BinlogStatement()
		}

	case 20:
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(822)
			p.CacheIndexStatement()
		}

	case 21:
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(823)
			p.FlushStatement()
		}

	case 22:
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(824)
			p.KillStatement()
		}

	case 23:
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(825)
			p.LoadIndexIntoCache()
		}

	case 24:
		p.EnterOuterAlt(localctx, 24)
		{
			p.SetState(826)
			p.ResetStatement()
		}

	case 25:
		p.EnterOuterAlt(localctx, 25)
		{
			p.SetState(827)
			p.ShutdownStatement()
		}

	}

	return localctx
}

// IUtilityStatementContext is an interface to support dynamic dispatch.
type IUtilityStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUtilityStatementContext differentiates from other interfaces.
	IsUtilityStatementContext()
}

type UtilityStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUtilityStatementContext() *UtilityStatementContext {
	var p = new(UtilityStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_utilityStatement
	return p
}

func (*UtilityStatementContext) IsUtilityStatementContext() {}

func NewUtilityStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UtilityStatementContext {
	var p = new(UtilityStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_utilityStatement

	return p
}

func (s *UtilityStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *UtilityStatementContext) SimpleDescribeStatement() ISimpleDescribeStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleDescribeStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleDescribeStatementContext)
}

func (s *UtilityStatementContext) FullDescribeStatement() IFullDescribeStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullDescribeStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullDescribeStatementContext)
}

func (s *UtilityStatementContext) HelpStatement() IHelpStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHelpStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHelpStatementContext)
}

func (s *UtilityStatementContext) UseStatement() IUseStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUseStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUseStatementContext)
}

func (s *UtilityStatementContext) SignalStatement() ISignalStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISignalStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISignalStatementContext)
}

func (s *UtilityStatementContext) ResignalStatement() IResignalStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IResignalStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IResignalStatementContext)
}

func (s *UtilityStatementContext) DiagnosticsStatement() IDiagnosticsStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDiagnosticsStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDiagnosticsStatementContext)
}

func (s *UtilityStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UtilityStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UtilityStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUtilityStatement(s)
	}
}

func (s *UtilityStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUtilityStatement(s)
	}
}

func (p *MySqlParser) UtilityStatement() (localctx IUtilityStatementContext) {
	this := p
	_ = this

	localctx = NewUtilityStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 22, MySqlParserRULE_utilityStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(837)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(830)
			p.SimpleDescribeStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(831)
			p.FullDescribeStatement()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(832)
			p.HelpStatement()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(833)
			p.UseStatement()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(834)
			p.SignalStatement()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(835)
			p.ResignalStatement()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(836)
			p.DiagnosticsStatement()
		}

	}

	return localctx
}

// ICreateDatabaseContext is an interface to support dynamic dispatch.
type ICreateDatabaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDbFormat returns the dbFormat token.
	GetDbFormat() antlr.Token

	// SetDbFormat sets the dbFormat token.
	SetDbFormat(antlr.Token)

	// IsCreateDatabaseContext differentiates from other interfaces.
	IsCreateDatabaseContext()
}

type CreateDatabaseContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	dbFormat antlr.Token
}

func NewEmptyCreateDatabaseContext() *CreateDatabaseContext {
	var p = new(CreateDatabaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createDatabase
	return p
}

func (*CreateDatabaseContext) IsCreateDatabaseContext() {}

func NewCreateDatabaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateDatabaseContext {
	var p = new(CreateDatabaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createDatabase

	return p
}

func (s *CreateDatabaseContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateDatabaseContext) GetDbFormat() antlr.Token { return s.dbFormat }

func (s *CreateDatabaseContext) SetDbFormat(v antlr.Token) { s.dbFormat = v }

func (s *CreateDatabaseContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateDatabaseContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateDatabaseContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *CreateDatabaseContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *CreateDatabaseContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *CreateDatabaseContext) AllCreateDatabaseOption() []ICreateDatabaseOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICreateDatabaseOptionContext)(nil)).Elem())
	var tst = make([]ICreateDatabaseOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICreateDatabaseOptionContext)
		}
	}

	return tst
}

func (s *CreateDatabaseContext) CreateDatabaseOption(i int) ICreateDatabaseOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDatabaseOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICreateDatabaseOptionContext)
}

func (s *CreateDatabaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateDatabaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateDatabaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateDatabase(s)
	}
}

func (s *CreateDatabaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateDatabase(s)
	}
}

func (p *MySqlParser) CreateDatabase() (localctx ICreateDatabaseContext) {
	this := p
	_ = this

	localctx = NewCreateDatabaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 24, MySqlParserRULE_createDatabase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(839)
		p.Match(MySqlParserCREATE)
	}
	{
		p.SetState(840)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*CreateDatabaseContext).dbFormat = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDATABASE || _la == MySqlParserSCHEMA) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*CreateDatabaseContext).dbFormat = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(842)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(841)
			p.IfNotExists()
		}

	}
	{
		p.SetState(844)
		p.Uid()
	}
	p.SetState(848)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for (((_la-24)&-(0x1f+1)) == 0 && ((1<<uint((_la-24)))&((1<<(MySqlParserCHARACTER-24))|(1<<(MySqlParserCOLLATE-24))|(1<<(MySqlParserDEFAULT-24)))) != 0) || _la == MySqlParserCHAR || _la == MySqlParserCHARSET {
		{
			p.SetState(845)
			p.CreateDatabaseOption()
		}

		p.SetState(850)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ICreateEventContext is an interface to support dynamic dispatch.
type ICreateEventContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateEventContext differentiates from other interfaces.
	IsCreateEventContext()
}

type CreateEventContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateEventContext() *CreateEventContext {
	var p = new(CreateEventContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createEvent
	return p
}

func (*CreateEventContext) IsCreateEventContext() {}

func NewCreateEventContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateEventContext {
	var p = new(CreateEventContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createEvent

	return p
}

func (s *CreateEventContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateEventContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateEventContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *CreateEventContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CreateEventContext) AllON() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserON)
}

func (s *CreateEventContext) ON(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserON, i)
}

func (s *CreateEventContext) SCHEDULE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEDULE, 0)
}

func (s *CreateEventContext) ScheduleExpression() IScheduleExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IScheduleExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IScheduleExpressionContext)
}

func (s *CreateEventContext) DO() antlr.TerminalNode {
	return s.GetToken(MySqlParserDO, 0)
}

func (s *CreateEventContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *CreateEventContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *CreateEventContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *CreateEventContext) COMPLETION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPLETION, 0)
}

func (s *CreateEventContext) PRESERVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRESERVE, 0)
}

func (s *CreateEventContext) EnableType() IEnableTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEnableTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEnableTypeContext)
}

func (s *CreateEventContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *CreateEventContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CreateEventContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *CreateEventContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateEventContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateEventContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateEvent(s)
	}
}

func (s *CreateEventContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateEvent(s)
	}
}

func (p *MySqlParser) CreateEvent() (localctx ICreateEventContext) {
	this := p
	_ = this

	localctx = NewCreateEventContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 26, MySqlParserRULE_createEvent)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(851)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(853)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(852)
			p.OwnerStatement()
		}

	}
	{
		p.SetState(855)
		p.Match(MySqlParserEVENT)
	}
	p.SetState(857)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(856)
			p.IfNotExists()
		}

	}
	{
		p.SetState(859)
		p.FullId()
	}
	{
		p.SetState(860)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(861)
		p.Match(MySqlParserSCHEDULE)
	}
	{
		p.SetState(862)
		p.ScheduleExpression()
	}
	p.SetState(869)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserON {
		{
			p.SetState(863)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(864)
			p.Match(MySqlParserCOMPLETION)
		}
		p.SetState(866)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNOT {
			{
				p.SetState(865)
				p.Match(MySqlParserNOT)
			}

		}
		{
			p.SetState(868)
			p.Match(MySqlParserPRESERVE)
		}

	}
	p.SetState(872)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDISABLE || _la == MySqlParserENABLE {
		{
			p.SetState(871)
			p.EnableType()
		}

	}
	p.SetState(876)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMENT {
		{
			p.SetState(874)
			p.Match(MySqlParserCOMMENT)
		}
		{
			p.SetState(875)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	}
	{
		p.SetState(878)
		p.Match(MySqlParserDO)
	}
	{
		p.SetState(879)
		p.RoutineBody()
	}

	return localctx
}

// ICreateIndexContext is an interface to support dynamic dispatch.
type ICreateIndexContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIntimeAction returns the intimeAction token.
	GetIntimeAction() antlr.Token

	// GetIndexCategory returns the indexCategory token.
	GetIndexCategory() antlr.Token

	// GetAlgType returns the algType token.
	GetAlgType() antlr.Token

	// GetLockType returns the lockType token.
	GetLockType() antlr.Token

	// SetIntimeAction sets the intimeAction token.
	SetIntimeAction(antlr.Token)

	// SetIndexCategory sets the indexCategory token.
	SetIndexCategory(antlr.Token)

	// SetAlgType sets the algType token.
	SetAlgType(antlr.Token)

	// SetLockType sets the lockType token.
	SetLockType(antlr.Token)

	// IsCreateIndexContext differentiates from other interfaces.
	IsCreateIndexContext()
}

type CreateIndexContext struct {
	*antlr.BaseParserRuleContext
	parser        antlr.Parser
	intimeAction  antlr.Token
	indexCategory antlr.Token
	algType       antlr.Token
	lockType      antlr.Token
}

func NewEmptyCreateIndexContext() *CreateIndexContext {
	var p = new(CreateIndexContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createIndex
	return p
}

func (*CreateIndexContext) IsCreateIndexContext() {}

func NewCreateIndexContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateIndexContext {
	var p = new(CreateIndexContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createIndex

	return p
}

func (s *CreateIndexContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateIndexContext) GetIntimeAction() antlr.Token { return s.intimeAction }

func (s *CreateIndexContext) GetIndexCategory() antlr.Token { return s.indexCategory }

func (s *CreateIndexContext) GetAlgType() antlr.Token { return s.algType }

func (s *CreateIndexContext) GetLockType() antlr.Token { return s.lockType }

func (s *CreateIndexContext) SetIntimeAction(v antlr.Token) { s.intimeAction = v }

func (s *CreateIndexContext) SetIndexCategory(v antlr.Token) { s.indexCategory = v }

func (s *CreateIndexContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *CreateIndexContext) SetLockType(v antlr.Token) { s.lockType = v }

func (s *CreateIndexContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *CreateIndexContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateIndexContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *CreateIndexContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *CreateIndexContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *CreateIndexContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *CreateIndexContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *CreateIndexContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *CreateIndexContext) AllALGORITHM() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserALGORITHM)
}

func (s *CreateIndexContext) ALGORITHM(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, i)
}

func (s *CreateIndexContext) AllLOCK() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLOCK)
}

func (s *CreateIndexContext) LOCK(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, i)
}

func (s *CreateIndexContext) ONLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLINE, 0)
}

func (s *CreateIndexContext) OFFLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFLINE, 0)
}

func (s *CreateIndexContext) UNIQUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNIQUE, 0)
}

func (s *CreateIndexContext) FULLTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULLTEXT, 0)
}

func (s *CreateIndexContext) SPATIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSPATIAL, 0)
}

func (s *CreateIndexContext) AllDEFAULT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDEFAULT)
}

func (s *CreateIndexContext) DEFAULT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, i)
}

func (s *CreateIndexContext) AllINPLACE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserINPLACE)
}

func (s *CreateIndexContext) INPLACE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserINPLACE, i)
}

func (s *CreateIndexContext) AllCOPY() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOPY)
}

func (s *CreateIndexContext) COPY(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOPY, i)
}

func (s *CreateIndexContext) AllNONE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNONE)
}

func (s *CreateIndexContext) NONE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, i)
}

func (s *CreateIndexContext) AllSHARED() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSHARED)
}

func (s *CreateIndexContext) SHARED(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARED, i)
}

func (s *CreateIndexContext) AllEXCLUSIVE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEXCLUSIVE)
}

func (s *CreateIndexContext) EXCLUSIVE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLUSIVE, i)
}

func (s *CreateIndexContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *CreateIndexContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *CreateIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateIndexContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateIndex(s)
	}
}

func (s *CreateIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateIndex(s)
	}
}

func (p *MySqlParser) CreateIndex() (localctx ICreateIndexContext) {
	this := p
	_ = this

	localctx = NewCreateIndexContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 28, MySqlParserRULE_createIndex)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(881)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(883)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserOFFLINE || _la == MySqlParserONLINE {
		{
			p.SetState(882)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CreateIndexContext).intimeAction = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserOFFLINE || _la == MySqlParserONLINE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CreateIndexContext).intimeAction = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(886)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFULLTEXT || _la == MySqlParserSPATIAL || _la == MySqlParserUNIQUE {
		{
			p.SetState(885)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CreateIndexContext).indexCategory = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFULLTEXT || _la == MySqlParserSPATIAL || _la == MySqlParserUNIQUE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CreateIndexContext).indexCategory = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(888)
		p.Match(MySqlParserINDEX)
	}
	{
		p.SetState(889)
		p.Uid()
	}
	p.SetState(891)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserUSING {
		{
			p.SetState(890)
			p.IndexType()
		}

	}
	{
		p.SetState(893)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(894)
		p.TableName()
	}
	{
		p.SetState(895)
		p.IndexColumnNames()
	}
	p.SetState(899)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
		{
			p.SetState(896)
			p.IndexOption()
		}

		p.SetState(901)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(914)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			p.SetState(912)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserALGORITHM:
				{
					p.SetState(902)
					p.Match(MySqlParserALGORITHM)
				}
				p.SetState(904)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserEQUAL_SYMBOL {
					{
						p.SetState(903)
						p.Match(MySqlParserEQUAL_SYMBOL)
					}

				}
				{
					p.SetState(906)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*CreateIndexContext).algType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserDEFAULT || _la == MySqlParserCOPY || _la == MySqlParserINPLACE) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*CreateIndexContext).algType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			case MySqlParserLOCK:
				{
					p.SetState(907)
					p.Match(MySqlParserLOCK)
				}
				p.SetState(909)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserEQUAL_SYMBOL {
					{
						p.SetState(908)
						p.Match(MySqlParserEQUAL_SYMBOL)
					}

				}
				{
					p.SetState(911)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*CreateIndexContext).lockType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserDEFAULT || _la == MySqlParserEXCLUSIVE || _la == MySqlParserNONE || _la == MySqlParserSHARED) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*CreateIndexContext).lockType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(916)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext())
	}

	return localctx
}

// ICreateLogfileGroupContext is an interface to support dynamic dispatch.
type ICreateLogfileGroupContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetUndoFile returns the undoFile token.
	GetUndoFile() antlr.Token

	// GetComment returns the comment token.
	GetComment() antlr.Token

	// SetUndoFile sets the undoFile token.
	SetUndoFile(antlr.Token)

	// SetComment sets the comment token.
	SetComment(antlr.Token)

	// GetInitSize returns the initSize rule contexts.
	GetInitSize() IFileSizeLiteralContext

	// GetUndoSize returns the undoSize rule contexts.
	GetUndoSize() IFileSizeLiteralContext

	// GetRedoSize returns the redoSize rule contexts.
	GetRedoSize() IFileSizeLiteralContext

	// SetInitSize sets the initSize rule contexts.
	SetInitSize(IFileSizeLiteralContext)

	// SetUndoSize sets the undoSize rule contexts.
	SetUndoSize(IFileSizeLiteralContext)

	// SetRedoSize sets the redoSize rule contexts.
	SetRedoSize(IFileSizeLiteralContext)

	// IsCreateLogfileGroupContext differentiates from other interfaces.
	IsCreateLogfileGroupContext()
}

type CreateLogfileGroupContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	undoFile antlr.Token
	initSize IFileSizeLiteralContext
	undoSize IFileSizeLiteralContext
	redoSize IFileSizeLiteralContext
	comment  antlr.Token
}

func NewEmptyCreateLogfileGroupContext() *CreateLogfileGroupContext {
	var p = new(CreateLogfileGroupContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createLogfileGroup
	return p
}

func (*CreateLogfileGroupContext) IsCreateLogfileGroupContext() {}

func NewCreateLogfileGroupContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateLogfileGroupContext {
	var p = new(CreateLogfileGroupContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createLogfileGroup

	return p
}

func (s *CreateLogfileGroupContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateLogfileGroupContext) GetUndoFile() antlr.Token { return s.undoFile }

func (s *CreateLogfileGroupContext) GetComment() antlr.Token { return s.comment }

func (s *CreateLogfileGroupContext) SetUndoFile(v antlr.Token) { s.undoFile = v }

func (s *CreateLogfileGroupContext) SetComment(v antlr.Token) { s.comment = v }

func (s *CreateLogfileGroupContext) GetInitSize() IFileSizeLiteralContext { return s.initSize }

func (s *CreateLogfileGroupContext) GetUndoSize() IFileSizeLiteralContext { return s.undoSize }

func (s *CreateLogfileGroupContext) GetRedoSize() IFileSizeLiteralContext { return s.redoSize }

func (s *CreateLogfileGroupContext) SetInitSize(v IFileSizeLiteralContext) { s.initSize = v }

func (s *CreateLogfileGroupContext) SetUndoSize(v IFileSizeLiteralContext) { s.undoSize = v }

func (s *CreateLogfileGroupContext) SetRedoSize(v IFileSizeLiteralContext) { s.redoSize = v }

func (s *CreateLogfileGroupContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateLogfileGroupContext) LOGFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGFILE, 0)
}

func (s *CreateLogfileGroupContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *CreateLogfileGroupContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *CreateLogfileGroupContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateLogfileGroupContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *CreateLogfileGroupContext) UNDOFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDOFILE, 0)
}

func (s *CreateLogfileGroupContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *CreateLogfileGroupContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *CreateLogfileGroupContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *CreateLogfileGroupContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *CreateLogfileGroupContext) INITIAL_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINITIAL_SIZE, 0)
}

func (s *CreateLogfileGroupContext) UNDO_BUFFER_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDO_BUFFER_SIZE, 0)
}

func (s *CreateLogfileGroupContext) REDO_BUFFER_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREDO_BUFFER_SIZE, 0)
}

func (s *CreateLogfileGroupContext) NODEGROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserNODEGROUP, 0)
}

func (s *CreateLogfileGroupContext) WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT, 0)
}

func (s *CreateLogfileGroupContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *CreateLogfileGroupContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *CreateLogfileGroupContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *CreateLogfileGroupContext) AllFileSizeLiteral() []IFileSizeLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem())
	var tst = make([]IFileSizeLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFileSizeLiteralContext)
		}
	}

	return tst
}

func (s *CreateLogfileGroupContext) FileSizeLiteral(i int) IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *CreateLogfileGroupContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateLogfileGroupContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateLogfileGroupContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateLogfileGroup(s)
	}
}

func (s *CreateLogfileGroupContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateLogfileGroup(s)
	}
}

func (p *MySqlParser) CreateLogfileGroup() (localctx ICreateLogfileGroupContext) {
	this := p
	_ = this

	localctx = NewCreateLogfileGroupContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 30, MySqlParserRULE_createLogfileGroup)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(917)
		p.Match(MySqlParserCREATE)
	}
	{
		p.SetState(918)
		p.Match(MySqlParserLOGFILE)
	}
	{
		p.SetState(919)
		p.Match(MySqlParserGROUP)
	}
	{
		p.SetState(920)
		p.Uid()
	}
	{
		p.SetState(921)
		p.Match(MySqlParserADD)
	}
	{
		p.SetState(922)
		p.Match(MySqlParserUNDOFILE)
	}
	{
		p.SetState(923)

		var _m = p.Match(MySqlParserSTRING_LITERAL)

		localctx.(*CreateLogfileGroupContext).undoFile = _m
	}
	p.SetState(929)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINITIAL_SIZE {
		{
			p.SetState(924)
			p.Match(MySqlParserINITIAL_SIZE)
		}
		p.SetState(926)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(925)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(928)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateLogfileGroupContext).initSize = _x
		}

	}
	p.SetState(936)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserUNDO_BUFFER_SIZE {
		{
			p.SetState(931)
			p.Match(MySqlParserUNDO_BUFFER_SIZE)
		}
		p.SetState(933)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(932)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(935)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateLogfileGroupContext).undoSize = _x
		}

	}
	p.SetState(943)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserREDO_BUFFER_SIZE {
		{
			p.SetState(938)
			p.Match(MySqlParserREDO_BUFFER_SIZE)
		}
		p.SetState(940)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(939)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(942)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateLogfileGroupContext).redoSize = _x
		}

	}
	p.SetState(950)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNODEGROUP {
		{
			p.SetState(945)
			p.Match(MySqlParserNODEGROUP)
		}
		p.SetState(947)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(946)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(949)
			p.Uid()
		}

	}
	p.SetState(953)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWAIT {
		{
			p.SetState(952)
			p.Match(MySqlParserWAIT)
		}

	}
	p.SetState(960)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMENT {
		{
			p.SetState(955)
			p.Match(MySqlParserCOMMENT)
		}
		p.SetState(957)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(956)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(959)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*CreateLogfileGroupContext).comment = _m
		}

	}
	{
		p.SetState(962)
		p.Match(MySqlParserENGINE)
	}
	p.SetState(964)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEQUAL_SYMBOL {
		{
			p.SetState(963)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	}
	{
		p.SetState(966)
		p.EngineName()
	}

	return localctx
}

// ICreateProcedureContext is an interface to support dynamic dispatch.
type ICreateProcedureContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateProcedureContext differentiates from other interfaces.
	IsCreateProcedureContext()
}

type CreateProcedureContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateProcedureContext() *CreateProcedureContext {
	var p = new(CreateProcedureContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createProcedure
	return p
}

func (*CreateProcedureContext) IsCreateProcedureContext() {}

func NewCreateProcedureContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateProcedureContext {
	var p = new(CreateProcedureContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createProcedure

	return p
}

func (s *CreateProcedureContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateProcedureContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateProcedureContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *CreateProcedureContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CreateProcedureContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CreateProcedureContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CreateProcedureContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *CreateProcedureContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *CreateProcedureContext) AllProcedureParameter() []IProcedureParameterContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureParameterContext)(nil)).Elem())
	var tst = make([]IProcedureParameterContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureParameterContext)
		}
	}

	return tst
}

func (s *CreateProcedureContext) ProcedureParameter(i int) IProcedureParameterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureParameterContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureParameterContext)
}

func (s *CreateProcedureContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateProcedureContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateProcedureContext) AllRoutineOption() []IRoutineOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem())
	var tst = make([]IRoutineOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRoutineOptionContext)
		}
	}

	return tst
}

func (s *CreateProcedureContext) RoutineOption(i int) IRoutineOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRoutineOptionContext)
}

func (s *CreateProcedureContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateProcedureContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateProcedureContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateProcedure(s)
	}
}

func (s *CreateProcedureContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateProcedure(s)
	}
}

func (p *MySqlParser) CreateProcedure() (localctx ICreateProcedureContext) {
	this := p
	_ = this

	localctx = NewCreateProcedureContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 32, MySqlParserRULE_createProcedure)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(968)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(970)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(969)
			p.OwnerStatement()
		}

	}
	{
		p.SetState(972)
		p.Match(MySqlParserPROCEDURE)
	}
	{
		p.SetState(973)
		p.FullId()
	}
	{
		p.SetState(974)
		p.Match(MySqlParserLR_BRACKET)
	}
	p.SetState(976)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || (((_la-70)&-(0x1f+1)) == 0 && ((1<<uint((_la-70)))&((1<<(MySqlParserGROUP-70))|(1<<(MySqlParserIN-70))|(1<<(MySqlParserINOUT-70))|(1<<(MySqlParserLEFT-70)))) != 0) || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserOUT-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(975)
			p.ProcedureParameter()
		}

	}
	p.SetState(982)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(978)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(979)
			p.ProcedureParameter()
		}

		p.SetState(984)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(985)
		p.Match(MySqlParserRR_BRACKET)
	}
	p.SetState(989)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 49, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(986)
				p.RoutineOption()
			}

		}
		p.SetState(991)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 49, p.GetParserRuleContext())
	}
	{
		p.SetState(992)
		p.RoutineBody()
	}

	return localctx
}

// ICreateFunctionContext is an interface to support dynamic dispatch.
type ICreateFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateFunctionContext differentiates from other interfaces.
	IsCreateFunctionContext()
}

type CreateFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateFunctionContext() *CreateFunctionContext {
	var p = new(CreateFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createFunction
	return p
}

func (*CreateFunctionContext) IsCreateFunctionContext() {}

func NewCreateFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateFunctionContext {
	var p = new(CreateFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createFunction

	return p
}

func (s *CreateFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateFunctionContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateFunctionContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *CreateFunctionContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CreateFunctionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CreateFunctionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CreateFunctionContext) RETURNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNS, 0)
}

func (s *CreateFunctionContext) DataType() IDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeContext)
}

func (s *CreateFunctionContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *CreateFunctionContext) ReturnStatement() IReturnStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReturnStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReturnStatementContext)
}

func (s *CreateFunctionContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *CreateFunctionContext) AllFunctionParameter() []IFunctionParameterContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFunctionParameterContext)(nil)).Elem())
	var tst = make([]IFunctionParameterContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFunctionParameterContext)
		}
	}

	return tst
}

func (s *CreateFunctionContext) FunctionParameter(i int) IFunctionParameterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionParameterContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFunctionParameterContext)
}

func (s *CreateFunctionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateFunctionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateFunctionContext) AllRoutineOption() []IRoutineOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem())
	var tst = make([]IRoutineOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRoutineOptionContext)
		}
	}

	return tst
}

func (s *CreateFunctionContext) RoutineOption(i int) IRoutineOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRoutineOptionContext)
}

func (s *CreateFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateFunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateFunction(s)
	}
}

func (s *CreateFunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateFunction(s)
	}
}

func (p *MySqlParser) CreateFunction() (localctx ICreateFunctionContext) {
	this := p
	_ = this

	localctx = NewCreateFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 34, MySqlParserRULE_createFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(994)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(996)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(995)
			p.OwnerStatement()
		}

	}
	{
		p.SetState(998)
		p.Match(MySqlParserFUNCTION)
	}
	{
		p.SetState(999)
		p.FullId()
	}
	{
		p.SetState(1000)
		p.Match(MySqlParserLR_BRACKET)
	}
	p.SetState(1002)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(1001)
			p.FunctionParameter()
		}

	}
	p.SetState(1008)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(1004)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(1005)
			p.FunctionParameter()
		}

		p.SetState(1010)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(1011)
		p.Match(MySqlParserRR_BRACKET)
	}
	{
		p.SetState(1012)
		p.Match(MySqlParserRETURNS)
	}
	{
		p.SetState(1013)
		p.DataType()
	}
	p.SetState(1017)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 53, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(1014)
				p.RoutineOption()
			}

		}
		p.SetState(1019)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 53, p.GetParserRuleContext())
	}
	p.SetState(1022)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDIAGNOSTICS, MySqlParserDROP, MySqlParserEXCEPT, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserGROUP, MySqlParserINSERT, MySqlParserKILL, MySqlParserLEFT, MySqlParserLOAD, MySqlParserLOCK, MySqlParserNUMBER, MySqlParserOPTIMIZE, MySqlParserORDER, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserSTACKED, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserLR_BRACKET, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		{
			p.SetState(1020)
			p.RoutineBody()
		}

	case MySqlParserRETURN:
		{
			p.SetState(1021)
			p.ReturnStatement()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ICreateServerContext is an interface to support dynamic dispatch.
type ICreateServerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetWrapperName returns the wrapperName token.
	GetWrapperName() antlr.Token

	// SetWrapperName sets the wrapperName token.
	SetWrapperName(antlr.Token)

	// IsCreateServerContext differentiates from other interfaces.
	IsCreateServerContext()
}

type CreateServerContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	wrapperName antlr.Token
}

func NewEmptyCreateServerContext() *CreateServerContext {
	var p = new(CreateServerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createServer
	return p
}

func (*CreateServerContext) IsCreateServerContext() {}

func NewCreateServerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateServerContext {
	var p = new(CreateServerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createServer

	return p
}

func (s *CreateServerContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateServerContext) GetWrapperName() antlr.Token { return s.wrapperName }

func (s *CreateServerContext) SetWrapperName(v antlr.Token) { s.wrapperName = v }

func (s *CreateServerContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateServerContext) SERVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERVER, 0)
}

func (s *CreateServerContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateServerContext) FOREIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOREIGN, 0)
}

func (s *CreateServerContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *CreateServerContext) WRAPPER() antlr.TerminalNode {
	return s.GetToken(MySqlParserWRAPPER, 0)
}

func (s *CreateServerContext) OPTIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIONS, 0)
}

func (s *CreateServerContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CreateServerContext) AllServerOption() []IServerOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IServerOptionContext)(nil)).Elem())
	var tst = make([]IServerOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IServerOptionContext)
		}
	}

	return tst
}

func (s *CreateServerContext) ServerOption(i int) IServerOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IServerOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IServerOptionContext)
}

func (s *CreateServerContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CreateServerContext) MYSQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL, 0)
}

func (s *CreateServerContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CreateServerContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateServerContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateServerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateServerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateServerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateServer(s)
	}
}

func (s *CreateServerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateServer(s)
	}
}

func (p *MySqlParser) CreateServer() (localctx ICreateServerContext) {
	this := p
	_ = this

	localctx = NewCreateServerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 36, MySqlParserRULE_createServer)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1024)
		p.Match(MySqlParserCREATE)
	}
	{
		p.SetState(1025)
		p.Match(MySqlParserSERVER)
	}
	{
		p.SetState(1026)
		p.Uid()
	}
	{
		p.SetState(1027)
		p.Match(MySqlParserFOREIGN)
	}
	{
		p.SetState(1028)
		p.Match(MySqlParserDATA)
	}
	{
		p.SetState(1029)
		p.Match(MySqlParserWRAPPER)
	}
	{
		p.SetState(1030)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*CreateServerContext).wrapperName = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserMYSQL || _la == MySqlParserSTRING_LITERAL) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*CreateServerContext).wrapperName = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(1031)
		p.Match(MySqlParserOPTIONS)
	}
	{
		p.SetState(1032)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(1033)
		p.ServerOption()
	}
	p.SetState(1038)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(1034)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(1035)
			p.ServerOption()
		}

		p.SetState(1040)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(1041)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// ICreateTableContext is an interface to support dynamic dispatch.
type ICreateTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateTableContext differentiates from other interfaces.
	IsCreateTableContext()
}

type CreateTableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateTableContext() *CreateTableContext {
	var p = new(CreateTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createTable
	return p
}

func (*CreateTableContext) IsCreateTableContext() {}

func NewCreateTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateTableContext {
	var p = new(CreateTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createTable

	return p
}

func (s *CreateTableContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateTableContext) CopyFrom(ctx *CreateTableContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *CreateTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type CopyCreateTableContext struct {
	*CreateTableContext
	parenthesisTable ITableNameContext
}

func NewCopyCreateTableContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CopyCreateTableContext {
	var p = new(CopyCreateTableContext)

	p.CreateTableContext = NewEmptyCreateTableContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateTableContext))

	return p
}

func (s *CopyCreateTableContext) GetParenthesisTable() ITableNameContext { return s.parenthesisTable }

func (s *CopyCreateTableContext) SetParenthesisTable(v ITableNameContext) { s.parenthesisTable = v }

func (s *CopyCreateTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CopyCreateTableContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CopyCreateTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *CopyCreateTableContext) AllTableName() []ITableNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableNameContext)(nil)).Elem())
	var tst = make([]ITableNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableNameContext)
		}
	}

	return tst
}

func (s *CopyCreateTableContext) TableName(i int) ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *CopyCreateTableContext) LIKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIKE, 0)
}

func (s *CopyCreateTableContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CopyCreateTableContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CopyCreateTableContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *CopyCreateTableContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *CopyCreateTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCopyCreateTable(s)
	}
}

func (s *CopyCreateTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCopyCreateTable(s)
	}
}

type ColumnCreateTableContext struct {
	*CreateTableContext
}

func NewColumnCreateTableContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ColumnCreateTableContext {
	var p = new(ColumnCreateTableContext)

	p.CreateTableContext = NewEmptyCreateTableContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateTableContext))

	return p
}

func (s *ColumnCreateTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ColumnCreateTableContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *ColumnCreateTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *ColumnCreateTableContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *ColumnCreateTableContext) CreateDefinitions() ICreateDefinitionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDefinitionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateDefinitionsContext)
}

func (s *ColumnCreateTableContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *ColumnCreateTableContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *ColumnCreateTableContext) AllTableOption() []ITableOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableOptionContext)(nil)).Elem())
	var tst = make([]ITableOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableOptionContext)
		}
	}

	return tst
}

func (s *ColumnCreateTableContext) TableOption(i int) ITableOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableOptionContext)
}

func (s *ColumnCreateTableContext) PartitionDefinitions() IPartitionDefinitionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionsContext)
}

func (s *ColumnCreateTableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ColumnCreateTableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ColumnCreateTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterColumnCreateTable(s)
	}
}

func (s *ColumnCreateTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitColumnCreateTable(s)
	}
}

type QueryCreateTableContext struct {
	*CreateTableContext
	keyViolate antlr.Token
}

func NewQueryCreateTableContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *QueryCreateTableContext {
	var p = new(QueryCreateTableContext)

	p.CreateTableContext = NewEmptyCreateTableContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateTableContext))

	return p
}

func (s *QueryCreateTableContext) GetKeyViolate() antlr.Token { return s.keyViolate }

func (s *QueryCreateTableContext) SetKeyViolate(v antlr.Token) { s.keyViolate = v }

func (s *QueryCreateTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *QueryCreateTableContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *QueryCreateTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *QueryCreateTableContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *QueryCreateTableContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *QueryCreateTableContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *QueryCreateTableContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *QueryCreateTableContext) CreateDefinitions() ICreateDefinitionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDefinitionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICreateDefinitionsContext)
}

func (s *QueryCreateTableContext) AllTableOption() []ITableOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableOptionContext)(nil)).Elem())
	var tst = make([]ITableOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableOptionContext)
		}
	}

	return tst
}

func (s *QueryCreateTableContext) TableOption(i int) ITableOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableOptionContext)
}

func (s *QueryCreateTableContext) PartitionDefinitions() IPartitionDefinitionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionsContext)
}

func (s *QueryCreateTableContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *QueryCreateTableContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *QueryCreateTableContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *QueryCreateTableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *QueryCreateTableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *QueryCreateTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterQueryCreateTable(s)
	}
}

func (s *QueryCreateTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitQueryCreateTable(s)
	}
}

func (p *MySqlParser) CreateTable() (localctx ICreateTableContext) {
	this := p
	_ = this

	localctx = NewCreateTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 38, MySqlParserRULE_createTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(1121)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 74, p.GetParserRuleContext()) {
	case 1:
		localctx = NewCopyCreateTableContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1043)
			p.Match(MySqlParserCREATE)
		}
		p.SetState(1045)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserTEMPORARY {
			{
				p.SetState(1044)
				p.Match(MySqlParserTEMPORARY)
			}

		}
		{
			p.SetState(1047)
			p.Match(MySqlParserTABLE)
		}
		p.SetState(1049)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(1048)
				p.IfNotExists()
			}

		}
		{
			p.SetState(1051)
			p.TableName()
		}
		p.SetState(1059)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserLIKE:
			{
				p.SetState(1052)
				p.Match(MySqlParserLIKE)
			}
			{
				p.SetState(1053)
				p.TableName()
			}

		case MySqlParserLR_BRACKET:
			{
				p.SetState(1054)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1055)
				p.Match(MySqlParserLIKE)
			}
			{
				p.SetState(1056)

				var _x = p.TableName()

				localctx.(*CopyCreateTableContext).parenthesisTable = _x
			}
			{
				p.SetState(1057)
				p.Match(MySqlParserRR_BRACKET)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 2:
		localctx = NewQueryCreateTableContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1061)
			p.Match(MySqlParserCREATE)
		}
		p.SetState(1063)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserTEMPORARY {
			{
				p.SetState(1062)
				p.Match(MySqlParserTEMPORARY)
			}

		}
		{
			p.SetState(1065)
			p.Match(MySqlParserTABLE)
		}
		p.SetState(1067)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(1066)
				p.IfNotExists()
			}

		}
		{
			p.SetState(1069)
			p.TableName()
		}
		p.SetState(1071)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 61, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1070)
				p.CreateDefinitions()
			}

		}
		p.SetState(1083)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-24)&-(0x1f+1)) == 0 && ((1<<uint((_la-24)))&((1<<(MySqlParserCHARACTER-24))|(1<<(MySqlParserCOLLATE-24))|(1<<(MySqlParserDEFAULT-24)))) != 0) || _la == MySqlParserINDEX || _la == MySqlParserUNION || _la == MySqlParserCHAR || (((_la-328)&-(0x1f+1)) == 0 && ((1<<uint((_la-328)))&((1<<(MySqlParserAUTO_INCREMENT-328))|(1<<(MySqlParserAVG_ROW_LENGTH-328))|(1<<(MySqlParserCHECKSUM-328))|(1<<(MySqlParserPAGE_CHECKSUM-328))|(1<<(MySqlParserCOMMENT-328))|(1<<(MySqlParserCOMPRESSION-328)))) != 0) || (((_la-361)&-(0x1f+1)) == 0 && ((1<<uint((_la-361)))&((1<<(MySqlParserCONNECTION-361))|(1<<(MySqlParserDATA-361))|(1<<(MySqlParserDELAY_KEY_WRITE-361))|(1<<(MySqlParserENCRYPTION-361))|(1<<(MySqlParserENGINE-361)))) != 0) || _la == MySqlParserINSERT_METHOD || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserMAX_ROWS || _la == MySqlParserMIN_ROWS || _la == MySqlParserPACK_KEYS || _la == MySqlParserPASSWORD || (((_la-568)&-(0x1f+1)) == 0 && ((1<<uint((_la-568)))&((1<<(MySqlParserROW_FORMAT-568))|(1<<(MySqlParserSTATS_AUTO_RECALC-568))|(1<<(MySqlParserSTATS_PERSISTENT-568))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-568)))) != 0) || (((_la-600)&-(0x1f+1)) == 0 && ((1<<uint((_la-600)))&((1<<(MySqlParserSTORAGE-600))|(1<<(MySqlParserTABLESPACE-600))|(1<<(MySqlParserTABLE_TYPE-600)))) != 0) || _la == MySqlParserCHARSET {
			{
				p.SetState(1073)
				p.TableOption()
			}
			p.SetState(1080)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for (((_la-24)&-(0x1f+1)) == 0 && ((1<<uint((_la-24)))&((1<<(MySqlParserCHARACTER-24))|(1<<(MySqlParserCOLLATE-24))|(1<<(MySqlParserDEFAULT-24)))) != 0) || _la == MySqlParserINDEX || _la == MySqlParserUNION || _la == MySqlParserCHAR || (((_la-328)&-(0x1f+1)) == 0 && ((1<<uint((_la-328)))&((1<<(MySqlParserAUTO_INCREMENT-328))|(1<<(MySqlParserAVG_ROW_LENGTH-328))|(1<<(MySqlParserCHECKSUM-328))|(1<<(MySqlParserPAGE_CHECKSUM-328))|(1<<(MySqlParserCOMMENT-328))|(1<<(MySqlParserCOMPRESSION-328)))) != 0) || (((_la-361)&-(0x1f+1)) == 0 && ((1<<uint((_la-361)))&((1<<(MySqlParserCONNECTION-361))|(1<<(MySqlParserDATA-361))|(1<<(MySqlParserDELAY_KEY_WRITE-361))|(1<<(MySqlParserENCRYPTION-361))|(1<<(MySqlParserENGINE-361)))) != 0) || _la == MySqlParserINSERT_METHOD || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserMAX_ROWS || _la == MySqlParserMIN_ROWS || _la == MySqlParserPACK_KEYS || _la == MySqlParserPASSWORD || (((_la-568)&-(0x1f+1)) == 0 && ((1<<uint((_la-568)))&((1<<(MySqlParserROW_FORMAT-568))|(1<<(MySqlParserSTATS_AUTO_RECALC-568))|(1<<(MySqlParserSTATS_PERSISTENT-568))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-568)))) != 0) || (((_la-600)&-(0x1f+1)) == 0 && ((1<<uint((_la-600)))&((1<<(MySqlParserSTORAGE-600))|(1<<(MySqlParserTABLESPACE-600))|(1<<(MySqlParserTABLE_TYPE-600)))) != 0) || _la == MySqlParserCHARSET || _la == MySqlParserCOMMA {
				p.SetState(1075)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserCOMMA {
					{
						p.SetState(1074)
						p.Match(MySqlParserCOMMA)
					}

				}
				{
					p.SetState(1077)
					p.TableOption()
				}

				p.SetState(1082)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(1086)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPARTITION {
			{
				p.SetState(1085)
				p.PartitionDefinitions()
			}

		}
		p.SetState(1089)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIGNORE || _la == MySqlParserREPLACE {
			{
				p.SetState(1088)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*QueryCreateTableContext).keyViolate = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserIGNORE || _la == MySqlParserREPLACE) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*QueryCreateTableContext).keyViolate = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(1092)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(1091)
				p.Match(MySqlParserAS)
			}

		}
		{
			p.SetState(1094)
			p.SelectStatement()
		}

	case 3:
		localctx = NewColumnCreateTableContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1096)
			p.Match(MySqlParserCREATE)
		}
		p.SetState(1098)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserTEMPORARY {
			{
				p.SetState(1097)
				p.Match(MySqlParserTEMPORARY)
			}

		}
		{
			p.SetState(1100)
			p.Match(MySqlParserTABLE)
		}
		p.SetState(1102)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(1101)
				p.IfNotExists()
			}

		}
		{
			p.SetState(1104)
			p.TableName()
		}
		{
			p.SetState(1105)
			p.CreateDefinitions()
		}
		p.SetState(1116)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1106)
				p.TableOption()
			}
			p.SetState(1113)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 71, p.GetParserRuleContext())

			for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
				if _alt == 1 {
					p.SetState(1108)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)

					if _la == MySqlParserCOMMA {
						{
							p.SetState(1107)
							p.Match(MySqlParserCOMMA)
						}

					}
					{
						p.SetState(1110)
						p.TableOption()
					}

				}
				p.SetState(1115)
				p.GetErrorHandler().Sync(p)
				_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 71, p.GetParserRuleContext())
			}

		}
		p.SetState(1119)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPARTITION {
			{
				p.SetState(1118)
				p.PartitionDefinitions()
			}

		}

	}

	return localctx
}

// ICreateTablespaceInnodbContext is an interface to support dynamic dispatch.
type ICreateTablespaceInnodbContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDatafile returns the datafile token.
	GetDatafile() antlr.Token

	// SetDatafile sets the datafile token.
	SetDatafile(antlr.Token)

	// GetFileBlockSize returns the fileBlockSize rule contexts.
	GetFileBlockSize() IFileSizeLiteralContext

	// SetFileBlockSize sets the fileBlockSize rule contexts.
	SetFileBlockSize(IFileSizeLiteralContext)

	// IsCreateTablespaceInnodbContext differentiates from other interfaces.
	IsCreateTablespaceInnodbContext()
}

type CreateTablespaceInnodbContext struct {
	*antlr.BaseParserRuleContext
	parser        antlr.Parser
	datafile      antlr.Token
	fileBlockSize IFileSizeLiteralContext
}

func NewEmptyCreateTablespaceInnodbContext() *CreateTablespaceInnodbContext {
	var p = new(CreateTablespaceInnodbContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createTablespaceInnodb
	return p
}

func (*CreateTablespaceInnodbContext) IsCreateTablespaceInnodbContext() {}

func NewCreateTablespaceInnodbContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateTablespaceInnodbContext {
	var p = new(CreateTablespaceInnodbContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createTablespaceInnodb

	return p
}

func (s *CreateTablespaceInnodbContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateTablespaceInnodbContext) GetDatafile() antlr.Token { return s.datafile }

func (s *CreateTablespaceInnodbContext) SetDatafile(v antlr.Token) { s.datafile = v }

func (s *CreateTablespaceInnodbContext) GetFileBlockSize() IFileSizeLiteralContext {
	return s.fileBlockSize
}

func (s *CreateTablespaceInnodbContext) SetFileBlockSize(v IFileSizeLiteralContext) {
	s.fileBlockSize = v
}

func (s *CreateTablespaceInnodbContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateTablespaceInnodbContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *CreateTablespaceInnodbContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateTablespaceInnodbContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *CreateTablespaceInnodbContext) DATAFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATAFILE, 0)
}

func (s *CreateTablespaceInnodbContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CreateTablespaceInnodbContext) FILE_BLOCK_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILE_BLOCK_SIZE, 0)
}

func (s *CreateTablespaceInnodbContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *CreateTablespaceInnodbContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *CreateTablespaceInnodbContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *CreateTablespaceInnodbContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *CreateTablespaceInnodbContext) FileSizeLiteral() IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *CreateTablespaceInnodbContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateTablespaceInnodbContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateTablespaceInnodbContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateTablespaceInnodb(s)
	}
}

func (s *CreateTablespaceInnodbContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateTablespaceInnodb(s)
	}
}

func (p *MySqlParser) CreateTablespaceInnodb() (localctx ICreateTablespaceInnodbContext) {
	this := p
	_ = this

	localctx = NewCreateTablespaceInnodbContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 40, MySqlParserRULE_createTablespaceInnodb)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1123)
		p.Match(MySqlParserCREATE)
	}
	{
		p.SetState(1124)
		p.Match(MySqlParserTABLESPACE)
	}
	{
		p.SetState(1125)
		p.Uid()
	}
	{
		p.SetState(1126)
		p.Match(MySqlParserADD)
	}
	{
		p.SetState(1127)
		p.Match(MySqlParserDATAFILE)
	}
	{
		p.SetState(1128)

		var _m = p.Match(MySqlParserSTRING_LITERAL)

		localctx.(*CreateTablespaceInnodbContext).datafile = _m
	}
	p.SetState(1132)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFILE_BLOCK_SIZE {
		{
			p.SetState(1129)
			p.Match(MySqlParserFILE_BLOCK_SIZE)
		}
		{
			p.SetState(1130)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(1131)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateTablespaceInnodbContext).fileBlockSize = _x
		}

	}
	p.SetState(1139)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserENGINE {
		{
			p.SetState(1134)
			p.Match(MySqlParserENGINE)
		}
		p.SetState(1136)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1135)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1138)
			p.EngineName()
		}

	}

	return localctx
}

// ICreateTablespaceNdbContext is an interface to support dynamic dispatch.
type ICreateTablespaceNdbContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDatafile returns the datafile token.
	GetDatafile() antlr.Token

	// GetComment returns the comment token.
	GetComment() antlr.Token

	// SetDatafile sets the datafile token.
	SetDatafile(antlr.Token)

	// SetComment sets the comment token.
	SetComment(antlr.Token)

	// GetExtentSize returns the extentSize rule contexts.
	GetExtentSize() IFileSizeLiteralContext

	// GetInitialSize returns the initialSize rule contexts.
	GetInitialSize() IFileSizeLiteralContext

	// GetAutoextendSize returns the autoextendSize rule contexts.
	GetAutoextendSize() IFileSizeLiteralContext

	// GetMaxSize returns the maxSize rule contexts.
	GetMaxSize() IFileSizeLiteralContext

	// SetExtentSize sets the extentSize rule contexts.
	SetExtentSize(IFileSizeLiteralContext)

	// SetInitialSize sets the initialSize rule contexts.
	SetInitialSize(IFileSizeLiteralContext)

	// SetAutoextendSize sets the autoextendSize rule contexts.
	SetAutoextendSize(IFileSizeLiteralContext)

	// SetMaxSize sets the maxSize rule contexts.
	SetMaxSize(IFileSizeLiteralContext)

	// IsCreateTablespaceNdbContext differentiates from other interfaces.
	IsCreateTablespaceNdbContext()
}

type CreateTablespaceNdbContext struct {
	*antlr.BaseParserRuleContext
	parser         antlr.Parser
	datafile       antlr.Token
	extentSize     IFileSizeLiteralContext
	initialSize    IFileSizeLiteralContext
	autoextendSize IFileSizeLiteralContext
	maxSize        IFileSizeLiteralContext
	comment        antlr.Token
}

func NewEmptyCreateTablespaceNdbContext() *CreateTablespaceNdbContext {
	var p = new(CreateTablespaceNdbContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createTablespaceNdb
	return p
}

func (*CreateTablespaceNdbContext) IsCreateTablespaceNdbContext() {}

func NewCreateTablespaceNdbContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateTablespaceNdbContext {
	var p = new(CreateTablespaceNdbContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createTablespaceNdb

	return p
}

func (s *CreateTablespaceNdbContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateTablespaceNdbContext) GetDatafile() antlr.Token { return s.datafile }

func (s *CreateTablespaceNdbContext) GetComment() antlr.Token { return s.comment }

func (s *CreateTablespaceNdbContext) SetDatafile(v antlr.Token) { s.datafile = v }

func (s *CreateTablespaceNdbContext) SetComment(v antlr.Token) { s.comment = v }

func (s *CreateTablespaceNdbContext) GetExtentSize() IFileSizeLiteralContext { return s.extentSize }

func (s *CreateTablespaceNdbContext) GetInitialSize() IFileSizeLiteralContext { return s.initialSize }

func (s *CreateTablespaceNdbContext) GetAutoextendSize() IFileSizeLiteralContext {
	return s.autoextendSize
}

func (s *CreateTablespaceNdbContext) GetMaxSize() IFileSizeLiteralContext { return s.maxSize }

func (s *CreateTablespaceNdbContext) SetExtentSize(v IFileSizeLiteralContext) { s.extentSize = v }

func (s *CreateTablespaceNdbContext) SetInitialSize(v IFileSizeLiteralContext) { s.initialSize = v }

func (s *CreateTablespaceNdbContext) SetAutoextendSize(v IFileSizeLiteralContext) {
	s.autoextendSize = v
}

func (s *CreateTablespaceNdbContext) SetMaxSize(v IFileSizeLiteralContext) { s.maxSize = v }

func (s *CreateTablespaceNdbContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateTablespaceNdbContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *CreateTablespaceNdbContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *CreateTablespaceNdbContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateTablespaceNdbContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *CreateTablespaceNdbContext) DATAFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATAFILE, 0)
}

func (s *CreateTablespaceNdbContext) USE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSE, 0)
}

func (s *CreateTablespaceNdbContext) LOGFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGFILE, 0)
}

func (s *CreateTablespaceNdbContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *CreateTablespaceNdbContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *CreateTablespaceNdbContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *CreateTablespaceNdbContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *CreateTablespaceNdbContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *CreateTablespaceNdbContext) EXTENT_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENT_SIZE, 0)
}

func (s *CreateTablespaceNdbContext) INITIAL_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINITIAL_SIZE, 0)
}

func (s *CreateTablespaceNdbContext) AUTOEXTEND_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTOEXTEND_SIZE, 0)
}

func (s *CreateTablespaceNdbContext) MAX_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_SIZE, 0)
}

func (s *CreateTablespaceNdbContext) NODEGROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserNODEGROUP, 0)
}

func (s *CreateTablespaceNdbContext) WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT, 0)
}

func (s *CreateTablespaceNdbContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *CreateTablespaceNdbContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *CreateTablespaceNdbContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *CreateTablespaceNdbContext) AllFileSizeLiteral() []IFileSizeLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem())
	var tst = make([]IFileSizeLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFileSizeLiteralContext)
		}
	}

	return tst
}

func (s *CreateTablespaceNdbContext) FileSizeLiteral(i int) IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *CreateTablespaceNdbContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateTablespaceNdbContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateTablespaceNdbContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateTablespaceNdb(s)
	}
}

func (s *CreateTablespaceNdbContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateTablespaceNdb(s)
	}
}

func (p *MySqlParser) CreateTablespaceNdb() (localctx ICreateTablespaceNdbContext) {
	this := p
	_ = this

	localctx = NewCreateTablespaceNdbContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 42, MySqlParserRULE_createTablespaceNdb)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1141)
		p.Match(MySqlParserCREATE)
	}
	{
		p.SetState(1142)
		p.Match(MySqlParserTABLESPACE)
	}
	{
		p.SetState(1143)
		p.Uid()
	}
	{
		p.SetState(1144)
		p.Match(MySqlParserADD)
	}
	{
		p.SetState(1145)
		p.Match(MySqlParserDATAFILE)
	}
	{
		p.SetState(1146)

		var _m = p.Match(MySqlParserSTRING_LITERAL)

		localctx.(*CreateTablespaceNdbContext).datafile = _m
	}
	{
		p.SetState(1147)
		p.Match(MySqlParserUSE)
	}
	{
		p.SetState(1148)
		p.Match(MySqlParserLOGFILE)
	}
	{
		p.SetState(1149)
		p.Match(MySqlParserGROUP)
	}
	{
		p.SetState(1150)
		p.Uid()
	}
	p.SetState(1156)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEXTENT_SIZE {
		{
			p.SetState(1151)
			p.Match(MySqlParserEXTENT_SIZE)
		}
		p.SetState(1153)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1152)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1155)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateTablespaceNdbContext).extentSize = _x
		}

	}
	p.SetState(1163)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINITIAL_SIZE {
		{
			p.SetState(1158)
			p.Match(MySqlParserINITIAL_SIZE)
		}
		p.SetState(1160)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1159)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1162)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateTablespaceNdbContext).initialSize = _x
		}

	}
	p.SetState(1170)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserAUTOEXTEND_SIZE {
		{
			p.SetState(1165)
			p.Match(MySqlParserAUTOEXTEND_SIZE)
		}
		p.SetState(1167)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1166)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1169)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateTablespaceNdbContext).autoextendSize = _x
		}

	}
	p.SetState(1177)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserMAX_SIZE {
		{
			p.SetState(1172)
			p.Match(MySqlParserMAX_SIZE)
		}
		p.SetState(1174)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1173)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1176)

			var _x = p.FileSizeLiteral()

			localctx.(*CreateTablespaceNdbContext).maxSize = _x
		}

	}
	p.SetState(1184)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNODEGROUP {
		{
			p.SetState(1179)
			p.Match(MySqlParserNODEGROUP)
		}
		p.SetState(1181)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1180)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1183)
			p.Uid()
		}

	}
	p.SetState(1187)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWAIT {
		{
			p.SetState(1186)
			p.Match(MySqlParserWAIT)
		}

	}
	p.SetState(1194)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMENT {
		{
			p.SetState(1189)
			p.Match(MySqlParserCOMMENT)
		}
		p.SetState(1191)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1190)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1193)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*CreateTablespaceNdbContext).comment = _m
		}

	}
	{
		p.SetState(1196)
		p.Match(MySqlParserENGINE)
	}
	p.SetState(1198)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEQUAL_SYMBOL {
		{
			p.SetState(1197)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	}
	{
		p.SetState(1200)
		p.EngineName()
	}

	return localctx
}

// ICreateTriggerContext is an interface to support dynamic dispatch.
type ICreateTriggerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetTriggerTime returns the triggerTime token.
	GetTriggerTime() antlr.Token

	// GetTriggerEvent returns the triggerEvent token.
	GetTriggerEvent() antlr.Token

	// GetTriggerPlace returns the triggerPlace token.
	GetTriggerPlace() antlr.Token

	// SetTriggerTime sets the triggerTime token.
	SetTriggerTime(antlr.Token)

	// SetTriggerEvent sets the triggerEvent token.
	SetTriggerEvent(antlr.Token)

	// SetTriggerPlace sets the triggerPlace token.
	SetTriggerPlace(antlr.Token)

	// GetThisTrigger returns the thisTrigger rule contexts.
	GetThisTrigger() IFullIdContext

	// GetOtherTrigger returns the otherTrigger rule contexts.
	GetOtherTrigger() IFullIdContext

	// SetThisTrigger sets the thisTrigger rule contexts.
	SetThisTrigger(IFullIdContext)

	// SetOtherTrigger sets the otherTrigger rule contexts.
	SetOtherTrigger(IFullIdContext)

	// IsCreateTriggerContext differentiates from other interfaces.
	IsCreateTriggerContext()
}

type CreateTriggerContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	thisTrigger  IFullIdContext
	triggerTime  antlr.Token
	triggerEvent antlr.Token
	triggerPlace antlr.Token
	otherTrigger IFullIdContext
}

func NewEmptyCreateTriggerContext() *CreateTriggerContext {
	var p = new(CreateTriggerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createTrigger
	return p
}

func (*CreateTriggerContext) IsCreateTriggerContext() {}

func NewCreateTriggerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateTriggerContext {
	var p = new(CreateTriggerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createTrigger

	return p
}

func (s *CreateTriggerContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateTriggerContext) GetTriggerTime() antlr.Token { return s.triggerTime }

func (s *CreateTriggerContext) GetTriggerEvent() antlr.Token { return s.triggerEvent }

func (s *CreateTriggerContext) GetTriggerPlace() antlr.Token { return s.triggerPlace }

func (s *CreateTriggerContext) SetTriggerTime(v antlr.Token) { s.triggerTime = v }

func (s *CreateTriggerContext) SetTriggerEvent(v antlr.Token) { s.triggerEvent = v }

func (s *CreateTriggerContext) SetTriggerPlace(v antlr.Token) { s.triggerPlace = v }

func (s *CreateTriggerContext) GetThisTrigger() IFullIdContext { return s.thisTrigger }

func (s *CreateTriggerContext) GetOtherTrigger() IFullIdContext { return s.otherTrigger }

func (s *CreateTriggerContext) SetThisTrigger(v IFullIdContext) { s.thisTrigger = v }

func (s *CreateTriggerContext) SetOtherTrigger(v IFullIdContext) { s.otherTrigger = v }

func (s *CreateTriggerContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateTriggerContext) TRIGGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGER, 0)
}

func (s *CreateTriggerContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *CreateTriggerContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *CreateTriggerContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *CreateTriggerContext) EACH() antlr.TerminalNode {
	return s.GetToken(MySqlParserEACH, 0)
}

func (s *CreateTriggerContext) ROW() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW, 0)
}

func (s *CreateTriggerContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *CreateTriggerContext) AllFullId() []IFullIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullIdContext)(nil)).Elem())
	var tst = make([]IFullIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullIdContext)
		}
	}

	return tst
}

func (s *CreateTriggerContext) FullId(i int) IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CreateTriggerContext) BEFORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEFORE, 0)
}

func (s *CreateTriggerContext) AFTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserAFTER, 0)
}

func (s *CreateTriggerContext) INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT, 0)
}

func (s *CreateTriggerContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *CreateTriggerContext) DELETE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELETE, 0)
}

func (s *CreateTriggerContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *CreateTriggerContext) FOLLOWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOLLOWS, 0)
}

func (s *CreateTriggerContext) PRECEDES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRECEDES, 0)
}

func (s *CreateTriggerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateTriggerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateTriggerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateTrigger(s)
	}
}

func (s *CreateTriggerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateTrigger(s)
	}
}

func (p *MySqlParser) CreateTrigger() (localctx ICreateTriggerContext) {
	this := p
	_ = this

	localctx = NewCreateTriggerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 44, MySqlParserRULE_createTrigger)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1202)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(1204)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(1203)
			p.OwnerStatement()
		}

	}
	{
		p.SetState(1206)
		p.Match(MySqlParserTRIGGER)
	}
	{
		p.SetState(1207)

		var _x = p.FullId()

		localctx.(*CreateTriggerContext).thisTrigger = _x
	}
	{
		p.SetState(1208)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*CreateTriggerContext).triggerTime = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserBEFORE || _la == MySqlParserAFTER) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*CreateTriggerContext).triggerTime = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(1209)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*CreateTriggerContext).triggerEvent = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDELETE || _la == MySqlParserINSERT || _la == MySqlParserUPDATE) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*CreateTriggerContext).triggerEvent = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(1210)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(1211)
		p.TableName()
	}
	{
		p.SetState(1212)
		p.Match(MySqlParserFOR)
	}
	{
		p.SetState(1213)
		p.Match(MySqlParserEACH)
	}
	{
		p.SetState(1214)
		p.Match(MySqlParserROW)
	}
	p.SetState(1217)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 93, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(1215)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CreateTriggerContext).triggerPlace = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFOLLOWS || _la == MySqlParserPRECEDES) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CreateTriggerContext).triggerPlace = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(1216)

			var _x = p.FullId()

			localctx.(*CreateTriggerContext).otherTrigger = _x
		}

	}
	{
		p.SetState(1219)
		p.RoutineBody()
	}

	return localctx
}

// ICreateViewContext is an interface to support dynamic dispatch.
type ICreateViewContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetAlgType returns the algType token.
	GetAlgType() antlr.Token

	// GetSecContext returns the secContext token.
	GetSecContext() antlr.Token

	// GetCheckOption returns the checkOption token.
	GetCheckOption() antlr.Token

	// SetAlgType sets the algType token.
	SetAlgType(antlr.Token)

	// SetSecContext sets the secContext token.
	SetSecContext(antlr.Token)

	// SetCheckOption sets the checkOption token.
	SetCheckOption(antlr.Token)

	// IsCreateViewContext differentiates from other interfaces.
	IsCreateViewContext()
}

type CreateViewContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	algType     antlr.Token
	secContext  antlr.Token
	checkOption antlr.Token
}

func NewEmptyCreateViewContext() *CreateViewContext {
	var p = new(CreateViewContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createView
	return p
}

func (*CreateViewContext) IsCreateViewContext() {}

func NewCreateViewContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateViewContext {
	var p = new(CreateViewContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createView

	return p
}

func (s *CreateViewContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateViewContext) GetAlgType() antlr.Token { return s.algType }

func (s *CreateViewContext) GetSecContext() antlr.Token { return s.secContext }

func (s *CreateViewContext) GetCheckOption() antlr.Token { return s.checkOption }

func (s *CreateViewContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *CreateViewContext) SetSecContext(v antlr.Token) { s.secContext = v }

func (s *CreateViewContext) SetCheckOption(v antlr.Token) { s.checkOption = v }

func (s *CreateViewContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateViewContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *CreateViewContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CreateViewContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *CreateViewContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *CreateViewContext) OR() antlr.TerminalNode {
	return s.GetToken(MySqlParserOR, 0)
}

func (s *CreateViewContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *CreateViewContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *CreateViewContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *CreateViewContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *CreateViewContext) SQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL, 0)
}

func (s *CreateViewContext) SECURITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECURITY, 0)
}

func (s *CreateViewContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CreateViewContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *CreateViewContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CreateViewContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *CreateViewContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *CreateViewContext) OPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, 0)
}

func (s *CreateViewContext) UNDEFINED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDEFINED, 0)
}

func (s *CreateViewContext) MERGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMERGE, 0)
}

func (s *CreateViewContext) TEMPTABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPTABLE, 0)
}

func (s *CreateViewContext) DEFINER() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFINER, 0)
}

func (s *CreateViewContext) INVOKER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVOKER, 0)
}

func (s *CreateViewContext) CASCADED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADED, 0)
}

func (s *CreateViewContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *CreateViewContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateViewContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateViewContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateView(s)
	}
}

func (s *CreateViewContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateView(s)
	}
}

func (p *MySqlParser) CreateView() (localctx ICreateViewContext) {
	this := p
	_ = this

	localctx = NewCreateViewContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 46, MySqlParserRULE_createView)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1221)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(1224)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserOR {
		{
			p.SetState(1222)
			p.Match(MySqlParserOR)
		}
		{
			p.SetState(1223)
			p.Match(MySqlParserREPLACE)
		}

	}
	p.SetState(1229)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserALGORITHM {
		{
			p.SetState(1226)
			p.Match(MySqlParserALGORITHM)
		}
		{
			p.SetState(1227)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(1228)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CreateViewContext).algType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserMERGE || _la == MySqlParserTEMPTABLE || _la == MySqlParserUNDEFINED) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CreateViewContext).algType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(1232)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(1231)
			p.OwnerStatement()
		}

	}
	p.SetState(1237)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserSQL {
		{
			p.SetState(1234)
			p.Match(MySqlParserSQL)
		}
		{
			p.SetState(1235)
			p.Match(MySqlParserSECURITY)
		}
		{
			p.SetState(1236)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CreateViewContext).secContext = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFINER || _la == MySqlParserINVOKER) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CreateViewContext).secContext = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(1239)
		p.Match(MySqlParserVIEW)
	}
	{
		p.SetState(1240)
		p.FullId()
	}
	p.SetState(1245)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLR_BRACKET {
		{
			p.SetState(1241)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1242)
			p.UidList()
		}
		{
			p.SetState(1243)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	{
		p.SetState(1247)
		p.Match(MySqlParserAS)
	}
	{
		p.SetState(1248)
		p.SelectStatement()
	}
	p.SetState(1255)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWITH {
		{
			p.SetState(1249)
			p.Match(MySqlParserWITH)
		}
		p.SetState(1251)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCASCADED || _la == MySqlParserLOCAL {
			{
				p.SetState(1250)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*CreateViewContext).checkOption = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserCASCADED || _la == MySqlParserLOCAL) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*CreateViewContext).checkOption = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(1253)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(1254)
			p.Match(MySqlParserOPTION)
		}

	}

	return localctx
}

// ICreateDatabaseOptionContext is an interface to support dynamic dispatch.
type ICreateDatabaseOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateDatabaseOptionContext differentiates from other interfaces.
	IsCreateDatabaseOptionContext()
}

type CreateDatabaseOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateDatabaseOptionContext() *CreateDatabaseOptionContext {
	var p = new(CreateDatabaseOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createDatabaseOption
	return p
}

func (*CreateDatabaseOptionContext) IsCreateDatabaseOptionContext() {}

func NewCreateDatabaseOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateDatabaseOptionContext {
	var p = new(CreateDatabaseOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createDatabaseOption

	return p
}

func (s *CreateDatabaseOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateDatabaseOptionContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *CreateDatabaseOptionContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *CreateDatabaseOptionContext) AllDEFAULT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDEFAULT)
}

func (s *CreateDatabaseOptionContext) DEFAULT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, i)
}

func (s *CreateDatabaseOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *CreateDatabaseOptionContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *CreateDatabaseOptionContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *CreateDatabaseOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateDatabaseOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateDatabaseOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateDatabaseOption(s)
	}
}

func (s *CreateDatabaseOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateDatabaseOption(s)
	}
}

func (p *MySqlParser) CreateDatabaseOption() (localctx ICreateDatabaseOptionContext) {
	this := p
	_ = this

	localctx = NewCreateDatabaseOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 48, MySqlParserRULE_createDatabaseOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1276)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 106, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		p.SetState(1258)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(1257)
				p.Match(MySqlParserDEFAULT)
			}

		}
		{
			p.SetState(1260)
			p.CharSet()
		}
		p.SetState(1262)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1261)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		p.SetState(1266)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserBINARY, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL:
			{
				p.SetState(1264)
				p.CharsetName()
			}

		case MySqlParserDEFAULT:
			{
				p.SetState(1265)
				p.Match(MySqlParserDEFAULT)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		p.SetState(1269)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(1268)
				p.Match(MySqlParserDEFAULT)
			}

		}
		{
			p.SetState(1271)
			p.Match(MySqlParserCOLLATE)
		}
		p.SetState(1273)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1272)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1275)
			p.CollationName()
		}

	}

	return localctx
}

// ICharSetContext is an interface to support dynamic dispatch.
type ICharSetContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCharSetContext differentiates from other interfaces.
	IsCharSetContext()
}

type CharSetContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCharSetContext() *CharSetContext {
	var p = new(CharSetContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_charSet
	return p
}

func (*CharSetContext) IsCharSetContext() {}

func NewCharSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharSetContext {
	var p = new(CharSetContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_charSet

	return p
}

func (s *CharSetContext) GetParser() antlr.Parser { return s.parser }

func (s *CharSetContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *CharSetContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *CharSetContext) CHARSET() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARSET, 0)
}

func (s *CharSetContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *CharSetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CharSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CharSetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCharSet(s)
	}
}

func (s *CharSetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCharSet(s)
	}
}

func (p *MySqlParser) CharSet() (localctx ICharSetContext) {
	this := p
	_ = this

	localctx = NewCharSetContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 50, MySqlParserRULE_charSet)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1283)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCHARACTER:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1278)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(1279)
			p.Match(MySqlParserSET)
		}

	case MySqlParserCHARSET:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1280)
			p.Match(MySqlParserCHARSET)
		}

	case MySqlParserCHAR:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1281)
			p.Match(MySqlParserCHAR)
		}
		{
			p.SetState(1282)
			p.Match(MySqlParserSET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IOwnerStatementContext is an interface to support dynamic dispatch.
type IOwnerStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsOwnerStatementContext differentiates from other interfaces.
	IsOwnerStatementContext()
}

type OwnerStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyOwnerStatementContext() *OwnerStatementContext {
	var p = new(OwnerStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_ownerStatement
	return p
}

func (*OwnerStatementContext) IsOwnerStatementContext() {}

func NewOwnerStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OwnerStatementContext {
	var p = new(OwnerStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_ownerStatement

	return p
}

func (s *OwnerStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *OwnerStatementContext) DEFINER() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFINER, 0)
}

func (s *OwnerStatementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *OwnerStatementContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *OwnerStatementContext) CURRENT_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_USER, 0)
}

func (s *OwnerStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *OwnerStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *OwnerStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OwnerStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *OwnerStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOwnerStatement(s)
	}
}

func (s *OwnerStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOwnerStatement(s)
	}
}

func (p *MySqlParser) OwnerStatement() (localctx IOwnerStatementContext) {
	this := p
	_ = this

	localctx = NewOwnerStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 52, MySqlParserRULE_ownerStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1285)
		p.Match(MySqlParserDEFINER)
	}
	{
		p.SetState(1286)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	p.SetState(1293)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserSTRING_USER_NAME:
		{
			p.SetState(1287)
			p.UserName()
		}

	case MySqlParserCURRENT_USER:
		{
			p.SetState(1288)
			p.Match(MySqlParserCURRENT_USER)
		}
		p.SetState(1291)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(1289)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1290)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IScheduleExpressionContext is an interface to support dynamic dispatch.
type IScheduleExpressionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsScheduleExpressionContext differentiates from other interfaces.
	IsScheduleExpressionContext()
}

type ScheduleExpressionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyScheduleExpressionContext() *ScheduleExpressionContext {
	var p = new(ScheduleExpressionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_scheduleExpression
	return p
}

func (*ScheduleExpressionContext) IsScheduleExpressionContext() {}

func NewScheduleExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ScheduleExpressionContext {
	var p = new(ScheduleExpressionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_scheduleExpression

	return p
}

func (s *ScheduleExpressionContext) GetParser() antlr.Parser { return s.parser }

func (s *ScheduleExpressionContext) CopyFrom(ctx *ScheduleExpressionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ScheduleExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ScheduleExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PreciseScheduleContext struct {
	*ScheduleExpressionContext
}

func NewPreciseScheduleContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PreciseScheduleContext {
	var p = new(PreciseScheduleContext)

	p.ScheduleExpressionContext = NewEmptyScheduleExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ScheduleExpressionContext))

	return p
}

func (s *PreciseScheduleContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PreciseScheduleContext) AT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAT, 0)
}

func (s *PreciseScheduleContext) TimestampValue() ITimestampValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITimestampValueContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITimestampValueContext)
}

func (s *PreciseScheduleContext) AllIntervalExpr() []IIntervalExprContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIntervalExprContext)(nil)).Elem())
	var tst = make([]IIntervalExprContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIntervalExprContext)
		}
	}

	return tst
}

func (s *PreciseScheduleContext) IntervalExpr(i int) IIntervalExprContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalExprContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIntervalExprContext)
}

func (s *PreciseScheduleContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPreciseSchedule(s)
	}
}

func (s *PreciseScheduleContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPreciseSchedule(s)
	}
}

type IntervalScheduleContext struct {
	*ScheduleExpressionContext
	startTimestamp ITimestampValueContext
	_intervalExpr  IIntervalExprContext
	startIntervals []IIntervalExprContext
	endTimestamp   ITimestampValueContext
	endIntervals   []IIntervalExprContext
}

func NewIntervalScheduleContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IntervalScheduleContext {
	var p = new(IntervalScheduleContext)

	p.ScheduleExpressionContext = NewEmptyScheduleExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ScheduleExpressionContext))

	return p
}

func (s *IntervalScheduleContext) GetStartTimestamp() ITimestampValueContext { return s.startTimestamp }

func (s *IntervalScheduleContext) Get_intervalExpr() IIntervalExprContext { return s._intervalExpr }

func (s *IntervalScheduleContext) GetEndTimestamp() ITimestampValueContext { return s.endTimestamp }

func (s *IntervalScheduleContext) SetStartTimestamp(v ITimestampValueContext) { s.startTimestamp = v }

func (s *IntervalScheduleContext) Set_intervalExpr(v IIntervalExprContext) { s._intervalExpr = v }

func (s *IntervalScheduleContext) SetEndTimestamp(v ITimestampValueContext) { s.endTimestamp = v }

func (s *IntervalScheduleContext) GetStartIntervals() []IIntervalExprContext { return s.startIntervals }

func (s *IntervalScheduleContext) GetEndIntervals() []IIntervalExprContext { return s.endIntervals }

func (s *IntervalScheduleContext) SetStartIntervals(v []IIntervalExprContext) { s.startIntervals = v }

func (s *IntervalScheduleContext) SetEndIntervals(v []IIntervalExprContext) { s.endIntervals = v }

func (s *IntervalScheduleContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IntervalScheduleContext) EVERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVERY, 0)
}

func (s *IntervalScheduleContext) IntervalType() IIntervalTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeContext)
}

func (s *IntervalScheduleContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *IntervalScheduleContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *IntervalScheduleContext) STARTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTARTS, 0)
}

func (s *IntervalScheduleContext) ENDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserENDS, 0)
}

func (s *IntervalScheduleContext) AllTimestampValue() []ITimestampValueContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITimestampValueContext)(nil)).Elem())
	var tst = make([]ITimestampValueContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITimestampValueContext)
		}
	}

	return tst
}

func (s *IntervalScheduleContext) TimestampValue(i int) ITimestampValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITimestampValueContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITimestampValueContext)
}

func (s *IntervalScheduleContext) AllIntervalExpr() []IIntervalExprContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIntervalExprContext)(nil)).Elem())
	var tst = make([]IIntervalExprContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIntervalExprContext)
		}
	}

	return tst
}

func (s *IntervalScheduleContext) IntervalExpr(i int) IIntervalExprContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalExprContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIntervalExprContext)
}

func (s *IntervalScheduleContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIntervalSchedule(s)
	}
}

func (s *IntervalScheduleContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIntervalSchedule(s)
	}
}

func (p *MySqlParser) ScheduleExpression() (localctx IScheduleExpressionContext) {
	this := p
	_ = this

	localctx = NewScheduleExpressionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 54, MySqlParserRULE_scheduleExpression)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1329)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserAT:
		localctx = NewPreciseScheduleContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1295)
			p.Match(MySqlParserAT)
		}
		{
			p.SetState(1296)
			p.TimestampValue()
		}
		p.SetState(1300)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserPLUS {
			{
				p.SetState(1297)
				p.IntervalExpr()
			}

			p.SetState(1302)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case MySqlParserEVERY:
		localctx = NewIntervalScheduleContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1303)
			p.Match(MySqlParserEVERY)
		}
		p.SetState(1306)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 111, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(1304)
				p.DecimalLiteral()
			}

		case 2:
			{
				p.SetState(1305)
				p.expression(0)
			}

		}
		{
			p.SetState(1308)
			p.IntervalType()
		}
		p.SetState(1317)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSTARTS {
			{
				p.SetState(1309)
				p.Match(MySqlParserSTARTS)
			}
			{
				p.SetState(1310)

				var _x = p.TimestampValue()

				localctx.(*IntervalScheduleContext).startTimestamp = _x
			}
			p.SetState(1314)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserPLUS {
				{
					p.SetState(1311)

					var _x = p.IntervalExpr()

					localctx.(*IntervalScheduleContext)._intervalExpr = _x
				}
				localctx.(*IntervalScheduleContext).startIntervals = append(localctx.(*IntervalScheduleContext).startIntervals, localctx.(*IntervalScheduleContext)._intervalExpr)

				p.SetState(1316)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(1327)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserENDS {
			{
				p.SetState(1319)
				p.Match(MySqlParserENDS)
			}
			{
				p.SetState(1320)

				var _x = p.TimestampValue()

				localctx.(*IntervalScheduleContext).endTimestamp = _x
			}
			p.SetState(1324)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserPLUS {
				{
					p.SetState(1321)

					var _x = p.IntervalExpr()

					localctx.(*IntervalScheduleContext)._intervalExpr = _x
				}
				localctx.(*IntervalScheduleContext).endIntervals = append(localctx.(*IntervalScheduleContext).endIntervals, localctx.(*IntervalScheduleContext)._intervalExpr)

				p.SetState(1326)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ITimestampValueContext is an interface to support dynamic dispatch.
type ITimestampValueContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTimestampValueContext differentiates from other interfaces.
	IsTimestampValueContext()
}

type TimestampValueContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTimestampValueContext() *TimestampValueContext {
	var p = new(TimestampValueContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_timestampValue
	return p
}

func (*TimestampValueContext) IsTimestampValueContext() {}

func NewTimestampValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimestampValueContext {
	var p = new(TimestampValueContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_timestampValue

	return p
}

func (s *TimestampValueContext) GetParser() antlr.Parser { return s.parser }

func (s *TimestampValueContext) CURRENT_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIMESTAMP, 0)
}

func (s *TimestampValueContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *TimestampValueContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TimestampValueContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *TimestampValueContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TimestampValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TimestampValueContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTimestampValue(s)
	}
}

func (s *TimestampValueContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTimestampValue(s)
	}
}

func (p *MySqlParser) TimestampValue() (localctx ITimestampValueContext) {
	this := p
	_ = this

	localctx = NewTimestampValueContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 56, MySqlParserRULE_timestampValue)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1335)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 117, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1331)
			p.Match(MySqlParserCURRENT_TIMESTAMP)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1332)
			p.StringLiteral()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1333)
			p.DecimalLiteral()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1334)
			p.expression(0)
		}

	}

	return localctx
}

// IIntervalExprContext is an interface to support dynamic dispatch.
type IIntervalExprContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIntervalExprContext differentiates from other interfaces.
	IsIntervalExprContext()
}

type IntervalExprContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIntervalExprContext() *IntervalExprContext {
	var p = new(IntervalExprContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_intervalExpr
	return p
}

func (*IntervalExprContext) IsIntervalExprContext() {}

func NewIntervalExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IntervalExprContext {
	var p = new(IntervalExprContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_intervalExpr

	return p
}

func (s *IntervalExprContext) GetParser() antlr.Parser { return s.parser }

func (s *IntervalExprContext) PLUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUS, 0)
}

func (s *IntervalExprContext) INTERVAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERVAL, 0)
}

func (s *IntervalExprContext) IntervalType() IIntervalTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeContext)
}

func (s *IntervalExprContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *IntervalExprContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *IntervalExprContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IntervalExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IntervalExprContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIntervalExpr(s)
	}
}

func (s *IntervalExprContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIntervalExpr(s)
	}
}

func (p *MySqlParser) IntervalExpr() (localctx IIntervalExprContext) {
	this := p
	_ = this

	localctx = NewIntervalExprContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 58, MySqlParserRULE_intervalExpr)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1337)
		p.Match(MySqlParserPLUS)
	}
	{
		p.SetState(1338)
		p.Match(MySqlParserINTERVAL)
	}
	p.SetState(1341)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(1339)
			p.DecimalLiteral()
		}

	case 2:
		{
			p.SetState(1340)
			p.expression(0)
		}

	}
	{
		p.SetState(1343)
		p.IntervalType()
	}

	return localctx
}

// IIntervalTypeContext is an interface to support dynamic dispatch.
type IIntervalTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIntervalTypeContext differentiates from other interfaces.
	IsIntervalTypeContext()
}

type IntervalTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIntervalTypeContext() *IntervalTypeContext {
	var p = new(IntervalTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_intervalType
	return p
}

func (*IntervalTypeContext) IsIntervalTypeContext() {}

func NewIntervalTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IntervalTypeContext {
	var p = new(IntervalTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_intervalType

	return p
}

func (s *IntervalTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *IntervalTypeContext) IntervalTypeBase() IIntervalTypeBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeBaseContext)
}

func (s *IntervalTypeContext) YEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEAR, 0)
}

func (s *IntervalTypeContext) YEAR_MONTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEAR_MONTH, 0)
}

func (s *IntervalTypeContext) DAY_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY_HOUR, 0)
}

func (s *IntervalTypeContext) DAY_MINUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY_MINUTE, 0)
}

func (s *IntervalTypeContext) DAY_SECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY_SECOND, 0)
}

func (s *IntervalTypeContext) HOUR_MINUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOUR_MINUTE, 0)
}

func (s *IntervalTypeContext) HOUR_SECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOUR_SECOND, 0)
}

func (s *IntervalTypeContext) MINUTE_SECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUTE_SECOND, 0)
}

func (s *IntervalTypeContext) SECOND_MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECOND_MICROSECOND, 0)
}

func (s *IntervalTypeContext) MINUTE_MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUTE_MICROSECOND, 0)
}

func (s *IntervalTypeContext) HOUR_MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOUR_MICROSECOND, 0)
}

func (s *IntervalTypeContext) DAY_MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY_MICROSECOND, 0)
}

func (s *IntervalTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IntervalTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IntervalTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIntervalType(s)
	}
}

func (s *IntervalTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIntervalType(s)
	}
}

func (p *MySqlParser) IntervalType() (localctx IIntervalTypeContext) {
	this := p
	_ = this

	localctx = NewIntervalTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 60, MySqlParserRULE_intervalType)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1358)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1345)
			p.IntervalTypeBase()
		}

	case MySqlParserYEAR:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1346)
			p.Match(MySqlParserYEAR)
		}

	case MySqlParserYEAR_MONTH:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1347)
			p.Match(MySqlParserYEAR_MONTH)
		}

	case MySqlParserDAY_HOUR:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1348)
			p.Match(MySqlParserDAY_HOUR)
		}

	case MySqlParserDAY_MINUTE:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(1349)
			p.Match(MySqlParserDAY_MINUTE)
		}

	case MySqlParserDAY_SECOND:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(1350)
			p.Match(MySqlParserDAY_SECOND)
		}

	case MySqlParserHOUR_MINUTE:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(1351)
			p.Match(MySqlParserHOUR_MINUTE)
		}

	case MySqlParserHOUR_SECOND:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(1352)
			p.Match(MySqlParserHOUR_SECOND)
		}

	case MySqlParserMINUTE_SECOND:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(1353)
			p.Match(MySqlParserMINUTE_SECOND)
		}

	case MySqlParserSECOND_MICROSECOND:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(1354)
			p.Match(MySqlParserSECOND_MICROSECOND)
		}

	case MySqlParserMINUTE_MICROSECOND:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(1355)
			p.Match(MySqlParserMINUTE_MICROSECOND)
		}

	case MySqlParserHOUR_MICROSECOND:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(1356)
			p.Match(MySqlParserHOUR_MICROSECOND)
		}

	case MySqlParserDAY_MICROSECOND:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(1357)
			p.Match(MySqlParserDAY_MICROSECOND)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IEnableTypeContext is an interface to support dynamic dispatch.
type IEnableTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsEnableTypeContext differentiates from other interfaces.
	IsEnableTypeContext()
}

type EnableTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyEnableTypeContext() *EnableTypeContext {
	var p = new(EnableTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_enableType
	return p
}

func (*EnableTypeContext) IsEnableTypeContext() {}

func NewEnableTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EnableTypeContext {
	var p = new(EnableTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_enableType

	return p
}

func (s *EnableTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *EnableTypeContext) ENABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENABLE, 0)
}

func (s *EnableTypeContext) DISABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISABLE, 0)
}

func (s *EnableTypeContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *EnableTypeContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *EnableTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *EnableTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *EnableTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterEnableType(s)
	}
}

func (s *EnableTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitEnableType(s)
	}
}

func (p *MySqlParser) EnableType() (localctx IEnableTypeContext) {
	this := p
	_ = this

	localctx = NewEnableTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 62, MySqlParserRULE_enableType)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1365)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 120, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1360)
			p.Match(MySqlParserENABLE)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1361)
			p.Match(MySqlParserDISABLE)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1362)
			p.Match(MySqlParserDISABLE)
		}
		{
			p.SetState(1363)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(1364)
			p.Match(MySqlParserSLAVE)
		}

	}

	return localctx
}

// IIndexTypeContext is an interface to support dynamic dispatch.
type IIndexTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIndexTypeContext differentiates from other interfaces.
	IsIndexTypeContext()
}

type IndexTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIndexTypeContext() *IndexTypeContext {
	var p = new(IndexTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexType
	return p
}

func (*IndexTypeContext) IsIndexTypeContext() {}

func NewIndexTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexTypeContext {
	var p = new(IndexTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexType

	return p
}

func (s *IndexTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexTypeContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *IndexTypeContext) BTREE() antlr.TerminalNode {
	return s.GetToken(MySqlParserBTREE, 0)
}

func (s *IndexTypeContext) HASH() antlr.TerminalNode {
	return s.GetToken(MySqlParserHASH, 0)
}

func (s *IndexTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexType(s)
	}
}

func (s *IndexTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexType(s)
	}
}

func (p *MySqlParser) IndexType() (localctx IIndexTypeContext) {
	this := p
	_ = this

	localctx = NewIndexTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 64, MySqlParserRULE_indexType)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1367)
		p.Match(MySqlParserUSING)
	}
	{
		p.SetState(1368)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserBTREE || _la == MySqlParserHASH) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IIndexOptionContext is an interface to support dynamic dispatch.
type IIndexOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIndexOptionContext differentiates from other interfaces.
	IsIndexOptionContext()
}

type IndexOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIndexOptionContext() *IndexOptionContext {
	var p = new(IndexOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexOption
	return p
}

func (*IndexOptionContext) IsIndexOptionContext() {}

func NewIndexOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexOptionContext {
	var p = new(IndexOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexOption

	return p
}

func (s *IndexOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexOptionContext) KEY_BLOCK_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY_BLOCK_SIZE, 0)
}

func (s *IndexOptionContext) FileSizeLiteral() IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *IndexOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *IndexOptionContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *IndexOptionContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *IndexOptionContext) PARSER() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARSER, 0)
}

func (s *IndexOptionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *IndexOptionContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *IndexOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *IndexOptionContext) INVISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVISIBLE, 0)
}

func (s *IndexOptionContext) VISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVISIBLE, 0)
}

func (s *IndexOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexOption(s)
	}
}

func (s *IndexOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexOption(s)
	}
}

func (p *MySqlParser) IndexOption() (localctx IIndexOptionContext) {
	this := p
	_ = this

	localctx = NewIndexOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 66, MySqlParserRULE_indexOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1383)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserKEY_BLOCK_SIZE:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1370)
			p.Match(MySqlParserKEY_BLOCK_SIZE)
		}
		p.SetState(1372)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1371)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1374)
			p.FileSizeLiteral()
		}

	case MySqlParserUSING:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1375)
			p.IndexType()
		}

	case MySqlParserWITH:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1376)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(1377)
			p.Match(MySqlParserPARSER)
		}
		{
			p.SetState(1378)
			p.Uid()
		}

	case MySqlParserCOMMENT:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1379)
			p.Match(MySqlParserCOMMENT)
		}
		{
			p.SetState(1380)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserINVISIBLE:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(1381)
			p.Match(MySqlParserINVISIBLE)
		}

	case MySqlParserVISIBLE:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(1382)
			p.Match(MySqlParserVISIBLE)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IProcedureParameterContext is an interface to support dynamic dispatch.
type IProcedureParameterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDirection returns the direction token.
	GetDirection() antlr.Token

	// SetDirection sets the direction token.
	SetDirection(antlr.Token)

	// IsProcedureParameterContext differentiates from other interfaces.
	IsProcedureParameterContext()
}

type ProcedureParameterContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	direction antlr.Token
}

func NewEmptyProcedureParameterContext() *ProcedureParameterContext {
	var p = new(ProcedureParameterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_procedureParameter
	return p
}

func (*ProcedureParameterContext) IsProcedureParameterContext() {}

func NewProcedureParameterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureParameterContext {
	var p = new(ProcedureParameterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_procedureParameter

	return p
}

func (s *ProcedureParameterContext) GetParser() antlr.Parser { return s.parser }

func (s *ProcedureParameterContext) GetDirection() antlr.Token { return s.direction }

func (s *ProcedureParameterContext) SetDirection(v antlr.Token) { s.direction = v }

func (s *ProcedureParameterContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ProcedureParameterContext) DataType() IDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeContext)
}

func (s *ProcedureParameterContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *ProcedureParameterContext) OUT() antlr.TerminalNode {
	return s.GetToken(MySqlParserOUT, 0)
}

func (s *ProcedureParameterContext) INOUT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINOUT, 0)
}

func (s *ProcedureParameterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ProcedureParameterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ProcedureParameterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterProcedureParameter(s)
	}
}

func (s *ProcedureParameterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitProcedureParameter(s)
	}
}

func (p *MySqlParser) ProcedureParameter() (localctx IProcedureParameterContext) {
	this := p
	_ = this

	localctx = NewProcedureParameterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 68, MySqlParserRULE_procedureParameter)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(1386)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIN || _la == MySqlParserINOUT || _la == MySqlParserOUT {
		{
			p.SetState(1385)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ProcedureParameterContext).direction = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserIN || _la == MySqlParserINOUT || _la == MySqlParserOUT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ProcedureParameterContext).direction = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(1388)
		p.Uid()
	}
	{
		p.SetState(1389)
		p.DataType()
	}

	return localctx
}

// IFunctionParameterContext is an interface to support dynamic dispatch.
type IFunctionParameterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFunctionParameterContext differentiates from other interfaces.
	IsFunctionParameterContext()
}

type FunctionParameterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFunctionParameterContext() *FunctionParameterContext {
	var p = new(FunctionParameterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_functionParameter
	return p
}

func (*FunctionParameterContext) IsFunctionParameterContext() {}

func NewFunctionParameterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionParameterContext {
	var p = new(FunctionParameterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_functionParameter

	return p
}

func (s *FunctionParameterContext) GetParser() antlr.Parser { return s.parser }

func (s *FunctionParameterContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *FunctionParameterContext) DataType() IDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeContext)
}

func (s *FunctionParameterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionParameterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FunctionParameterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFunctionParameter(s)
	}
}

func (s *FunctionParameterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFunctionParameter(s)
	}
}

func (p *MySqlParser) FunctionParameter() (localctx IFunctionParameterContext) {
	this := p
	_ = this

	localctx = NewFunctionParameterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 70, MySqlParserRULE_functionParameter)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1391)
		p.Uid()
	}
	{
		p.SetState(1392)
		p.DataType()
	}

	return localctx
}

// IRoutineOptionContext is an interface to support dynamic dispatch.
type IRoutineOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRoutineOptionContext differentiates from other interfaces.
	IsRoutineOptionContext()
}

type RoutineOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRoutineOptionContext() *RoutineOptionContext {
	var p = new(RoutineOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_routineOption
	return p
}

func (*RoutineOptionContext) IsRoutineOptionContext() {}

func NewRoutineOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RoutineOptionContext {
	var p = new(RoutineOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_routineOption

	return p
}

func (s *RoutineOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *RoutineOptionContext) CopyFrom(ctx *RoutineOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *RoutineOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type RoutineBehaviorContext struct {
	*RoutineOptionContext
}

func NewRoutineBehaviorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoutineBehaviorContext {
	var p = new(RoutineBehaviorContext)

	p.RoutineOptionContext = NewEmptyRoutineOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RoutineOptionContext))

	return p
}

func (s *RoutineBehaviorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineBehaviorContext) DETERMINISTIC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDETERMINISTIC, 0)
}

func (s *RoutineBehaviorContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *RoutineBehaviorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineBehavior(s)
	}
}

func (s *RoutineBehaviorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineBehavior(s)
	}
}

type RoutineLanguageContext struct {
	*RoutineOptionContext
}

func NewRoutineLanguageContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoutineLanguageContext {
	var p = new(RoutineLanguageContext)

	p.RoutineOptionContext = NewEmptyRoutineOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RoutineOptionContext))

	return p
}

func (s *RoutineLanguageContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineLanguageContext) LANGUAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLANGUAGE, 0)
}

func (s *RoutineLanguageContext) SQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL, 0)
}

func (s *RoutineLanguageContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineLanguage(s)
	}
}

func (s *RoutineLanguageContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineLanguage(s)
	}
}

type RoutineCommentContext struct {
	*RoutineOptionContext
}

func NewRoutineCommentContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoutineCommentContext {
	var p = new(RoutineCommentContext)

	p.RoutineOptionContext = NewEmptyRoutineOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RoutineOptionContext))

	return p
}

func (s *RoutineCommentContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineCommentContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *RoutineCommentContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *RoutineCommentContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineComment(s)
	}
}

func (s *RoutineCommentContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineComment(s)
	}
}

type RoutineSecurityContext struct {
	*RoutineOptionContext
	context antlr.Token
}

func NewRoutineSecurityContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoutineSecurityContext {
	var p = new(RoutineSecurityContext)

	p.RoutineOptionContext = NewEmptyRoutineOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RoutineOptionContext))

	return p
}

func (s *RoutineSecurityContext) GetContext() antlr.Token { return s.context }

func (s *RoutineSecurityContext) SetContext(v antlr.Token) { s.context = v }

func (s *RoutineSecurityContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineSecurityContext) SQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL, 0)
}

func (s *RoutineSecurityContext) SECURITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECURITY, 0)
}

func (s *RoutineSecurityContext) DEFINER() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFINER, 0)
}

func (s *RoutineSecurityContext) INVOKER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVOKER, 0)
}

func (s *RoutineSecurityContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineSecurity(s)
	}
}

func (s *RoutineSecurityContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineSecurity(s)
	}
}

type RoutineDataContext struct {
	*RoutineOptionContext
}

func NewRoutineDataContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoutineDataContext {
	var p = new(RoutineDataContext)

	p.RoutineOptionContext = NewEmptyRoutineOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RoutineOptionContext))

	return p
}

func (s *RoutineDataContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineDataContext) CONTAINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTAINS, 0)
}

func (s *RoutineDataContext) SQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL, 0)
}

func (s *RoutineDataContext) NO() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, 0)
}

func (s *RoutineDataContext) READS() antlr.TerminalNode {
	return s.GetToken(MySqlParserREADS, 0)
}

func (s *RoutineDataContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *RoutineDataContext) MODIFIES() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODIFIES, 0)
}

func (s *RoutineDataContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineData(s)
	}
}

func (s *RoutineDataContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineData(s)
	}
}

func (p *MySqlParser) RoutineOption() (localctx IRoutineOptionContext) {
	this := p
	_ = this

	localctx = NewRoutineOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 72, MySqlParserRULE_routineOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1417)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCOMMENT:
		localctx = NewRoutineCommentContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1394)
			p.Match(MySqlParserCOMMENT)
		}
		{
			p.SetState(1395)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserLANGUAGE:
		localctx = NewRoutineLanguageContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1396)
			p.Match(MySqlParserLANGUAGE)
		}
		{
			p.SetState(1397)
			p.Match(MySqlParserSQL)
		}

	case MySqlParserDETERMINISTIC, MySqlParserNOT:
		localctx = NewRoutineBehaviorContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		p.SetState(1399)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNOT {
			{
				p.SetState(1398)
				p.Match(MySqlParserNOT)
			}

		}
		{
			p.SetState(1401)
			p.Match(MySqlParserDETERMINISTIC)
		}

	case MySqlParserMODIFIES, MySqlParserREADS, MySqlParserCONTAINS, MySqlParserNO:
		localctx = NewRoutineDataContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		p.SetState(1412)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCONTAINS:
			{
				p.SetState(1402)
				p.Match(MySqlParserCONTAINS)
			}
			{
				p.SetState(1403)
				p.Match(MySqlParserSQL)
			}

		case MySqlParserNO:
			{
				p.SetState(1404)
				p.Match(MySqlParserNO)
			}
			{
				p.SetState(1405)
				p.Match(MySqlParserSQL)
			}

		case MySqlParserREADS:
			{
				p.SetState(1406)
				p.Match(MySqlParserREADS)
			}
			{
				p.SetState(1407)
				p.Match(MySqlParserSQL)
			}
			{
				p.SetState(1408)
				p.Match(MySqlParserDATA)
			}

		case MySqlParserMODIFIES:
			{
				p.SetState(1409)
				p.Match(MySqlParserMODIFIES)
			}
			{
				p.SetState(1410)
				p.Match(MySqlParserSQL)
			}
			{
				p.SetState(1411)
				p.Match(MySqlParserDATA)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case MySqlParserSQL:
		localctx = NewRoutineSecurityContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(1414)
			p.Match(MySqlParserSQL)
		}
		{
			p.SetState(1415)
			p.Match(MySqlParserSECURITY)
		}
		{
			p.SetState(1416)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*RoutineSecurityContext).context = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFINER || _la == MySqlParserINVOKER) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*RoutineSecurityContext).context = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IServerOptionContext is an interface to support dynamic dispatch.
type IServerOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsServerOptionContext differentiates from other interfaces.
	IsServerOptionContext()
}

type ServerOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyServerOptionContext() *ServerOptionContext {
	var p = new(ServerOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_serverOption
	return p
}

func (*ServerOptionContext) IsServerOptionContext() {}

func NewServerOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ServerOptionContext {
	var p = new(ServerOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_serverOption

	return p
}

func (s *ServerOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *ServerOptionContext) HOST() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOST, 0)
}

func (s *ServerOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *ServerOptionContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *ServerOptionContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *ServerOptionContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *ServerOptionContext) SOCKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOCKET, 0)
}

func (s *ServerOptionContext) OWNER() antlr.TerminalNode {
	return s.GetToken(MySqlParserOWNER, 0)
}

func (s *ServerOptionContext) PORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPORT, 0)
}

func (s *ServerOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *ServerOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ServerOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ServerOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterServerOption(s)
	}
}

func (s *ServerOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitServerOption(s)
	}
}

func (p *MySqlParser) ServerOption() (localctx IServerOptionContext) {
	this := p
	_ = this

	localctx = NewServerOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 74, MySqlParserRULE_serverOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1433)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserHOST:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1419)
			p.Match(MySqlParserHOST)
		}
		{
			p.SetState(1420)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserDATABASE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1421)
			p.Match(MySqlParserDATABASE)
		}
		{
			p.SetState(1422)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserUSER:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1423)
			p.Match(MySqlParserUSER)
		}
		{
			p.SetState(1424)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserPASSWORD:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1425)
			p.Match(MySqlParserPASSWORD)
		}
		{
			p.SetState(1426)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserSOCKET:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(1427)
			p.Match(MySqlParserSOCKET)
		}
		{
			p.SetState(1428)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserOWNER:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(1429)
			p.Match(MySqlParserOWNER)
		}
		{
			p.SetState(1430)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserPORT:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(1431)
			p.Match(MySqlParserPORT)
		}
		{
			p.SetState(1432)
			p.DecimalLiteral()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ICreateDefinitionsContext is an interface to support dynamic dispatch.
type ICreateDefinitionsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateDefinitionsContext differentiates from other interfaces.
	IsCreateDefinitionsContext()
}

type CreateDefinitionsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateDefinitionsContext() *CreateDefinitionsContext {
	var p = new(CreateDefinitionsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createDefinitions
	return p
}

func (*CreateDefinitionsContext) IsCreateDefinitionsContext() {}

func NewCreateDefinitionsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateDefinitionsContext {
	var p = new(CreateDefinitionsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createDefinitions

	return p
}

func (s *CreateDefinitionsContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateDefinitionsContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CreateDefinitionsContext) AllCreateDefinition() []ICreateDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICreateDefinitionContext)(nil)).Elem())
	var tst = make([]ICreateDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICreateDefinitionContext)
		}
	}

	return tst
}

func (s *CreateDefinitionsContext) CreateDefinition(i int) ICreateDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICreateDefinitionContext)
}

func (s *CreateDefinitionsContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CreateDefinitionsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateDefinitionsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateDefinitionsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateDefinitionsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateDefinitionsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateDefinitions(s)
	}
}

func (s *CreateDefinitionsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateDefinitions(s)
	}
}

func (p *MySqlParser) CreateDefinitions() (localctx ICreateDefinitionsContext) {
	this := p
	_ = this

	localctx = NewCreateDefinitionsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 76, MySqlParserRULE_createDefinitions)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1435)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(1436)
		p.CreateDefinition()
	}
	p.SetState(1441)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(1437)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(1438)
			p.CreateDefinition()
		}

		p.SetState(1443)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(1444)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// ICreateDefinitionContext is an interface to support dynamic dispatch.
type ICreateDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateDefinitionContext differentiates from other interfaces.
	IsCreateDefinitionContext()
}

type CreateDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateDefinitionContext() *CreateDefinitionContext {
	var p = new(CreateDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createDefinition
	return p
}

func (*CreateDefinitionContext) IsCreateDefinitionContext() {}

func NewCreateDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateDefinitionContext {
	var p = new(CreateDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createDefinition

	return p
}

func (s *CreateDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateDefinitionContext) CopyFrom(ctx *CreateDefinitionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *CreateDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type ColumnDeclarationContext struct {
	*CreateDefinitionContext
}

func NewColumnDeclarationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ColumnDeclarationContext {
	var p = new(ColumnDeclarationContext)

	p.CreateDefinitionContext = NewEmptyCreateDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateDefinitionContext))

	return p
}

func (s *ColumnDeclarationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ColumnDeclarationContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ColumnDeclarationContext) ColumnDefinition() IColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IColumnDefinitionContext)
}

func (s *ColumnDeclarationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterColumnDeclaration(s)
	}
}

func (s *ColumnDeclarationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitColumnDeclaration(s)
	}
}

type ConstraintDeclarationContext struct {
	*CreateDefinitionContext
}

func NewConstraintDeclarationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ConstraintDeclarationContext {
	var p = new(ConstraintDeclarationContext)

	p.CreateDefinitionContext = NewEmptyCreateDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateDefinitionContext))

	return p
}

func (s *ConstraintDeclarationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConstraintDeclarationContext) TableConstraint() ITableConstraintContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableConstraintContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableConstraintContext)
}

func (s *ConstraintDeclarationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterConstraintDeclaration(s)
	}
}

func (s *ConstraintDeclarationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitConstraintDeclaration(s)
	}
}

type IndexDeclarationContext struct {
	*CreateDefinitionContext
}

func NewIndexDeclarationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IndexDeclarationContext {
	var p = new(IndexDeclarationContext)

	p.CreateDefinitionContext = NewEmptyCreateDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateDefinitionContext))

	return p
}

func (s *IndexDeclarationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexDeclarationContext) IndexColumnDefinition() IIndexColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnDefinitionContext)
}

func (s *IndexDeclarationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexDeclaration(s)
	}
}

func (s *IndexDeclarationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexDeclaration(s)
	}
}

func (p *MySqlParser) CreateDefinition() (localctx ICreateDefinitionContext) {
	this := p
	_ = this

	localctx = NewCreateDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 78, MySqlParserRULE_createDefinition)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1451)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		localctx = NewColumnDeclarationContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1446)
			p.Uid()
		}
		{
			p.SetState(1447)
			p.ColumnDefinition()
		}

	case MySqlParserCHECK, MySqlParserCONSTRAINT, MySqlParserFOREIGN, MySqlParserPRIMARY, MySqlParserUNIQUE:
		localctx = NewConstraintDeclarationContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1449)
			p.TableConstraint()
		}

	case MySqlParserFULLTEXT, MySqlParserINDEX, MySqlParserKEY, MySqlParserSPATIAL:
		localctx = NewIndexDeclarationContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1450)
			p.IndexColumnDefinition()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IColumnDefinitionContext is an interface to support dynamic dispatch.
type IColumnDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsColumnDefinitionContext differentiates from other interfaces.
	IsColumnDefinitionContext()
}

type ColumnDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyColumnDefinitionContext() *ColumnDefinitionContext {
	var p = new(ColumnDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_columnDefinition
	return p
}

func (*ColumnDefinitionContext) IsColumnDefinitionContext() {}

func NewColumnDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ColumnDefinitionContext {
	var p = new(ColumnDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_columnDefinition

	return p
}

func (s *ColumnDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *ColumnDefinitionContext) DataType() IDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeContext)
}

func (s *ColumnDefinitionContext) AllColumnConstraint() []IColumnConstraintContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IColumnConstraintContext)(nil)).Elem())
	var tst = make([]IColumnConstraintContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IColumnConstraintContext)
		}
	}

	return tst
}

func (s *ColumnDefinitionContext) ColumnConstraint(i int) IColumnConstraintContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnConstraintContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IColumnConstraintContext)
}

func (s *ColumnDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ColumnDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ColumnDefinitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterColumnDefinition(s)
	}
}

func (s *ColumnDefinitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitColumnDefinition(s)
	}
}

func (p *MySqlParser) ColumnDefinition() (localctx IColumnDefinitionContext) {
	this := p
	_ = this

	localctx = NewColumnDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 80, MySqlParserRULE_columnDefinition)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1453)
		p.DataType()
	}
	p.SetState(1457)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(1454)
				p.ColumnConstraint()
			}

		}
		p.SetState(1459)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext())
	}

	return localctx
}

// IColumnConstraintContext is an interface to support dynamic dispatch.
type IColumnConstraintContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsColumnConstraintContext differentiates from other interfaces.
	IsColumnConstraintContext()
}

type ColumnConstraintContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyColumnConstraintContext() *ColumnConstraintContext {
	var p = new(ColumnConstraintContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_columnConstraint
	return p
}

func (*ColumnConstraintContext) IsColumnConstraintContext() {}

func NewColumnConstraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ColumnConstraintContext {
	var p = new(ColumnConstraintContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_columnConstraint

	return p
}

func (s *ColumnConstraintContext) GetParser() antlr.Parser { return s.parser }

func (s *ColumnConstraintContext) CopyFrom(ctx *ColumnConstraintContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ColumnConstraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type StorageColumnConstraintContext struct {
	*ColumnConstraintContext
	storageval antlr.Token
}

func NewStorageColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *StorageColumnConstraintContext {
	var p = new(StorageColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *StorageColumnConstraintContext) GetStorageval() antlr.Token { return s.storageval }

func (s *StorageColumnConstraintContext) SetStorageval(v antlr.Token) { s.storageval = v }

func (s *StorageColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StorageColumnConstraintContext) STORAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORAGE, 0)
}

func (s *StorageColumnConstraintContext) DISK() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISK, 0)
}

func (s *StorageColumnConstraintContext) MEMORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMORY, 0)
}

func (s *StorageColumnConstraintContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *StorageColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStorageColumnConstraint(s)
	}
}

func (s *StorageColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStorageColumnConstraint(s)
	}
}

type VisibilityColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewVisibilityColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *VisibilityColumnConstraintContext {
	var p = new(VisibilityColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *VisibilityColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *VisibilityColumnConstraintContext) VISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVISIBLE, 0)
}

func (s *VisibilityColumnConstraintContext) INVISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVISIBLE, 0)
}

func (s *VisibilityColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterVisibilityColumnConstraint(s)
	}
}

func (s *VisibilityColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitVisibilityColumnConstraint(s)
	}
}

type AutoIncrementColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewAutoIncrementColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AutoIncrementColumnConstraintContext {
	var p = new(AutoIncrementColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *AutoIncrementColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AutoIncrementColumnConstraintContext) AUTO_INCREMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTO_INCREMENT, 0)
}

func (s *AutoIncrementColumnConstraintContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *AutoIncrementColumnConstraintContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *AutoIncrementColumnConstraintContext) CurrentTimestamp() ICurrentTimestampContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICurrentTimestampContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICurrentTimestampContext)
}

func (s *AutoIncrementColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAutoIncrementColumnConstraint(s)
	}
}

func (s *AutoIncrementColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAutoIncrementColumnConstraint(s)
	}
}

type CommentColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewCommentColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CommentColumnConstraintContext {
	var p = new(CommentColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *CommentColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CommentColumnConstraintContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *CommentColumnConstraintContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CommentColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCommentColumnConstraint(s)
	}
}

func (s *CommentColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCommentColumnConstraint(s)
	}
}

type UniqueKeyColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewUniqueKeyColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UniqueKeyColumnConstraintContext {
	var p = new(UniqueKeyColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *UniqueKeyColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UniqueKeyColumnConstraintContext) UNIQUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNIQUE, 0)
}

func (s *UniqueKeyColumnConstraintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *UniqueKeyColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUniqueKeyColumnConstraint(s)
	}
}

func (s *UniqueKeyColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUniqueKeyColumnConstraint(s)
	}
}

type SerialDefaultColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewSerialDefaultColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SerialDefaultColumnConstraintContext {
	var p = new(SerialDefaultColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *SerialDefaultColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SerialDefaultColumnConstraintContext) SERIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERIAL, 0)
}

func (s *SerialDefaultColumnConstraintContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *SerialDefaultColumnConstraintContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *SerialDefaultColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSerialDefaultColumnConstraint(s)
	}
}

func (s *SerialDefaultColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSerialDefaultColumnConstraint(s)
	}
}

type GeneratedColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewGeneratedColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *GeneratedColumnConstraintContext {
	var p = new(GeneratedColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *GeneratedColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GeneratedColumnConstraintContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *GeneratedColumnConstraintContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *GeneratedColumnConstraintContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *GeneratedColumnConstraintContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *GeneratedColumnConstraintContext) GENERATED() antlr.TerminalNode {
	return s.GetToken(MySqlParserGENERATED, 0)
}

func (s *GeneratedColumnConstraintContext) ALWAYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserALWAYS, 0)
}

func (s *GeneratedColumnConstraintContext) VIRTUAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIRTUAL, 0)
}

func (s *GeneratedColumnConstraintContext) STORED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORED, 0)
}

func (s *GeneratedColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGeneratedColumnConstraint(s)
	}
}

func (s *GeneratedColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGeneratedColumnConstraint(s)
	}
}

type FormatColumnConstraintContext struct {
	*ColumnConstraintContext
	colformat antlr.Token
}

func NewFormatColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FormatColumnConstraintContext {
	var p = new(FormatColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *FormatColumnConstraintContext) GetColformat() antlr.Token { return s.colformat }

func (s *FormatColumnConstraintContext) SetColformat(v antlr.Token) { s.colformat = v }

func (s *FormatColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FormatColumnConstraintContext) COLUMN_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN_FORMAT, 0)
}

func (s *FormatColumnConstraintContext) FIXED() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIXED, 0)
}

func (s *FormatColumnConstraintContext) DYNAMIC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDYNAMIC, 0)
}

func (s *FormatColumnConstraintContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *FormatColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFormatColumnConstraint(s)
	}
}

func (s *FormatColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFormatColumnConstraint(s)
	}
}

type CollateColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewCollateColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CollateColumnConstraintContext {
	var p = new(CollateColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *CollateColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CollateColumnConstraintContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *CollateColumnConstraintContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *CollateColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCollateColumnConstraint(s)
	}
}

func (s *CollateColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCollateColumnConstraint(s)
	}
}

type PrimaryKeyColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewPrimaryKeyColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PrimaryKeyColumnConstraintContext {
	var p = new(PrimaryKeyColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *PrimaryKeyColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrimaryKeyColumnConstraintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *PrimaryKeyColumnConstraintContext) PRIMARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIMARY, 0)
}

func (s *PrimaryKeyColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrimaryKeyColumnConstraint(s)
	}
}

func (s *PrimaryKeyColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrimaryKeyColumnConstraint(s)
	}
}

type CheckColumnConstraintContext struct {
	*ColumnConstraintContext
	name IUidContext
}

func NewCheckColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CheckColumnConstraintContext {
	var p = new(CheckColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *CheckColumnConstraintContext) GetName() IUidContext { return s.name }

func (s *CheckColumnConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *CheckColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CheckColumnConstraintContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *CheckColumnConstraintContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CheckColumnConstraintContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *CheckColumnConstraintContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CheckColumnConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *CheckColumnConstraintContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CheckColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCheckColumnConstraint(s)
	}
}

func (s *CheckColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCheckColumnConstraint(s)
	}
}

type NullColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewNullColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NullColumnConstraintContext {
	var p = new(NullColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *NullColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NullColumnConstraintContext) NullNotnull() INullNotnullContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*INullNotnullContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(INullNotnullContext)
}

func (s *NullColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNullColumnConstraint(s)
	}
}

func (s *NullColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNullColumnConstraint(s)
	}
}

type DefaultColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewDefaultColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefaultColumnConstraintContext {
	var p = new(DefaultColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *DefaultColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefaultColumnConstraintContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *DefaultColumnConstraintContext) DefaultValue() IDefaultValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDefaultValueContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDefaultValueContext)
}

func (s *DefaultColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefaultColumnConstraint(s)
	}
}

func (s *DefaultColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefaultColumnConstraint(s)
	}
}

type ReferenceColumnConstraintContext struct {
	*ColumnConstraintContext
}

func NewReferenceColumnConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ReferenceColumnConstraintContext {
	var p = new(ReferenceColumnConstraintContext)

	p.ColumnConstraintContext = NewEmptyColumnConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ColumnConstraintContext))

	return p
}

func (s *ReferenceColumnConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReferenceColumnConstraintContext) ReferenceDefinition() IReferenceDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReferenceDefinitionContext)
}

func (s *ReferenceColumnConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReferenceColumnConstraint(s)
	}
}

func (s *ReferenceColumnConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReferenceColumnConstraint(s)
	}
}

func (p *MySqlParser) ColumnConstraint() (localctx IColumnConstraintContext) {
	this := p
	_ = this

	localctx = NewColumnConstraintContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 82, MySqlParserRULE_columnConstraint)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1513)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserNOT, MySqlParserNULL_LITERAL, MySqlParserNULL_SPEC_LITERAL:
		localctx = NewNullColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1460)
			p.NullNotnull()
		}

	case MySqlParserDEFAULT:
		localctx = NewDefaultColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1461)
			p.Match(MySqlParserDEFAULT)
		}
		{
			p.SetState(1462)
			p.DefaultValue()
		}

	case MySqlParserVISIBLE:
		localctx = NewVisibilityColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1463)
			p.Match(MySqlParserVISIBLE)
		}

	case MySqlParserINVISIBLE:
		localctx = NewVisibilityColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1464)
			p.Match(MySqlParserINVISIBLE)
		}

	case MySqlParserON, MySqlParserAUTO_INCREMENT:
		localctx = NewAutoIncrementColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		p.SetState(1469)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserAUTO_INCREMENT:
			{
				p.SetState(1465)
				p.Match(MySqlParserAUTO_INCREMENT)
			}

		case MySqlParserON:
			{
				p.SetState(1466)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(1467)
				p.Match(MySqlParserUPDATE)
			}
			{
				p.SetState(1468)
				p.CurrentTimestamp()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case MySqlParserKEY, MySqlParserPRIMARY:
		localctx = NewPrimaryKeyColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		p.SetState(1472)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPRIMARY {
			{
				p.SetState(1471)
				p.Match(MySqlParserPRIMARY)
			}

		}
		{
			p.SetState(1474)
			p.Match(MySqlParserKEY)
		}

	case MySqlParserUNIQUE:
		localctx = NewUniqueKeyColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(1475)
			p.Match(MySqlParserUNIQUE)
		}
		p.SetState(1477)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 133, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1476)
				p.Match(MySqlParserKEY)
			}

		}

	case MySqlParserCOMMENT:
		localctx = NewCommentColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(1479)
			p.Match(MySqlParserCOMMENT)
		}
		{
			p.SetState(1480)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserCOLUMN_FORMAT:
		localctx = NewFormatColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(1481)
			p.Match(MySqlParserCOLUMN_FORMAT)
		}
		{
			p.SetState(1482)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*FormatColumnConstraintContext).colformat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserDYNAMIC || _la == MySqlParserFIXED) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*FormatColumnConstraintContext).colformat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserSTORAGE:
		localctx = NewStorageColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(1483)
			p.Match(MySqlParserSTORAGE)
		}
		{
			p.SetState(1484)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*StorageColumnConstraintContext).storageval = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserDISK || _la == MySqlParserMEMORY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*StorageColumnConstraintContext).storageval = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserREFERENCES:
		localctx = NewReferenceColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(1485)
			p.ReferenceDefinition()
		}

	case MySqlParserCOLLATE:
		localctx = NewCollateColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(1486)
			p.Match(MySqlParserCOLLATE)
		}
		{
			p.SetState(1487)
			p.CollationName()
		}

	case MySqlParserAS, MySqlParserGENERATED:
		localctx = NewGeneratedColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		p.SetState(1490)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserGENERATED {
			{
				p.SetState(1488)
				p.Match(MySqlParserGENERATED)
			}
			{
				p.SetState(1489)
				p.Match(MySqlParserALWAYS)
			}

		}
		{
			p.SetState(1492)
			p.Match(MySqlParserAS)
		}
		{
			p.SetState(1493)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1494)
			p.expression(0)
		}
		{
			p.SetState(1495)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(1497)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSTORED || _la == MySqlParserVIRTUAL {
			{
				p.SetState(1496)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserSTORED || _la == MySqlParserVIRTUAL) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}

	case MySqlParserSERIAL:
		localctx = NewSerialDefaultColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(1499)
			p.Match(MySqlParserSERIAL)
		}
		{
			p.SetState(1500)
			p.Match(MySqlParserDEFAULT)
		}
		{
			p.SetState(1501)
			p.Match(MySqlParserVALUE)
		}

	case MySqlParserCHECK, MySqlParserCONSTRAINT:
		localctx = NewCheckColumnConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 15)
		p.SetState(1506)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(1502)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(1504)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(1503)

					var _x = p.Uid()

					localctx.(*CheckColumnConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(1508)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(1509)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1510)
			p.expression(0)
		}
		{
			p.SetState(1511)
			p.Match(MySqlParserRR_BRACKET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ITableConstraintContext is an interface to support dynamic dispatch.
type ITableConstraintContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableConstraintContext differentiates from other interfaces.
	IsTableConstraintContext()
}

type TableConstraintContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableConstraintContext() *TableConstraintContext {
	var p = new(TableConstraintContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableConstraint
	return p
}

func (*TableConstraintContext) IsTableConstraintContext() {}

func NewTableConstraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableConstraintContext {
	var p = new(TableConstraintContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableConstraint

	return p
}

func (s *TableConstraintContext) GetParser() antlr.Parser { return s.parser }

func (s *TableConstraintContext) CopyFrom(ctx *TableConstraintContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *TableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableConstraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type UniqueKeyTableConstraintContext struct {
	*TableConstraintContext
	name        IUidContext
	indexFormat antlr.Token
	index       IUidContext
}

func NewUniqueKeyTableConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UniqueKeyTableConstraintContext {
	var p = new(UniqueKeyTableConstraintContext)

	p.TableConstraintContext = NewEmptyTableConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableConstraintContext))

	return p
}

func (s *UniqueKeyTableConstraintContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *UniqueKeyTableConstraintContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *UniqueKeyTableConstraintContext) GetName() IUidContext { return s.name }

func (s *UniqueKeyTableConstraintContext) GetIndex() IUidContext { return s.index }

func (s *UniqueKeyTableConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *UniqueKeyTableConstraintContext) SetIndex(v IUidContext) { s.index = v }

func (s *UniqueKeyTableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UniqueKeyTableConstraintContext) UNIQUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNIQUE, 0)
}

func (s *UniqueKeyTableConstraintContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *UniqueKeyTableConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *UniqueKeyTableConstraintContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *UniqueKeyTableConstraintContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *UniqueKeyTableConstraintContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *UniqueKeyTableConstraintContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *UniqueKeyTableConstraintContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *UniqueKeyTableConstraintContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *UniqueKeyTableConstraintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *UniqueKeyTableConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUniqueKeyTableConstraint(s)
	}
}

func (s *UniqueKeyTableConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUniqueKeyTableConstraint(s)
	}
}

type CheckTableConstraintContext struct {
	*TableConstraintContext
	name IUidContext
}

func NewCheckTableConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CheckTableConstraintContext {
	var p = new(CheckTableConstraintContext)

	p.TableConstraintContext = NewEmptyTableConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableConstraintContext))

	return p
}

func (s *CheckTableConstraintContext) GetName() IUidContext { return s.name }

func (s *CheckTableConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *CheckTableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CheckTableConstraintContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *CheckTableConstraintContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CheckTableConstraintContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *CheckTableConstraintContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CheckTableConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *CheckTableConstraintContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CheckTableConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCheckTableConstraint(s)
	}
}

func (s *CheckTableConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCheckTableConstraint(s)
	}
}

type PrimaryKeyTableConstraintContext struct {
	*TableConstraintContext
	name  IUidContext
	index IUidContext
}

func NewPrimaryKeyTableConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PrimaryKeyTableConstraintContext {
	var p = new(PrimaryKeyTableConstraintContext)

	p.TableConstraintContext = NewEmptyTableConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableConstraintContext))

	return p
}

func (s *PrimaryKeyTableConstraintContext) GetName() IUidContext { return s.name }

func (s *PrimaryKeyTableConstraintContext) GetIndex() IUidContext { return s.index }

func (s *PrimaryKeyTableConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *PrimaryKeyTableConstraintContext) SetIndex(v IUidContext) { s.index = v }

func (s *PrimaryKeyTableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrimaryKeyTableConstraintContext) PRIMARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIMARY, 0)
}

func (s *PrimaryKeyTableConstraintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *PrimaryKeyTableConstraintContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *PrimaryKeyTableConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *PrimaryKeyTableConstraintContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *PrimaryKeyTableConstraintContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *PrimaryKeyTableConstraintContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *PrimaryKeyTableConstraintContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *PrimaryKeyTableConstraintContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PrimaryKeyTableConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrimaryKeyTableConstraint(s)
	}
}

func (s *PrimaryKeyTableConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrimaryKeyTableConstraint(s)
	}
}

type ForeignKeyTableConstraintContext struct {
	*TableConstraintContext
	name  IUidContext
	index IUidContext
}

func NewForeignKeyTableConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ForeignKeyTableConstraintContext {
	var p = new(ForeignKeyTableConstraintContext)

	p.TableConstraintContext = NewEmptyTableConstraintContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableConstraintContext))

	return p
}

func (s *ForeignKeyTableConstraintContext) GetName() IUidContext { return s.name }

func (s *ForeignKeyTableConstraintContext) GetIndex() IUidContext { return s.index }

func (s *ForeignKeyTableConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *ForeignKeyTableConstraintContext) SetIndex(v IUidContext) { s.index = v }

func (s *ForeignKeyTableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ForeignKeyTableConstraintContext) FOREIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOREIGN, 0)
}

func (s *ForeignKeyTableConstraintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *ForeignKeyTableConstraintContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *ForeignKeyTableConstraintContext) ReferenceDefinition() IReferenceDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReferenceDefinitionContext)
}

func (s *ForeignKeyTableConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *ForeignKeyTableConstraintContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *ForeignKeyTableConstraintContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ForeignKeyTableConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterForeignKeyTableConstraint(s)
	}
}

func (s *ForeignKeyTableConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitForeignKeyTableConstraint(s)
	}
}

func (p *MySqlParser) TableConstraint() (localctx ITableConstraintContext) {
	this := p
	_ = this

	localctx = NewTableConstraintContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 84, MySqlParserRULE_tableConstraint)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1584)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 155, p.GetParserRuleContext()) {
	case 1:
		localctx = NewPrimaryKeyTableConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(1519)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(1515)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(1517)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(1516)

					var _x = p.Uid()

					localctx.(*PrimaryKeyTableConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(1521)
			p.Match(MySqlParserPRIMARY)
		}
		{
			p.SetState(1522)
			p.Match(MySqlParserKEY)
		}
		p.SetState(1524)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(1523)

				var _x = p.Uid()

				localctx.(*PrimaryKeyTableConstraintContext).index = _x
			}

		}
		p.SetState(1527)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(1526)
				p.IndexType()
			}

		}
		{
			p.SetState(1529)
			p.IndexColumnNames()
		}
		p.SetState(1533)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(1530)
				p.IndexOption()
			}

			p.SetState(1535)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewUniqueKeyTableConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		p.SetState(1540)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(1536)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(1538)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(1537)

					var _x = p.Uid()

					localctx.(*UniqueKeyTableConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(1542)
			p.Match(MySqlParserUNIQUE)
		}
		p.SetState(1544)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(1543)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*UniqueKeyTableConstraintContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*UniqueKeyTableConstraintContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(1547)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(1546)

				var _x = p.Uid()

				localctx.(*UniqueKeyTableConstraintContext).index = _x
			}

		}
		p.SetState(1550)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(1549)
				p.IndexType()
			}

		}
		{
			p.SetState(1552)
			p.IndexColumnNames()
		}
		p.SetState(1556)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(1553)
				p.IndexOption()
			}

			p.SetState(1558)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 3:
		localctx = NewForeignKeyTableConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		p.SetState(1563)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(1559)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(1561)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(1560)

					var _x = p.Uid()

					localctx.(*ForeignKeyTableConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(1565)
			p.Match(MySqlParserFOREIGN)
		}
		{
			p.SetState(1566)
			p.Match(MySqlParserKEY)
		}
		p.SetState(1568)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(1567)

				var _x = p.Uid()

				localctx.(*ForeignKeyTableConstraintContext).index = _x
			}

		}
		{
			p.SetState(1570)
			p.IndexColumnNames()
		}
		{
			p.SetState(1571)
			p.ReferenceDefinition()
		}

	case 4:
		localctx = NewCheckTableConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		p.SetState(1577)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(1573)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(1575)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(1574)

					var _x = p.Uid()

					localctx.(*CheckTableConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(1579)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(1580)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1581)
			p.expression(0)
		}
		{
			p.SetState(1582)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IReferenceDefinitionContext is an interface to support dynamic dispatch.
type IReferenceDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetMatchType returns the matchType token.
	GetMatchType() antlr.Token

	// SetMatchType sets the matchType token.
	SetMatchType(antlr.Token)

	// IsReferenceDefinitionContext differentiates from other interfaces.
	IsReferenceDefinitionContext()
}

type ReferenceDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	matchType antlr.Token
}

func NewEmptyReferenceDefinitionContext() *ReferenceDefinitionContext {
	var p = new(ReferenceDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_referenceDefinition
	return p
}

func (*ReferenceDefinitionContext) IsReferenceDefinitionContext() {}

func NewReferenceDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReferenceDefinitionContext {
	var p = new(ReferenceDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_referenceDefinition

	return p
}

func (s *ReferenceDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *ReferenceDefinitionContext) GetMatchType() antlr.Token { return s.matchType }

func (s *ReferenceDefinitionContext) SetMatchType(v antlr.Token) { s.matchType = v }

func (s *ReferenceDefinitionContext) REFERENCES() antlr.TerminalNode {
	return s.GetToken(MySqlParserREFERENCES, 0)
}

func (s *ReferenceDefinitionContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *ReferenceDefinitionContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *ReferenceDefinitionContext) MATCH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMATCH, 0)
}

func (s *ReferenceDefinitionContext) ReferenceAction() IReferenceActionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceActionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReferenceActionContext)
}

func (s *ReferenceDefinitionContext) FULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULL, 0)
}

func (s *ReferenceDefinitionContext) PARTIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTIAL, 0)
}

func (s *ReferenceDefinitionContext) SIMPLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIMPLE, 0)
}

func (s *ReferenceDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReferenceDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReferenceDefinitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReferenceDefinition(s)
	}
}

func (s *ReferenceDefinitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReferenceDefinition(s)
	}
}

func (p *MySqlParser) ReferenceDefinition() (localctx IReferenceDefinitionContext) {
	this := p
	_ = this

	localctx = NewReferenceDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 86, MySqlParserRULE_referenceDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1586)
		p.Match(MySqlParserREFERENCES)
	}
	{
		p.SetState(1587)
		p.TableName()
	}
	p.SetState(1589)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(1588)
			p.IndexColumnNames()
		}

	}
	p.SetState(1593)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserMATCH {
		{
			p.SetState(1591)
			p.Match(MySqlParserMATCH)
		}
		{
			p.SetState(1592)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ReferenceDefinitionContext).matchType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFULL || _la == MySqlParserPARTIAL || _la == MySqlParserSIMPLE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ReferenceDefinitionContext).matchType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(1596)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(1595)
			p.ReferenceAction()
		}

	}

	return localctx
}

// IReferenceActionContext is an interface to support dynamic dispatch.
type IReferenceActionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOnDelete returns the onDelete rule contexts.
	GetOnDelete() IReferenceControlTypeContext

	// GetOnUpdate returns the onUpdate rule contexts.
	GetOnUpdate() IReferenceControlTypeContext

	// SetOnDelete sets the onDelete rule contexts.
	SetOnDelete(IReferenceControlTypeContext)

	// SetOnUpdate sets the onUpdate rule contexts.
	SetOnUpdate(IReferenceControlTypeContext)

	// IsReferenceActionContext differentiates from other interfaces.
	IsReferenceActionContext()
}

type ReferenceActionContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	onDelete IReferenceControlTypeContext
	onUpdate IReferenceControlTypeContext
}

func NewEmptyReferenceActionContext() *ReferenceActionContext {
	var p = new(ReferenceActionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_referenceAction
	return p
}

func (*ReferenceActionContext) IsReferenceActionContext() {}

func NewReferenceActionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReferenceActionContext {
	var p = new(ReferenceActionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_referenceAction

	return p
}

func (s *ReferenceActionContext) GetParser() antlr.Parser { return s.parser }

func (s *ReferenceActionContext) GetOnDelete() IReferenceControlTypeContext { return s.onDelete }

func (s *ReferenceActionContext) GetOnUpdate() IReferenceControlTypeContext { return s.onUpdate }

func (s *ReferenceActionContext) SetOnDelete(v IReferenceControlTypeContext) { s.onDelete = v }

func (s *ReferenceActionContext) SetOnUpdate(v IReferenceControlTypeContext) { s.onUpdate = v }

func (s *ReferenceActionContext) AllON() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserON)
}

func (s *ReferenceActionContext) ON(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserON, i)
}

func (s *ReferenceActionContext) DELETE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELETE, 0)
}

func (s *ReferenceActionContext) AllReferenceControlType() []IReferenceControlTypeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IReferenceControlTypeContext)(nil)).Elem())
	var tst = make([]IReferenceControlTypeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IReferenceControlTypeContext)
		}
	}

	return tst
}

func (s *ReferenceActionContext) ReferenceControlType(i int) IReferenceControlTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceControlTypeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IReferenceControlTypeContext)
}

func (s *ReferenceActionContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *ReferenceActionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReferenceActionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReferenceActionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReferenceAction(s)
	}
}

func (s *ReferenceActionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReferenceAction(s)
	}
}

func (p *MySqlParser) ReferenceAction() (localctx IReferenceActionContext) {
	this := p
	_ = this

	localctx = NewReferenceActionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 88, MySqlParserRULE_referenceAction)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1614)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 161, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1598)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(1599)
			p.Match(MySqlParserDELETE)
		}
		{
			p.SetState(1600)

			var _x = p.ReferenceControlType()

			localctx.(*ReferenceActionContext).onDelete = _x
		}
		p.SetState(1604)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1601)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(1602)
				p.Match(MySqlParserUPDATE)
			}
			{
				p.SetState(1603)

				var _x = p.ReferenceControlType()

				localctx.(*ReferenceActionContext).onUpdate = _x
			}

		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1606)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(1607)
			p.Match(MySqlParserUPDATE)
		}
		{
			p.SetState(1608)

			var _x = p.ReferenceControlType()

			localctx.(*ReferenceActionContext).onUpdate = _x
		}
		p.SetState(1612)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1609)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(1610)
				p.Match(MySqlParserDELETE)
			}
			{
				p.SetState(1611)

				var _x = p.ReferenceControlType()

				localctx.(*ReferenceActionContext).onDelete = _x
			}

		}

	}

	return localctx
}

// IReferenceControlTypeContext is an interface to support dynamic dispatch.
type IReferenceControlTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsReferenceControlTypeContext differentiates from other interfaces.
	IsReferenceControlTypeContext()
}

type ReferenceControlTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyReferenceControlTypeContext() *ReferenceControlTypeContext {
	var p = new(ReferenceControlTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_referenceControlType
	return p
}

func (*ReferenceControlTypeContext) IsReferenceControlTypeContext() {}

func NewReferenceControlTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReferenceControlTypeContext {
	var p = new(ReferenceControlTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_referenceControlType

	return p
}

func (s *ReferenceControlTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *ReferenceControlTypeContext) RESTRICT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESTRICT, 0)
}

func (s *ReferenceControlTypeContext) CASCADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADE, 0)
}

func (s *ReferenceControlTypeContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *ReferenceControlTypeContext) NULL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_LITERAL, 0)
}

func (s *ReferenceControlTypeContext) NO() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, 0)
}

func (s *ReferenceControlTypeContext) ACTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserACTION, 0)
}

func (s *ReferenceControlTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReferenceControlTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReferenceControlTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReferenceControlType(s)
	}
}

func (s *ReferenceControlTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReferenceControlType(s)
	}
}

func (p *MySqlParser) ReferenceControlType() (localctx IReferenceControlTypeContext) {
	this := p
	_ = this

	localctx = NewReferenceControlTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 90, MySqlParserRULE_referenceControlType)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1622)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserRESTRICT:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1616)
			p.Match(MySqlParserRESTRICT)
		}

	case MySqlParserCASCADE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1617)
			p.Match(MySqlParserCASCADE)
		}

	case MySqlParserSET:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1618)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(1619)
			p.Match(MySqlParserNULL_LITERAL)
		}

	case MySqlParserNO:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1620)
			p.Match(MySqlParserNO)
		}
		{
			p.SetState(1621)
			p.Match(MySqlParserACTION)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IIndexColumnDefinitionContext is an interface to support dynamic dispatch.
type IIndexColumnDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIndexColumnDefinitionContext differentiates from other interfaces.
	IsIndexColumnDefinitionContext()
}

type IndexColumnDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIndexColumnDefinitionContext() *IndexColumnDefinitionContext {
	var p = new(IndexColumnDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexColumnDefinition
	return p
}

func (*IndexColumnDefinitionContext) IsIndexColumnDefinitionContext() {}

func NewIndexColumnDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexColumnDefinitionContext {
	var p = new(IndexColumnDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexColumnDefinition

	return p
}

func (s *IndexColumnDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexColumnDefinitionContext) CopyFrom(ctx *IndexColumnDefinitionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *IndexColumnDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexColumnDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SpecialIndexDeclarationContext struct {
	*IndexColumnDefinitionContext
	indexFormat antlr.Token
}

func NewSpecialIndexDeclarationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SpecialIndexDeclarationContext {
	var p = new(SpecialIndexDeclarationContext)

	p.IndexColumnDefinitionContext = NewEmptyIndexColumnDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*IndexColumnDefinitionContext))

	return p
}

func (s *SpecialIndexDeclarationContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *SpecialIndexDeclarationContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *SpecialIndexDeclarationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SpecialIndexDeclarationContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *SpecialIndexDeclarationContext) FULLTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULLTEXT, 0)
}

func (s *SpecialIndexDeclarationContext) SPATIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSPATIAL, 0)
}

func (s *SpecialIndexDeclarationContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SpecialIndexDeclarationContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *SpecialIndexDeclarationContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *SpecialIndexDeclarationContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *SpecialIndexDeclarationContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *SpecialIndexDeclarationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSpecialIndexDeclaration(s)
	}
}

func (s *SpecialIndexDeclarationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSpecialIndexDeclaration(s)
	}
}

type SimpleIndexDeclarationContext struct {
	*IndexColumnDefinitionContext
	indexFormat antlr.Token
}

func NewSimpleIndexDeclarationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleIndexDeclarationContext {
	var p = new(SimpleIndexDeclarationContext)

	p.IndexColumnDefinitionContext = NewEmptyIndexColumnDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*IndexColumnDefinitionContext))

	return p
}

func (s *SimpleIndexDeclarationContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *SimpleIndexDeclarationContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *SimpleIndexDeclarationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleIndexDeclarationContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *SimpleIndexDeclarationContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *SimpleIndexDeclarationContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *SimpleIndexDeclarationContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SimpleIndexDeclarationContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *SimpleIndexDeclarationContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *SimpleIndexDeclarationContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *SimpleIndexDeclarationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleIndexDeclaration(s)
	}
}

func (s *SimpleIndexDeclarationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleIndexDeclaration(s)
	}
}

func (p *MySqlParser) IndexColumnDefinition() (localctx IIndexColumnDefinitionContext) {
	this := p
	_ = this

	localctx = NewIndexColumnDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 92, MySqlParserRULE_indexColumnDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1652)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserINDEX, MySqlParserKEY:
		localctx = NewSimpleIndexDeclarationContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1624)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*SimpleIndexDeclarationContext).indexFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*SimpleIndexDeclarationContext).indexFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(1626)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(1625)
				p.Uid()
			}

		}
		p.SetState(1629)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(1628)
				p.IndexType()
			}

		}
		{
			p.SetState(1631)
			p.IndexColumnNames()
		}
		p.SetState(1635)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(1632)
				p.IndexOption()
			}

			p.SetState(1637)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case MySqlParserFULLTEXT, MySqlParserSPATIAL:
		localctx = NewSpecialIndexDeclarationContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1638)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFULLTEXT || _la == MySqlParserSPATIAL) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(1640)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(1639)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*SpecialIndexDeclarationContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*SpecialIndexDeclarationContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(1643)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(1642)
				p.Uid()
			}

		}
		{
			p.SetState(1645)
			p.IndexColumnNames()
		}
		p.SetState(1649)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(1646)
				p.IndexOption()
			}

			p.SetState(1651)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ITableOptionContext is an interface to support dynamic dispatch.
type ITableOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableOptionContext differentiates from other interfaces.
	IsTableOptionContext()
}

type TableOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableOptionContext() *TableOptionContext {
	var p = new(TableOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableOption
	return p
}

func (*TableOptionContext) IsTableOptionContext() {}

func NewTableOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableOptionContext {
	var p = new(TableOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableOption

	return p
}

func (s *TableOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *TableOptionContext) CopyFrom(ctx *TableOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *TableOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type TableOptionEngineContext struct {
	*TableOptionContext
}

func NewTableOptionEngineContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionEngineContext {
	var p = new(TableOptionEngineContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionEngineContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionEngineContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *TableOptionEngineContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionEngineContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *TableOptionEngineContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionEngine(s)
	}
}

func (s *TableOptionEngineContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionEngine(s)
	}
}

type TableOptionMaxRowsContext struct {
	*TableOptionContext
}

func NewTableOptionMaxRowsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionMaxRowsContext {
	var p = new(TableOptionMaxRowsContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionMaxRowsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionMaxRowsContext) MAX_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_ROWS, 0)
}

func (s *TableOptionMaxRowsContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TableOptionMaxRowsContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionMaxRowsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionMaxRows(s)
	}
}

func (s *TableOptionMaxRowsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionMaxRows(s)
	}
}

type TableOptionCollateContext struct {
	*TableOptionContext
}

func NewTableOptionCollateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionCollateContext {
	var p = new(TableOptionCollateContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionCollateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionCollateContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *TableOptionCollateContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *TableOptionCollateContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TableOptionCollateContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionCollateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionCollate(s)
	}
}

func (s *TableOptionCollateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionCollate(s)
	}
}

type TableOptionPersistentContext struct {
	*TableOptionContext
	extBoolValue antlr.Token
}

func NewTableOptionPersistentContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionPersistentContext {
	var p = new(TableOptionPersistentContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionPersistentContext) GetExtBoolValue() antlr.Token { return s.extBoolValue }

func (s *TableOptionPersistentContext) SetExtBoolValue(v antlr.Token) { s.extBoolValue = v }

func (s *TableOptionPersistentContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionPersistentContext) STATS_PERSISTENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_PERSISTENT, 0)
}

func (s *TableOptionPersistentContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TableOptionPersistentContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *TableOptionPersistentContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *TableOptionPersistentContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionPersistentContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionPersistent(s)
	}
}

func (s *TableOptionPersistentContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionPersistent(s)
	}
}

type TableOptionTablespaceContext struct {
	*TableOptionContext
}

func NewTableOptionTablespaceContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionTablespaceContext {
	var p = new(TableOptionTablespaceContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *TableOptionTablespaceContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *TableOptionTablespaceContext) TablespaceStorage() ITablespaceStorageContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablespaceStorageContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablespaceStorageContext)
}

func (s *TableOptionTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionTablespace(s)
	}
}

func (s *TableOptionTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionTablespace(s)
	}
}

type TableOptionPackKeysContext struct {
	*TableOptionContext
	extBoolValue antlr.Token
}

func NewTableOptionPackKeysContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionPackKeysContext {
	var p = new(TableOptionPackKeysContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionPackKeysContext) GetExtBoolValue() antlr.Token { return s.extBoolValue }

func (s *TableOptionPackKeysContext) SetExtBoolValue(v antlr.Token) { s.extBoolValue = v }

func (s *TableOptionPackKeysContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionPackKeysContext) PACK_KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPACK_KEYS, 0)
}

func (s *TableOptionPackKeysContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *TableOptionPackKeysContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *TableOptionPackKeysContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TableOptionPackKeysContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionPackKeysContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionPackKeys(s)
	}
}

func (s *TableOptionPackKeysContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionPackKeys(s)
	}
}

type TableOptionPasswordContext struct {
	*TableOptionContext
}

func NewTableOptionPasswordContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionPasswordContext {
	var p = new(TableOptionPasswordContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionPasswordContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionPasswordContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *TableOptionPasswordContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionPasswordContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionPasswordContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionPassword(s)
	}
}

func (s *TableOptionPasswordContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionPassword(s)
	}
}

type TableOptionUnionContext struct {
	*TableOptionContext
}

func NewTableOptionUnionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionUnionContext {
	var p = new(TableOptionUnionContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionUnionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionUnionContext) UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNION, 0)
}

func (s *TableOptionUnionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TableOptionUnionContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *TableOptionUnionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TableOptionUnionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionUnionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionUnion(s)
	}
}

func (s *TableOptionUnionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionUnion(s)
	}
}

type TableOptionSamplePageContext struct {
	*TableOptionContext
}

func NewTableOptionSamplePageContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionSamplePageContext {
	var p = new(TableOptionSamplePageContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionSamplePageContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionSamplePageContext) STATS_SAMPLE_PAGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_SAMPLE_PAGES, 0)
}

func (s *TableOptionSamplePageContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TableOptionSamplePageContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionSamplePageContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionSamplePage(s)
	}
}

func (s *TableOptionSamplePageContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionSamplePage(s)
	}
}

type TableOptionCharsetContext struct {
	*TableOptionContext
}

func NewTableOptionCharsetContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionCharsetContext {
	var p = new(TableOptionCharsetContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionCharsetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionCharsetContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *TableOptionCharsetContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *TableOptionCharsetContext) AllDEFAULT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDEFAULT)
}

func (s *TableOptionCharsetContext) DEFAULT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, i)
}

func (s *TableOptionCharsetContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionCharsetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionCharset(s)
	}
}

func (s *TableOptionCharsetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionCharset(s)
	}
}

type TableOptionIndexDirectoryContext struct {
	*TableOptionContext
}

func NewTableOptionIndexDirectoryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionIndexDirectoryContext {
	var p = new(TableOptionIndexDirectoryContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionIndexDirectoryContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionIndexDirectoryContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *TableOptionIndexDirectoryContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *TableOptionIndexDirectoryContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionIndexDirectoryContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionIndexDirectoryContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionIndexDirectory(s)
	}
}

func (s *TableOptionIndexDirectoryContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionIndexDirectory(s)
	}
}

type TableOptionTableTypeContext struct {
	*TableOptionContext
}

func NewTableOptionTableTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionTableTypeContext {
	var p = new(TableOptionTableTypeContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionTableTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionTableTypeContext) TABLE_TYPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_TYPE, 0)
}

func (s *TableOptionTableTypeContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionTableTypeContext) TableType() ITableTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableTypeContext)
}

func (s *TableOptionTableTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionTableType(s)
	}
}

func (s *TableOptionTableTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionTableType(s)
	}
}

type TableOptionKeyBlockSizeContext struct {
	*TableOptionContext
}

func NewTableOptionKeyBlockSizeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionKeyBlockSizeContext {
	var p = new(TableOptionKeyBlockSizeContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionKeyBlockSizeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionKeyBlockSizeContext) KEY_BLOCK_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY_BLOCK_SIZE, 0)
}

func (s *TableOptionKeyBlockSizeContext) FileSizeLiteral() IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *TableOptionKeyBlockSizeContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionKeyBlockSizeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionKeyBlockSize(s)
	}
}

func (s *TableOptionKeyBlockSizeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionKeyBlockSize(s)
	}
}

type TableOptionEncryptionContext struct {
	*TableOptionContext
}

func NewTableOptionEncryptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionEncryptionContext {
	var p = new(TableOptionEncryptionContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionEncryptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionEncryptionContext) ENCRYPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCRYPTION, 0)
}

func (s *TableOptionEncryptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionEncryptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionEncryptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionEncryption(s)
	}
}

func (s *TableOptionEncryptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionEncryption(s)
	}
}

type TableOptionDataDirectoryContext struct {
	*TableOptionContext
}

func NewTableOptionDataDirectoryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionDataDirectoryContext {
	var p = new(TableOptionDataDirectoryContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionDataDirectoryContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionDataDirectoryContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *TableOptionDataDirectoryContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *TableOptionDataDirectoryContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionDataDirectoryContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionDataDirectoryContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionDataDirectory(s)
	}
}

func (s *TableOptionDataDirectoryContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionDataDirectory(s)
	}
}

type TableOptionRecalculationContext struct {
	*TableOptionContext
	extBoolValue antlr.Token
}

func NewTableOptionRecalculationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionRecalculationContext {
	var p = new(TableOptionRecalculationContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionRecalculationContext) GetExtBoolValue() antlr.Token { return s.extBoolValue }

func (s *TableOptionRecalculationContext) SetExtBoolValue(v antlr.Token) { s.extBoolValue = v }

func (s *TableOptionRecalculationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionRecalculationContext) STATS_AUTO_RECALC() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_AUTO_RECALC, 0)
}

func (s *TableOptionRecalculationContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TableOptionRecalculationContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *TableOptionRecalculationContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *TableOptionRecalculationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionRecalculationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionRecalculation(s)
	}
}

func (s *TableOptionRecalculationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionRecalculation(s)
	}
}

type TableOptionAutoIncrementContext struct {
	*TableOptionContext
}

func NewTableOptionAutoIncrementContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionAutoIncrementContext {
	var p = new(TableOptionAutoIncrementContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionAutoIncrementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionAutoIncrementContext) AUTO_INCREMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTO_INCREMENT, 0)
}

func (s *TableOptionAutoIncrementContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TableOptionAutoIncrementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionAutoIncrementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionAutoIncrement(s)
	}
}

func (s *TableOptionAutoIncrementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionAutoIncrement(s)
	}
}

type TableOptionChecksumContext struct {
	*TableOptionContext
	boolValue antlr.Token
}

func NewTableOptionChecksumContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionChecksumContext {
	var p = new(TableOptionChecksumContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionChecksumContext) GetBoolValue() antlr.Token { return s.boolValue }

func (s *TableOptionChecksumContext) SetBoolValue(v antlr.Token) { s.boolValue = v }

func (s *TableOptionChecksumContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionChecksumContext) CHECKSUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECKSUM, 0)
}

func (s *TableOptionChecksumContext) PAGE_CHECKSUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserPAGE_CHECKSUM, 0)
}

func (s *TableOptionChecksumContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *TableOptionChecksumContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *TableOptionChecksumContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionChecksumContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionChecksum(s)
	}
}

func (s *TableOptionChecksumContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionChecksum(s)
	}
}

type TableOptionDelayContext struct {
	*TableOptionContext
	boolValue antlr.Token
}

func NewTableOptionDelayContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionDelayContext {
	var p = new(TableOptionDelayContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionDelayContext) GetBoolValue() antlr.Token { return s.boolValue }

func (s *TableOptionDelayContext) SetBoolValue(v antlr.Token) { s.boolValue = v }

func (s *TableOptionDelayContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionDelayContext) DELAY_KEY_WRITE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELAY_KEY_WRITE, 0)
}

func (s *TableOptionDelayContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *TableOptionDelayContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *TableOptionDelayContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionDelayContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionDelay(s)
	}
}

func (s *TableOptionDelayContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionDelay(s)
	}
}

type TableOptionConnectionContext struct {
	*TableOptionContext
}

func NewTableOptionConnectionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionConnectionContext {
	var p = new(TableOptionConnectionContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionConnectionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionConnectionContext) CONNECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION, 0)
}

func (s *TableOptionConnectionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionConnectionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionConnectionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionConnection(s)
	}
}

func (s *TableOptionConnectionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionConnection(s)
	}
}

type TableOptionCommentContext struct {
	*TableOptionContext
}

func NewTableOptionCommentContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionCommentContext {
	var p = new(TableOptionCommentContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionCommentContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionCommentContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *TableOptionCommentContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionCommentContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionCommentContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionComment(s)
	}
}

func (s *TableOptionCommentContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionComment(s)
	}
}

type TableOptionAverageContext struct {
	*TableOptionContext
}

func NewTableOptionAverageContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionAverageContext {
	var p = new(TableOptionAverageContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionAverageContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionAverageContext) AVG_ROW_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserAVG_ROW_LENGTH, 0)
}

func (s *TableOptionAverageContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TableOptionAverageContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionAverageContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionAverage(s)
	}
}

func (s *TableOptionAverageContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionAverage(s)
	}
}

type TableOptionRowFormatContext struct {
	*TableOptionContext
	rowFormat antlr.Token
}

func NewTableOptionRowFormatContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionRowFormatContext {
	var p = new(TableOptionRowFormatContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionRowFormatContext) GetRowFormat() antlr.Token { return s.rowFormat }

func (s *TableOptionRowFormatContext) SetRowFormat(v antlr.Token) { s.rowFormat = v }

func (s *TableOptionRowFormatContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionRowFormatContext) ROW_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW_FORMAT, 0)
}

func (s *TableOptionRowFormatContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TableOptionRowFormatContext) DYNAMIC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDYNAMIC, 0)
}

func (s *TableOptionRowFormatContext) FIXED() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIXED, 0)
}

func (s *TableOptionRowFormatContext) COMPRESSED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPRESSED, 0)
}

func (s *TableOptionRowFormatContext) REDUNDANT() antlr.TerminalNode {
	return s.GetToken(MySqlParserREDUNDANT, 0)
}

func (s *TableOptionRowFormatContext) COMPACT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPACT, 0)
}

func (s *TableOptionRowFormatContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *TableOptionRowFormatContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionRowFormatContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionRowFormat(s)
	}
}

func (s *TableOptionRowFormatContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionRowFormat(s)
	}
}

type TableOptionCompressionContext struct {
	*TableOptionContext
}

func NewTableOptionCompressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionCompressionContext {
	var p = new(TableOptionCompressionContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionCompressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionCompressionContext) COMPRESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPRESSION, 0)
}

func (s *TableOptionCompressionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TableOptionCompressionContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *TableOptionCompressionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionCompressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionCompression(s)
	}
}

func (s *TableOptionCompressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionCompression(s)
	}
}

type TableOptionInsertMethodContext struct {
	*TableOptionContext
	insertMethod antlr.Token
}

func NewTableOptionInsertMethodContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionInsertMethodContext {
	var p = new(TableOptionInsertMethodContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionInsertMethodContext) GetInsertMethod() antlr.Token { return s.insertMethod }

func (s *TableOptionInsertMethodContext) SetInsertMethod(v antlr.Token) { s.insertMethod = v }

func (s *TableOptionInsertMethodContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionInsertMethodContext) INSERT_METHOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT_METHOD, 0)
}

func (s *TableOptionInsertMethodContext) NO() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, 0)
}

func (s *TableOptionInsertMethodContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *TableOptionInsertMethodContext) LAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAST, 0)
}

func (s *TableOptionInsertMethodContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionInsertMethodContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionInsertMethod(s)
	}
}

func (s *TableOptionInsertMethodContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionInsertMethod(s)
	}
}

type TableOptionMinRowsContext struct {
	*TableOptionContext
}

func NewTableOptionMinRowsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableOptionMinRowsContext {
	var p = new(TableOptionMinRowsContext)

	p.TableOptionContext = NewEmptyTableOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableOptionContext))

	return p
}

func (s *TableOptionMinRowsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableOptionMinRowsContext) MIN_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIN_ROWS, 0)
}

func (s *TableOptionMinRowsContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *TableOptionMinRowsContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *TableOptionMinRowsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableOptionMinRows(s)
	}
}

func (s *TableOptionMinRowsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableOptionMinRows(s)
	}
}

func (p *MySqlParser) TableOption() (localctx ITableOptionContext) {
	this := p
	_ = this

	localctx = NewTableOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 94, MySqlParserRULE_tableOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1799)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 199, p.GetParserRuleContext()) {
	case 1:
		localctx = NewTableOptionEngineContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1654)
			p.Match(MySqlParserENGINE)
		}
		p.SetState(1656)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1655)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		p.SetState(1659)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONNECT || (((_la-742)&-(0x1f+1)) == 0 && ((1<<uint((_la-742)))&((1<<(MySqlParserARCHIVE-742))|(1<<(MySqlParserBLACKHOLE-742))|(1<<(MySqlParserCSV-742))|(1<<(MySqlParserFEDERATED-742))|(1<<(MySqlParserINNODB-742))|(1<<(MySqlParserMEMORY-742))|(1<<(MySqlParserMRG_MYISAM-742))|(1<<(MySqlParserMYISAM-742))|(1<<(MySqlParserNDB-742))|(1<<(MySqlParserNDBCLUSTER-742))|(1<<(MySqlParserPERFORMANCE_SCHEMA-742))|(1<<(MySqlParserTOKUDB-742)))) != 0) || (((_la-1099)&-(0x1f+1)) == 0 && ((1<<uint((_la-1099)))&((1<<(MySqlParserSTRING_LITERAL-1099))|(1<<(MySqlParserID-1099))|(1<<(MySqlParserREVERSE_QUOTE_ID-1099)))) != 0) {
			{
				p.SetState(1658)
				p.EngineName()
			}

		}

	case 2:
		localctx = NewTableOptionAutoIncrementContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1661)
			p.Match(MySqlParserAUTO_INCREMENT)
		}
		p.SetState(1663)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1662)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1665)
			p.DecimalLiteral()
		}

	case 3:
		localctx = NewTableOptionAverageContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1666)
			p.Match(MySqlParserAVG_ROW_LENGTH)
		}
		p.SetState(1668)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1667)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1670)
			p.DecimalLiteral()
		}

	case 4:
		localctx = NewTableOptionCharsetContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		p.SetState(1672)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(1671)
				p.Match(MySqlParserDEFAULT)
			}

		}
		{
			p.SetState(1674)
			p.CharSet()
		}
		p.SetState(1676)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1675)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		p.SetState(1680)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserBINARY, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL:
			{
				p.SetState(1678)
				p.CharsetName()
			}

		case MySqlParserDEFAULT:
			{
				p.SetState(1679)
				p.Match(MySqlParserDEFAULT)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 5:
		localctx = NewTableOptionChecksumContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(1682)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCHECKSUM || _la == MySqlParserPAGE_CHECKSUM) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(1684)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1683)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1686)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionChecksumContext).boolValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionChecksumContext).boolValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 6:
		localctx = NewTableOptionCollateContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		p.SetState(1688)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(1687)
				p.Match(MySqlParserDEFAULT)
			}

		}
		{
			p.SetState(1690)
			p.Match(MySqlParserCOLLATE)
		}
		p.SetState(1692)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1691)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1694)
			p.CollationName()
		}

	case 7:
		localctx = NewTableOptionCommentContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(1695)
			p.Match(MySqlParserCOMMENT)
		}
		p.SetState(1697)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1696)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1699)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 8:
		localctx = NewTableOptionCompressionContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(1700)
			p.Match(MySqlParserCOMPRESSION)
		}
		p.SetState(1702)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1701)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1704)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSTRING_LITERAL || _la == MySqlParserID) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 9:
		localctx = NewTableOptionConnectionContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(1705)
			p.Match(MySqlParserCONNECTION)
		}
		p.SetState(1707)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1706)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1709)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 10:
		localctx = NewTableOptionDataDirectoryContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(1710)
			p.Match(MySqlParserDATA)
		}
		{
			p.SetState(1711)
			p.Match(MySqlParserDIRECTORY)
		}
		p.SetState(1713)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1712)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1715)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 11:
		localctx = NewTableOptionDelayContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(1716)
			p.Match(MySqlParserDELAY_KEY_WRITE)
		}
		p.SetState(1718)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1717)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1720)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionDelayContext).boolValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionDelayContext).boolValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 12:
		localctx = NewTableOptionEncryptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(1721)
			p.Match(MySqlParserENCRYPTION)
		}
		p.SetState(1723)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1722)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1725)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 13:
		localctx = NewTableOptionIndexDirectoryContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(1726)
			p.Match(MySqlParserINDEX)
		}
		{
			p.SetState(1727)
			p.Match(MySqlParserDIRECTORY)
		}
		p.SetState(1729)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1728)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1731)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 14:
		localctx = NewTableOptionInsertMethodContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(1732)
			p.Match(MySqlParserINSERT_METHOD)
		}
		p.SetState(1734)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1733)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1736)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionInsertMethodContext).insertMethod = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFIRST || _la == MySqlParserLAST || _la == MySqlParserNO) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionInsertMethodContext).insertMethod = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 15:
		localctx = NewTableOptionKeyBlockSizeContext(p, localctx)
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(1737)
			p.Match(MySqlParserKEY_BLOCK_SIZE)
		}
		p.SetState(1739)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1738)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1741)
			p.FileSizeLiteral()
		}

	case 16:
		localctx = NewTableOptionMaxRowsContext(p, localctx)
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(1742)
			p.Match(MySqlParserMAX_ROWS)
		}
		p.SetState(1744)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1743)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1746)
			p.DecimalLiteral()
		}

	case 17:
		localctx = NewTableOptionMinRowsContext(p, localctx)
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(1747)
			p.Match(MySqlParserMIN_ROWS)
		}
		p.SetState(1749)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1748)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1751)
			p.DecimalLiteral()
		}

	case 18:
		localctx = NewTableOptionPackKeysContext(p, localctx)
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(1752)
			p.Match(MySqlParserPACK_KEYS)
		}
		p.SetState(1754)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1753)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1756)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionPackKeysContext).extBoolValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionPackKeysContext).extBoolValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 19:
		localctx = NewTableOptionPasswordContext(p, localctx)
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(1757)
			p.Match(MySqlParserPASSWORD)
		}
		p.SetState(1759)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1758)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1761)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 20:
		localctx = NewTableOptionRowFormatContext(p, localctx)
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(1762)
			p.Match(MySqlParserROW_FORMAT)
		}
		p.SetState(1764)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1763)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1766)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionRowFormatContext).rowFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || (((_la-355)&-(0x1f+1)) == 0 && ((1<<uint((_la-355)))&((1<<(MySqlParserCOMPACT-355))|(1<<(MySqlParserCOMPRESSED-355))|(1<<(MySqlParserDYNAMIC-355)))) != 0) || _la == MySqlParserFIXED || _la == MySqlParserREDUNDANT || _la == MySqlParserID) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionRowFormatContext).rowFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 21:
		localctx = NewTableOptionRecalculationContext(p, localctx)
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(1767)
			p.Match(MySqlParserSTATS_AUTO_RECALC)
		}
		p.SetState(1769)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1768)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1771)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionRecalculationContext).extBoolValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionRecalculationContext).extBoolValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 22:
		localctx = NewTableOptionPersistentContext(p, localctx)
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(1772)
			p.Match(MySqlParserSTATS_PERSISTENT)
		}
		p.SetState(1774)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1773)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1776)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TableOptionPersistentContext).extBoolValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TableOptionPersistentContext).extBoolValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 23:
		localctx = NewTableOptionSamplePageContext(p, localctx)
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(1777)
			p.Match(MySqlParserSTATS_SAMPLE_PAGES)
		}
		p.SetState(1779)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1778)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1781)
			p.DecimalLiteral()
		}

	case 24:
		localctx = NewTableOptionTablespaceContext(p, localctx)
		p.EnterOuterAlt(localctx, 24)
		{
			p.SetState(1782)
			p.Match(MySqlParserTABLESPACE)
		}
		{
			p.SetState(1783)
			p.Uid()
		}
		p.SetState(1785)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 197, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(1784)
				p.TablespaceStorage()
			}

		}

	case 25:
		localctx = NewTableOptionTableTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 25)
		{
			p.SetState(1787)
			p.Match(MySqlParserTABLE_TYPE)
		}
		{
			p.SetState(1788)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(1789)
			p.TableType()
		}

	case 26:
		localctx = NewTableOptionTablespaceContext(p, localctx)
		p.EnterOuterAlt(localctx, 26)
		{
			p.SetState(1790)
			p.TablespaceStorage()
		}

	case 27:
		localctx = NewTableOptionUnionContext(p, localctx)
		p.EnterOuterAlt(localctx, 27)
		{
			p.SetState(1791)
			p.Match(MySqlParserUNION)
		}
		p.SetState(1793)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(1792)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(1795)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1796)
			p.Tables()
		}
		{
			p.SetState(1797)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// ITableTypeContext is an interface to support dynamic dispatch.
type ITableTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableTypeContext differentiates from other interfaces.
	IsTableTypeContext()
}

type TableTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableTypeContext() *TableTypeContext {
	var p = new(TableTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableType
	return p
}

func (*TableTypeContext) IsTableTypeContext() {}

func NewTableTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableTypeContext {
	var p = new(TableTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableType

	return p
}

func (s *TableTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *TableTypeContext) MYSQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL, 0)
}

func (s *TableTypeContext) ODBC() antlr.TerminalNode {
	return s.GetToken(MySqlParserODBC, 0)
}

func (s *TableTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TableTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableType(s)
	}
}

func (s *TableTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableType(s)
	}
}

func (p *MySqlParser) TableType() (localctx ITableTypeContext) {
	this := p
	_ = this

	localctx = NewTableTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 96, MySqlParserRULE_tableType)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1801)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserMYSQL || _la == MySqlParserODBC) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// ITablespaceStorageContext is an interface to support dynamic dispatch.
type ITablespaceStorageContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTablespaceStorageContext differentiates from other interfaces.
	IsTablespaceStorageContext()
}

type TablespaceStorageContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTablespaceStorageContext() *TablespaceStorageContext {
	var p = new(TablespaceStorageContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tablespaceStorage
	return p
}

func (*TablespaceStorageContext) IsTablespaceStorageContext() {}

func NewTablespaceStorageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TablespaceStorageContext {
	var p = new(TablespaceStorageContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tablespaceStorage

	return p
}

func (s *TablespaceStorageContext) GetParser() antlr.Parser { return s.parser }

func (s *TablespaceStorageContext) STORAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORAGE, 0)
}

func (s *TablespaceStorageContext) DISK() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISK, 0)
}

func (s *TablespaceStorageContext) MEMORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMORY, 0)
}

func (s *TablespaceStorageContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *TablespaceStorageContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TablespaceStorageContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TablespaceStorageContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTablespaceStorage(s)
	}
}

func (s *TablespaceStorageContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTablespaceStorage(s)
	}
}

func (p *MySqlParser) TablespaceStorage() (localctx ITablespaceStorageContext) {
	this := p
	_ = this

	localctx = NewTablespaceStorageContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 98, MySqlParserRULE_tablespaceStorage)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1803)
		p.Match(MySqlParserSTORAGE)
	}
	{
		p.SetState(1804)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDEFAULT || _la == MySqlParserDISK || _la == MySqlParserMEMORY) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IPartitionDefinitionsContext is an interface to support dynamic dispatch.
type IPartitionDefinitionsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetCount returns the count rule contexts.
	GetCount() IDecimalLiteralContext

	// GetSubCount returns the subCount rule contexts.
	GetSubCount() IDecimalLiteralContext

	// SetCount sets the count rule contexts.
	SetCount(IDecimalLiteralContext)

	// SetSubCount sets the subCount rule contexts.
	SetSubCount(IDecimalLiteralContext)

	// IsPartitionDefinitionsContext differentiates from other interfaces.
	IsPartitionDefinitionsContext()
}

type PartitionDefinitionsContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	count    IDecimalLiteralContext
	subCount IDecimalLiteralContext
}

func NewEmptyPartitionDefinitionsContext() *PartitionDefinitionsContext {
	var p = new(PartitionDefinitionsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionDefinitions
	return p
}

func (*PartitionDefinitionsContext) IsPartitionDefinitionsContext() {}

func NewPartitionDefinitionsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionDefinitionsContext {
	var p = new(PartitionDefinitionsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionDefinitions

	return p
}

func (s *PartitionDefinitionsContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionDefinitionsContext) GetCount() IDecimalLiteralContext { return s.count }

func (s *PartitionDefinitionsContext) GetSubCount() IDecimalLiteralContext { return s.subCount }

func (s *PartitionDefinitionsContext) SetCount(v IDecimalLiteralContext) { s.count = v }

func (s *PartitionDefinitionsContext) SetSubCount(v IDecimalLiteralContext) { s.subCount = v }

func (s *PartitionDefinitionsContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionDefinitionsContext) AllBY() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserBY)
}

func (s *PartitionDefinitionsContext) BY(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, i)
}

func (s *PartitionDefinitionsContext) PartitionFunctionDefinition() IPartitionFunctionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionFunctionDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPartitionFunctionDefinitionContext)
}

func (s *PartitionDefinitionsContext) PARTITIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONS, 0)
}

func (s *PartitionDefinitionsContext) SUBPARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBPARTITION, 0)
}

func (s *PartitionDefinitionsContext) SubpartitionFunctionDefinition() ISubpartitionFunctionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISubpartitionFunctionDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISubpartitionFunctionDefinitionContext)
}

func (s *PartitionDefinitionsContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionDefinitionsContext) AllPartitionDefinition() []IPartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem())
	var tst = make([]IPartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinitionContext)
		}
	}

	return tst
}

func (s *PartitionDefinitionsContext) PartitionDefinition(i int) IPartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionContext)
}

func (s *PartitionDefinitionsContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionDefinitionsContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *PartitionDefinitionsContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *PartitionDefinitionsContext) SUBPARTITIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBPARTITIONS, 0)
}

func (s *PartitionDefinitionsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionDefinitionsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionDefinitionsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionDefinitionsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PartitionDefinitionsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionDefinitions(s)
	}
}

func (s *PartitionDefinitionsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionDefinitions(s)
	}
}

func (p *MySqlParser) PartitionDefinitions() (localctx IPartitionDefinitionsContext) {
	this := p
	_ = this

	localctx = NewPartitionDefinitionsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 100, MySqlParserRULE_partitionDefinitions)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(1806)
		p.Match(MySqlParserPARTITION)
	}
	{
		p.SetState(1807)
		p.Match(MySqlParserBY)
	}
	{
		p.SetState(1808)
		p.PartitionFunctionDefinition()
	}
	p.SetState(1811)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITIONS {
		{
			p.SetState(1809)
			p.Match(MySqlParserPARTITIONS)
		}
		{
			p.SetState(1810)

			var _x = p.DecimalLiteral()

			localctx.(*PartitionDefinitionsContext).count = _x
		}

	}
	p.SetState(1820)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserSUBPARTITION {
		{
			p.SetState(1813)
			p.Match(MySqlParserSUBPARTITION)
		}
		{
			p.SetState(1814)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(1815)
			p.SubpartitionFunctionDefinition()
		}
		p.SetState(1818)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSUBPARTITIONS {
			{
				p.SetState(1816)
				p.Match(MySqlParserSUBPARTITIONS)
			}
			{
				p.SetState(1817)

				var _x = p.DecimalLiteral()

				localctx.(*PartitionDefinitionsContext).subCount = _x
			}

		}

	}
	p.SetState(1833)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(1822)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1823)
			p.PartitionDefinition()
		}
		p.SetState(1828)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(1824)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(1825)
				p.PartitionDefinition()
			}

			p.SetState(1830)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(1831)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IPartitionFunctionDefinitionContext is an interface to support dynamic dispatch.
type IPartitionFunctionDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionFunctionDefinitionContext differentiates from other interfaces.
	IsPartitionFunctionDefinitionContext()
}

type PartitionFunctionDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionFunctionDefinitionContext() *PartitionFunctionDefinitionContext {
	var p = new(PartitionFunctionDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionFunctionDefinition
	return p
}

func (*PartitionFunctionDefinitionContext) IsPartitionFunctionDefinitionContext() {}

func NewPartitionFunctionDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionFunctionDefinitionContext {
	var p = new(PartitionFunctionDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionFunctionDefinition

	return p
}

func (s *PartitionFunctionDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionFunctionDefinitionContext) CopyFrom(ctx *PartitionFunctionDefinitionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *PartitionFunctionDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionFunctionDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PartitionFunctionKeyContext struct {
	*PartitionFunctionDefinitionContext
	algType antlr.Token
}

func NewPartitionFunctionKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionFunctionKeyContext {
	var p = new(PartitionFunctionKeyContext)

	p.PartitionFunctionDefinitionContext = NewEmptyPartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionFunctionDefinitionContext))

	return p
}

func (s *PartitionFunctionKeyContext) GetAlgType() antlr.Token { return s.algType }

func (s *PartitionFunctionKeyContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *PartitionFunctionKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionFunctionKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *PartitionFunctionKeyContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionFunctionKeyContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *PartitionFunctionKeyContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionFunctionKeyContext) LINEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEAR, 0)
}

func (s *PartitionFunctionKeyContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *PartitionFunctionKeyContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionFunctionKeyContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *PartitionFunctionKeyContext) TWO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTWO_DECIMAL, 0)
}

func (s *PartitionFunctionKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionFunctionKey(s)
	}
}

func (s *PartitionFunctionKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionFunctionKey(s)
	}
}

type PartitionFunctionHashContext struct {
	*PartitionFunctionDefinitionContext
}

func NewPartitionFunctionHashContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionFunctionHashContext {
	var p = new(PartitionFunctionHashContext)

	p.PartitionFunctionDefinitionContext = NewEmptyPartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionFunctionDefinitionContext))

	return p
}

func (s *PartitionFunctionHashContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionFunctionHashContext) HASH() antlr.TerminalNode {
	return s.GetToken(MySqlParserHASH, 0)
}

func (s *PartitionFunctionHashContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionFunctionHashContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PartitionFunctionHashContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionFunctionHashContext) LINEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEAR, 0)
}

func (s *PartitionFunctionHashContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionFunctionHash(s)
	}
}

func (s *PartitionFunctionHashContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionFunctionHash(s)
	}
}

type PartitionFunctionListContext struct {
	*PartitionFunctionDefinitionContext
}

func NewPartitionFunctionListContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionFunctionListContext {
	var p = new(PartitionFunctionListContext)

	p.PartitionFunctionDefinitionContext = NewEmptyPartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionFunctionDefinitionContext))

	return p
}

func (s *PartitionFunctionListContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionFunctionListContext) LIST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIST, 0)
}

func (s *PartitionFunctionListContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionFunctionListContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PartitionFunctionListContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionFunctionListContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *PartitionFunctionListContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *PartitionFunctionListContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionFunctionList(s)
	}
}

func (s *PartitionFunctionListContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionFunctionList(s)
	}
}

type PartitionFunctionRangeContext struct {
	*PartitionFunctionDefinitionContext
}

func NewPartitionFunctionRangeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionFunctionRangeContext {
	var p = new(PartitionFunctionRangeContext)

	p.PartitionFunctionDefinitionContext = NewEmptyPartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionFunctionDefinitionContext))

	return p
}

func (s *PartitionFunctionRangeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionFunctionRangeContext) RANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRANGE, 0)
}

func (s *PartitionFunctionRangeContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionFunctionRangeContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PartitionFunctionRangeContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionFunctionRangeContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *PartitionFunctionRangeContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *PartitionFunctionRangeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionFunctionRange(s)
	}
}

func (s *PartitionFunctionRangeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionFunctionRange(s)
	}
}

func (p *MySqlParser) PartitionFunctionDefinition() (localctx IPartitionFunctionDefinitionContext) {
	this := p
	_ = this

	localctx = NewPartitionFunctionDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 102, MySqlParserRULE_partitionFunctionDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1880)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 210, p.GetParserRuleContext()) {
	case 1:
		localctx = NewPartitionFunctionHashContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(1836)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLINEAR {
			{
				p.SetState(1835)
				p.Match(MySqlParserLINEAR)
			}

		}
		{
			p.SetState(1838)
			p.Match(MySqlParserHASH)
		}
		{
			p.SetState(1839)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1840)
			p.expression(0)
		}
		{
			p.SetState(1841)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 2:
		localctx = NewPartitionFunctionKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		p.SetState(1844)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLINEAR {
			{
				p.SetState(1843)
				p.Match(MySqlParserLINEAR)
			}

		}
		{
			p.SetState(1846)
			p.Match(MySqlParserKEY)
		}
		p.SetState(1850)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserALGORITHM {
			{
				p.SetState(1847)
				p.Match(MySqlParserALGORITHM)
			}
			{
				p.SetState(1848)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}
			{
				p.SetState(1849)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*PartitionFunctionKeyContext).algType = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserONE_DECIMAL || _la == MySqlParserTWO_DECIMAL) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*PartitionFunctionKeyContext).algType = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(1852)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1853)
			p.UidList()
		}
		{
			p.SetState(1854)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 3:
		localctx = NewPartitionFunctionRangeContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1856)
			p.Match(MySqlParserRANGE)
		}
		p.SetState(1866)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserLR_BRACKET:
			{
				p.SetState(1857)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1858)
				p.expression(0)
			}
			{
				p.SetState(1859)
				p.Match(MySqlParserRR_BRACKET)
			}

		case MySqlParserCOLUMNS:
			{
				p.SetState(1861)
				p.Match(MySqlParserCOLUMNS)
			}
			{
				p.SetState(1862)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1863)
				p.UidList()
			}
			{
				p.SetState(1864)
				p.Match(MySqlParserRR_BRACKET)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 4:
		localctx = NewPartitionFunctionListContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1868)
			p.Match(MySqlParserLIST)
		}
		p.SetState(1878)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserLR_BRACKET:
			{
				p.SetState(1869)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1870)
				p.expression(0)
			}
			{
				p.SetState(1871)
				p.Match(MySqlParserRR_BRACKET)
			}

		case MySqlParserCOLUMNS:
			{
				p.SetState(1873)
				p.Match(MySqlParserCOLUMNS)
			}
			{
				p.SetState(1874)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1875)
				p.UidList()
			}
			{
				p.SetState(1876)
				p.Match(MySqlParserRR_BRACKET)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	}

	return localctx
}

// ISubpartitionFunctionDefinitionContext is an interface to support dynamic dispatch.
type ISubpartitionFunctionDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSubpartitionFunctionDefinitionContext differentiates from other interfaces.
	IsSubpartitionFunctionDefinitionContext()
}

type SubpartitionFunctionDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySubpartitionFunctionDefinitionContext() *SubpartitionFunctionDefinitionContext {
	var p = new(SubpartitionFunctionDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_subpartitionFunctionDefinition
	return p
}

func (*SubpartitionFunctionDefinitionContext) IsSubpartitionFunctionDefinitionContext() {}

func NewSubpartitionFunctionDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SubpartitionFunctionDefinitionContext {
	var p = new(SubpartitionFunctionDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_subpartitionFunctionDefinition

	return p
}

func (s *SubpartitionFunctionDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *SubpartitionFunctionDefinitionContext) CopyFrom(ctx *SubpartitionFunctionDefinitionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SubpartitionFunctionDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubpartitionFunctionDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SubPartitionFunctionHashContext struct {
	*SubpartitionFunctionDefinitionContext
}

func NewSubPartitionFunctionHashContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubPartitionFunctionHashContext {
	var p = new(SubPartitionFunctionHashContext)

	p.SubpartitionFunctionDefinitionContext = NewEmptySubpartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SubpartitionFunctionDefinitionContext))

	return p
}

func (s *SubPartitionFunctionHashContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubPartitionFunctionHashContext) HASH() antlr.TerminalNode {
	return s.GetToken(MySqlParserHASH, 0)
}

func (s *SubPartitionFunctionHashContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubPartitionFunctionHashContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SubPartitionFunctionHashContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubPartitionFunctionHashContext) LINEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEAR, 0)
}

func (s *SubPartitionFunctionHashContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubPartitionFunctionHash(s)
	}
}

func (s *SubPartitionFunctionHashContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubPartitionFunctionHash(s)
	}
}

type SubPartitionFunctionKeyContext struct {
	*SubpartitionFunctionDefinitionContext
	algType antlr.Token
}

func NewSubPartitionFunctionKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubPartitionFunctionKeyContext {
	var p = new(SubPartitionFunctionKeyContext)

	p.SubpartitionFunctionDefinitionContext = NewEmptySubpartitionFunctionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SubpartitionFunctionDefinitionContext))

	return p
}

func (s *SubPartitionFunctionKeyContext) GetAlgType() antlr.Token { return s.algType }

func (s *SubPartitionFunctionKeyContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *SubPartitionFunctionKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubPartitionFunctionKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *SubPartitionFunctionKeyContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubPartitionFunctionKeyContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *SubPartitionFunctionKeyContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubPartitionFunctionKeyContext) LINEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEAR, 0)
}

func (s *SubPartitionFunctionKeyContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *SubPartitionFunctionKeyContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *SubPartitionFunctionKeyContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *SubPartitionFunctionKeyContext) TWO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTWO_DECIMAL, 0)
}

func (s *SubPartitionFunctionKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubPartitionFunctionKey(s)
	}
}

func (s *SubPartitionFunctionKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubPartitionFunctionKey(s)
	}
}

func (p *MySqlParser) SubpartitionFunctionDefinition() (localctx ISubpartitionFunctionDefinitionContext) {
	this := p
	_ = this

	localctx = NewSubpartitionFunctionDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 104, MySqlParserRULE_subpartitionFunctionDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(1903)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 214, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSubPartitionFunctionHashContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(1883)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLINEAR {
			{
				p.SetState(1882)
				p.Match(MySqlParserLINEAR)
			}

		}
		{
			p.SetState(1885)
			p.Match(MySqlParserHASH)
		}
		{
			p.SetState(1886)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1887)
			p.expression(0)
		}
		{
			p.SetState(1888)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 2:
		localctx = NewSubPartitionFunctionKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		p.SetState(1891)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLINEAR {
			{
				p.SetState(1890)
				p.Match(MySqlParserLINEAR)
			}

		}
		{
			p.SetState(1893)
			p.Match(MySqlParserKEY)
		}
		p.SetState(1897)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserALGORITHM {
			{
				p.SetState(1894)
				p.Match(MySqlParserALGORITHM)
			}
			{
				p.SetState(1895)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}
			{
				p.SetState(1896)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*SubPartitionFunctionKeyContext).algType = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserONE_DECIMAL || _la == MySqlParserTWO_DECIMAL) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*SubPartitionFunctionKeyContext).algType = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(1899)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1900)
			p.UidList()
		}
		{
			p.SetState(1901)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IPartitionDefinitionContext is an interface to support dynamic dispatch.
type IPartitionDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionDefinitionContext differentiates from other interfaces.
	IsPartitionDefinitionContext()
}

type PartitionDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionDefinitionContext() *PartitionDefinitionContext {
	var p = new(PartitionDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionDefinition
	return p
}

func (*PartitionDefinitionContext) IsPartitionDefinitionContext() {}

func NewPartitionDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionDefinitionContext {
	var p = new(PartitionDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionDefinition

	return p
}

func (s *PartitionDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionDefinitionContext) CopyFrom(ctx *PartitionDefinitionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *PartitionDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PartitionComparisonContext struct {
	*PartitionDefinitionContext
}

func NewPartitionComparisonContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionComparisonContext {
	var p = new(PartitionComparisonContext)

	p.PartitionDefinitionContext = NewEmptyPartitionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionDefinitionContext))

	return p
}

func (s *PartitionComparisonContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionComparisonContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionComparisonContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionComparisonContext) VALUES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUES, 0)
}

func (s *PartitionComparisonContext) LESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLESS, 0)
}

func (s *PartitionComparisonContext) THAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHAN, 0)
}

func (s *PartitionComparisonContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *PartitionComparisonContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *PartitionComparisonContext) AllPartitionDefinerAtom() []IPartitionDefinerAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem())
	var tst = make([]IPartitionDefinerAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinerAtomContext)
		}
	}

	return tst
}

func (s *PartitionComparisonContext) PartitionDefinerAtom(i int) IPartitionDefinerAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinerAtomContext)
}

func (s *PartitionComparisonContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *PartitionComparisonContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *PartitionComparisonContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionComparisonContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionComparisonContext) AllPartitionOption() []IPartitionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem())
	var tst = make([]IPartitionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionOptionContext)
		}
	}

	return tst
}

func (s *PartitionComparisonContext) PartitionOption(i int) IPartitionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionOptionContext)
}

func (s *PartitionComparisonContext) AllSubpartitionDefinition() []ISubpartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem())
	var tst = make([]ISubpartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISubpartitionDefinitionContext)
		}
	}

	return tst
}

func (s *PartitionComparisonContext) SubpartitionDefinition(i int) ISubpartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISubpartitionDefinitionContext)
}

func (s *PartitionComparisonContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionComparison(s)
	}
}

func (s *PartitionComparisonContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionComparison(s)
	}
}

type PartitionListAtomContext struct {
	*PartitionDefinitionContext
}

func NewPartitionListAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionListAtomContext {
	var p = new(PartitionListAtomContext)

	p.PartitionDefinitionContext = NewEmptyPartitionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionDefinitionContext))

	return p
}

func (s *PartitionListAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionListAtomContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionListAtomContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionListAtomContext) VALUES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUES, 0)
}

func (s *PartitionListAtomContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *PartitionListAtomContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *PartitionListAtomContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *PartitionListAtomContext) AllPartitionDefinerAtom() []IPartitionDefinerAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem())
	var tst = make([]IPartitionDefinerAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinerAtomContext)
		}
	}

	return tst
}

func (s *PartitionListAtomContext) PartitionDefinerAtom(i int) IPartitionDefinerAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinerAtomContext)
}

func (s *PartitionListAtomContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *PartitionListAtomContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *PartitionListAtomContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionListAtomContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionListAtomContext) AllPartitionOption() []IPartitionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem())
	var tst = make([]IPartitionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionOptionContext)
		}
	}

	return tst
}

func (s *PartitionListAtomContext) PartitionOption(i int) IPartitionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionOptionContext)
}

func (s *PartitionListAtomContext) AllSubpartitionDefinition() []ISubpartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem())
	var tst = make([]ISubpartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISubpartitionDefinitionContext)
		}
	}

	return tst
}

func (s *PartitionListAtomContext) SubpartitionDefinition(i int) ISubpartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISubpartitionDefinitionContext)
}

func (s *PartitionListAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionListAtom(s)
	}
}

func (s *PartitionListAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionListAtom(s)
	}
}

type PartitionListVectorContext struct {
	*PartitionDefinitionContext
}

func NewPartitionListVectorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionListVectorContext {
	var p = new(PartitionListVectorContext)

	p.PartitionDefinitionContext = NewEmptyPartitionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionDefinitionContext))

	return p
}

func (s *PartitionListVectorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionListVectorContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionListVectorContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionListVectorContext) VALUES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUES, 0)
}

func (s *PartitionListVectorContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *PartitionListVectorContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *PartitionListVectorContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *PartitionListVectorContext) AllPartitionDefinerVector() []IPartitionDefinerVectorContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinerVectorContext)(nil)).Elem())
	var tst = make([]IPartitionDefinerVectorContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinerVectorContext)
		}
	}

	return tst
}

func (s *PartitionListVectorContext) PartitionDefinerVector(i int) IPartitionDefinerVectorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinerVectorContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinerVectorContext)
}

func (s *PartitionListVectorContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *PartitionListVectorContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *PartitionListVectorContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionListVectorContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionListVectorContext) AllPartitionOption() []IPartitionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem())
	var tst = make([]IPartitionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionOptionContext)
		}
	}

	return tst
}

func (s *PartitionListVectorContext) PartitionOption(i int) IPartitionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionOptionContext)
}

func (s *PartitionListVectorContext) AllSubpartitionDefinition() []ISubpartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem())
	var tst = make([]ISubpartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISubpartitionDefinitionContext)
		}
	}

	return tst
}

func (s *PartitionListVectorContext) SubpartitionDefinition(i int) ISubpartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISubpartitionDefinitionContext)
}

func (s *PartitionListVectorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionListVector(s)
	}
}

func (s *PartitionListVectorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionListVector(s)
	}
}

type PartitionSimpleContext struct {
	*PartitionDefinitionContext
}

func NewPartitionSimpleContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionSimpleContext {
	var p = new(PartitionSimpleContext)

	p.PartitionDefinitionContext = NewEmptyPartitionDefinitionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionDefinitionContext))

	return p
}

func (s *PartitionSimpleContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionSimpleContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionSimpleContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionSimpleContext) AllPartitionOption() []IPartitionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem())
	var tst = make([]IPartitionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionOptionContext)
		}
	}

	return tst
}

func (s *PartitionSimpleContext) PartitionOption(i int) IPartitionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionOptionContext)
}

func (s *PartitionSimpleContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionSimpleContext) AllSubpartitionDefinition() []ISubpartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem())
	var tst = make([]ISubpartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISubpartitionDefinitionContext)
		}
	}

	return tst
}

func (s *PartitionSimpleContext) SubpartitionDefinition(i int) ISubpartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISubpartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISubpartitionDefinitionContext)
}

func (s *PartitionSimpleContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionSimpleContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionSimpleContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionSimpleContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionSimple(s)
	}
}

func (s *PartitionSimpleContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionSimple(s)
	}
}

func (p *MySqlParser) PartitionDefinition() (localctx IPartitionDefinitionContext) {
	this := p
	_ = this

	localctx = NewPartitionDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 106, MySqlParserRULE_partitionDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2051)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 233, p.GetParserRuleContext()) {
	case 1:
		localctx = NewPartitionComparisonContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(1905)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(1906)
			p.Uid()
		}
		{
			p.SetState(1907)
			p.Match(MySqlParserVALUES)
		}
		{
			p.SetState(1908)
			p.Match(MySqlParserLESS)
		}
		{
			p.SetState(1909)
			p.Match(MySqlParserTHAN)
		}
		{
			p.SetState(1910)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1911)
			p.PartitionDefinerAtom()
		}
		p.SetState(1916)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(1912)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(1913)
				p.PartitionDefinerAtom()
			}

			p.SetState(1918)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(1919)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(1923)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
			{
				p.SetState(1920)
				p.PartitionOption()
			}

			p.SetState(1925)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(1937)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(1926)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1927)
				p.SubpartitionDefinition()
			}
			p.SetState(1932)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(1928)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(1929)
					p.SubpartitionDefinition()
				}

				p.SetState(1934)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}
			{
				p.SetState(1935)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 2:
		localctx = NewPartitionComparisonContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(1939)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(1940)
			p.Uid()
		}
		{
			p.SetState(1941)
			p.Match(MySqlParserVALUES)
		}
		{
			p.SetState(1942)
			p.Match(MySqlParserLESS)
		}
		{
			p.SetState(1943)
			p.Match(MySqlParserTHAN)
		}
		{
			p.SetState(1944)
			p.PartitionDefinerAtom()
		}
		p.SetState(1948)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
			{
				p.SetState(1945)
				p.PartitionOption()
			}

			p.SetState(1950)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(1962)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(1951)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1952)
				p.SubpartitionDefinition()
			}
			p.SetState(1957)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(1953)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(1954)
					p.SubpartitionDefinition()
				}

				p.SetState(1959)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}
			{
				p.SetState(1960)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 3:
		localctx = NewPartitionListAtomContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(1964)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(1965)
			p.Uid()
		}
		{
			p.SetState(1966)
			p.Match(MySqlParserVALUES)
		}
		{
			p.SetState(1967)
			p.Match(MySqlParserIN)
		}
		{
			p.SetState(1968)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(1969)
			p.PartitionDefinerAtom()
		}
		p.SetState(1974)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(1970)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(1971)
				p.PartitionDefinerAtom()
			}

			p.SetState(1976)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(1977)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(1981)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
			{
				p.SetState(1978)
				p.PartitionOption()
			}

			p.SetState(1983)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(1995)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(1984)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(1985)
				p.SubpartitionDefinition()
			}
			p.SetState(1990)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(1986)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(1987)
					p.SubpartitionDefinition()
				}

				p.SetState(1992)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}
			{
				p.SetState(1993)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 4:
		localctx = NewPartitionListVectorContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(1997)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(1998)
			p.Uid()
		}
		{
			p.SetState(1999)
			p.Match(MySqlParserVALUES)
		}
		{
			p.SetState(2000)
			p.Match(MySqlParserIN)
		}
		{
			p.SetState(2001)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2002)
			p.PartitionDefinerVector()
		}
		p.SetState(2007)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2003)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2004)
				p.PartitionDefinerVector()
			}

			p.SetState(2009)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(2010)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(2014)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
			{
				p.SetState(2011)
				p.PartitionOption()
			}

			p.SetState(2016)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(2028)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(2017)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(2018)
				p.SubpartitionDefinition()
			}
			p.SetState(2023)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(2019)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(2020)
					p.SubpartitionDefinition()
				}

				p.SetState(2025)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}
			{
				p.SetState(2026)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 5:
		localctx = NewPartitionSimpleContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(2030)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2031)
			p.Uid()
		}
		p.SetState(2035)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
			{
				p.SetState(2032)
				p.PartitionOption()
			}

			p.SetState(2037)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(2049)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(2038)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(2039)
				p.SubpartitionDefinition()
			}
			p.SetState(2044)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(2040)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(2041)
					p.SubpartitionDefinition()
				}

				p.SetState(2046)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}
			{
				p.SetState(2047)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	}

	return localctx
}

// IPartitionDefinerAtomContext is an interface to support dynamic dispatch.
type IPartitionDefinerAtomContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionDefinerAtomContext differentiates from other interfaces.
	IsPartitionDefinerAtomContext()
}

type PartitionDefinerAtomContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionDefinerAtomContext() *PartitionDefinerAtomContext {
	var p = new(PartitionDefinerAtomContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionDefinerAtom
	return p
}

func (*PartitionDefinerAtomContext) IsPartitionDefinerAtomContext() {}

func NewPartitionDefinerAtomContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionDefinerAtomContext {
	var p = new(PartitionDefinerAtomContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionDefinerAtom

	return p
}

func (s *PartitionDefinerAtomContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionDefinerAtomContext) Constant() IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *PartitionDefinerAtomContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PartitionDefinerAtomContext) MAXVALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAXVALUE, 0)
}

func (s *PartitionDefinerAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionDefinerAtomContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PartitionDefinerAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionDefinerAtom(s)
	}
}

func (s *PartitionDefinerAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionDefinerAtom(s)
	}
}

func (p *MySqlParser) PartitionDefinerAtom() (localctx IPartitionDefinerAtomContext) {
	this := p
	_ = this

	localctx = NewPartitionDefinerAtomContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 108, MySqlParserRULE_partitionDefinerAtom)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2056)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 234, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(2053)
			p.Constant()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2054)
			p.expression(0)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(2055)
			p.Match(MySqlParserMAXVALUE)
		}

	}

	return localctx
}

// IPartitionDefinerVectorContext is an interface to support dynamic dispatch.
type IPartitionDefinerVectorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionDefinerVectorContext differentiates from other interfaces.
	IsPartitionDefinerVectorContext()
}

type PartitionDefinerVectorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionDefinerVectorContext() *PartitionDefinerVectorContext {
	var p = new(PartitionDefinerVectorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionDefinerVector
	return p
}

func (*PartitionDefinerVectorContext) IsPartitionDefinerVectorContext() {}

func NewPartitionDefinerVectorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionDefinerVectorContext {
	var p = new(PartitionDefinerVectorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionDefinerVector

	return p
}

func (s *PartitionDefinerVectorContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionDefinerVectorContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PartitionDefinerVectorContext) AllPartitionDefinerAtom() []IPartitionDefinerAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem())
	var tst = make([]IPartitionDefinerAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinerAtomContext)
		}
	}

	return tst
}

func (s *PartitionDefinerVectorContext) PartitionDefinerAtom(i int) IPartitionDefinerAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinerAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinerAtomContext)
}

func (s *PartitionDefinerVectorContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PartitionDefinerVectorContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionDefinerVectorContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionDefinerVectorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionDefinerVectorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PartitionDefinerVectorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionDefinerVector(s)
	}
}

func (s *PartitionDefinerVectorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionDefinerVector(s)
	}
}

func (p *MySqlParser) PartitionDefinerVector() (localctx IPartitionDefinerVectorContext) {
	this := p
	_ = this

	localctx = NewPartitionDefinerVectorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 110, MySqlParserRULE_partitionDefinerVector)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2058)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(2059)
		p.PartitionDefinerAtom()
	}
	p.SetState(2062)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for ok := true; ok; ok = _la == MySqlParserCOMMA {
		{
			p.SetState(2060)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(2061)
			p.PartitionDefinerAtom()
		}

		p.SetState(2064)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(2066)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// ISubpartitionDefinitionContext is an interface to support dynamic dispatch.
type ISubpartitionDefinitionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSubpartitionDefinitionContext differentiates from other interfaces.
	IsSubpartitionDefinitionContext()
}

type SubpartitionDefinitionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySubpartitionDefinitionContext() *SubpartitionDefinitionContext {
	var p = new(SubpartitionDefinitionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_subpartitionDefinition
	return p
}

func (*SubpartitionDefinitionContext) IsSubpartitionDefinitionContext() {}

func NewSubpartitionDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SubpartitionDefinitionContext {
	var p = new(SubpartitionDefinitionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_subpartitionDefinition

	return p
}

func (s *SubpartitionDefinitionContext) GetParser() antlr.Parser { return s.parser }

func (s *SubpartitionDefinitionContext) SUBPARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBPARTITION, 0)
}

func (s *SubpartitionDefinitionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SubpartitionDefinitionContext) AllPartitionOption() []IPartitionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem())
	var tst = make([]IPartitionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionOptionContext)
		}
	}

	return tst
}

func (s *SubpartitionDefinitionContext) PartitionOption(i int) IPartitionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionOptionContext)
}

func (s *SubpartitionDefinitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubpartitionDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SubpartitionDefinitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubpartitionDefinition(s)
	}
}

func (s *SubpartitionDefinitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubpartitionDefinition(s)
	}
}

func (p *MySqlParser) SubpartitionDefinition() (localctx ISubpartitionDefinitionContext) {
	this := p
	_ = this

	localctx = NewSubpartitionDefinitionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 112, MySqlParserRULE_subpartitionDefinition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2068)
		p.Match(MySqlParserSUBPARTITION)
	}
	{
		p.SetState(2069)
		p.Uid()
	}
	p.SetState(2073)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserDEFAULT || _la == MySqlParserINDEX || _la == MySqlParserCOMMENT || _la == MySqlParserDATA || _la == MySqlParserENGINE || (((_la-478)&-(0x1f+1)) == 0 && ((1<<uint((_la-478)))&((1<<(MySqlParserMAX_ROWS-478))|(1<<(MySqlParserMIN_ROWS-478))|(1<<(MySqlParserNODEGROUP-478)))) != 0) || _la == MySqlParserSTORAGE || _la == MySqlParserTABLESPACE {
		{
			p.SetState(2070)
			p.PartitionOption()
		}

		p.SetState(2075)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IPartitionOptionContext is an interface to support dynamic dispatch.
type IPartitionOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionOptionContext differentiates from other interfaces.
	IsPartitionOptionContext()
}

type PartitionOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionOptionContext() *PartitionOptionContext {
	var p = new(PartitionOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionOption
	return p
}

func (*PartitionOptionContext) IsPartitionOptionContext() {}

func NewPartitionOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionOptionContext {
	var p = new(PartitionOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionOption

	return p
}

func (s *PartitionOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionOptionContext) CopyFrom(ctx *PartitionOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *PartitionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PartitionOptionCommentContext struct {
	*PartitionOptionContext
	comment antlr.Token
}

func NewPartitionOptionCommentContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionCommentContext {
	var p = new(PartitionOptionCommentContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionCommentContext) GetComment() antlr.Token { return s.comment }

func (s *PartitionOptionCommentContext) SetComment(v antlr.Token) { s.comment = v }

func (s *PartitionOptionCommentContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionCommentContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *PartitionOptionCommentContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PartitionOptionCommentContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionCommentContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionComment(s)
	}
}

func (s *PartitionOptionCommentContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionComment(s)
	}
}

type PartitionOptionNodeGroupContext struct {
	*PartitionOptionContext
	nodegroup IUidContext
}

func NewPartitionOptionNodeGroupContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionNodeGroupContext {
	var p = new(PartitionOptionNodeGroupContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionNodeGroupContext) GetNodegroup() IUidContext { return s.nodegroup }

func (s *PartitionOptionNodeGroupContext) SetNodegroup(v IUidContext) { s.nodegroup = v }

func (s *PartitionOptionNodeGroupContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionNodeGroupContext) NODEGROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserNODEGROUP, 0)
}

func (s *PartitionOptionNodeGroupContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionOptionNodeGroupContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionNodeGroupContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionNodeGroup(s)
	}
}

func (s *PartitionOptionNodeGroupContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionNodeGroup(s)
	}
}

type PartitionOptionIndexDirectoryContext struct {
	*PartitionOptionContext
	indexDirectory antlr.Token
}

func NewPartitionOptionIndexDirectoryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionIndexDirectoryContext {
	var p = new(PartitionOptionIndexDirectoryContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionIndexDirectoryContext) GetIndexDirectory() antlr.Token {
	return s.indexDirectory
}

func (s *PartitionOptionIndexDirectoryContext) SetIndexDirectory(v antlr.Token) { s.indexDirectory = v }

func (s *PartitionOptionIndexDirectoryContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionIndexDirectoryContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *PartitionOptionIndexDirectoryContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *PartitionOptionIndexDirectoryContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PartitionOptionIndexDirectoryContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionIndexDirectoryContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionIndexDirectory(s)
	}
}

func (s *PartitionOptionIndexDirectoryContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionIndexDirectory(s)
	}
}

type PartitionOptionMaxRowsContext struct {
	*PartitionOptionContext
	maxRows IDecimalLiteralContext
}

func NewPartitionOptionMaxRowsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionMaxRowsContext {
	var p = new(PartitionOptionMaxRowsContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionMaxRowsContext) GetMaxRows() IDecimalLiteralContext { return s.maxRows }

func (s *PartitionOptionMaxRowsContext) SetMaxRows(v IDecimalLiteralContext) { s.maxRows = v }

func (s *PartitionOptionMaxRowsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionMaxRowsContext) MAX_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_ROWS, 0)
}

func (s *PartitionOptionMaxRowsContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *PartitionOptionMaxRowsContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionMaxRowsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionMaxRows(s)
	}
}

func (s *PartitionOptionMaxRowsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionMaxRows(s)
	}
}

type PartitionOptionTablespaceContext struct {
	*PartitionOptionContext
	tablespace IUidContext
}

func NewPartitionOptionTablespaceContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionTablespaceContext {
	var p = new(PartitionOptionTablespaceContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionTablespaceContext) GetTablespace() IUidContext { return s.tablespace }

func (s *PartitionOptionTablespaceContext) SetTablespace(v IUidContext) { s.tablespace = v }

func (s *PartitionOptionTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *PartitionOptionTablespaceContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PartitionOptionTablespaceContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionTablespace(s)
	}
}

func (s *PartitionOptionTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionTablespace(s)
	}
}

type PartitionOptionEngineContext struct {
	*PartitionOptionContext
}

func NewPartitionOptionEngineContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionEngineContext {
	var p = new(PartitionOptionEngineContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionEngineContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionEngineContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *PartitionOptionEngineContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *PartitionOptionEngineContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *PartitionOptionEngineContext) STORAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORAGE, 0)
}

func (s *PartitionOptionEngineContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionEngineContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionEngine(s)
	}
}

func (s *PartitionOptionEngineContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionEngine(s)
	}
}

type PartitionOptionMinRowsContext struct {
	*PartitionOptionContext
	minRows IDecimalLiteralContext
}

func NewPartitionOptionMinRowsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionMinRowsContext {
	var p = new(PartitionOptionMinRowsContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionMinRowsContext) GetMinRows() IDecimalLiteralContext { return s.minRows }

func (s *PartitionOptionMinRowsContext) SetMinRows(v IDecimalLiteralContext) { s.minRows = v }

func (s *PartitionOptionMinRowsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionMinRowsContext) MIN_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIN_ROWS, 0)
}

func (s *PartitionOptionMinRowsContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *PartitionOptionMinRowsContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionMinRowsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionMinRows(s)
	}
}

func (s *PartitionOptionMinRowsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionMinRows(s)
	}
}

type PartitionOptionDataDirectoryContext struct {
	*PartitionOptionContext
	dataDirectory antlr.Token
}

func NewPartitionOptionDataDirectoryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PartitionOptionDataDirectoryContext {
	var p = new(PartitionOptionDataDirectoryContext)

	p.PartitionOptionContext = NewEmptyPartitionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PartitionOptionContext))

	return p
}

func (s *PartitionOptionDataDirectoryContext) GetDataDirectory() antlr.Token { return s.dataDirectory }

func (s *PartitionOptionDataDirectoryContext) SetDataDirectory(v antlr.Token) { s.dataDirectory = v }

func (s *PartitionOptionDataDirectoryContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionOptionDataDirectoryContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *PartitionOptionDataDirectoryContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *PartitionOptionDataDirectoryContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PartitionOptionDataDirectoryContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PartitionOptionDataDirectoryContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionOptionDataDirectory(s)
	}
}

func (s *PartitionOptionDataDirectoryContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionOptionDataDirectory(s)
	}
}

func (p *MySqlParser) PartitionOption() (localctx IPartitionOptionContext) {
	this := p
	_ = this

	localctx = NewPartitionOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 114, MySqlParserRULE_partitionOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2124)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDEFAULT, MySqlParserENGINE, MySqlParserSTORAGE:
		localctx = NewPartitionOptionEngineContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(2077)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(2076)
				p.Match(MySqlParserDEFAULT)
			}

		}
		p.SetState(2080)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSTORAGE {
			{
				p.SetState(2079)
				p.Match(MySqlParserSTORAGE)
			}

		}
		{
			p.SetState(2082)
			p.Match(MySqlParserENGINE)
		}
		p.SetState(2084)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2083)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2086)
			p.EngineName()
		}

	case MySqlParserCOMMENT:
		localctx = NewPartitionOptionCommentContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2087)
			p.Match(MySqlParserCOMMENT)
		}
		p.SetState(2089)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2088)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2091)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PartitionOptionCommentContext).comment = _m
		}

	case MySqlParserDATA:
		localctx = NewPartitionOptionDataDirectoryContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(2092)
			p.Match(MySqlParserDATA)
		}
		{
			p.SetState(2093)
			p.Match(MySqlParserDIRECTORY)
		}
		p.SetState(2095)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2094)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2097)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PartitionOptionDataDirectoryContext).dataDirectory = _m
		}

	case MySqlParserINDEX:
		localctx = NewPartitionOptionIndexDirectoryContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(2098)
			p.Match(MySqlParserINDEX)
		}
		{
			p.SetState(2099)
			p.Match(MySqlParserDIRECTORY)
		}
		p.SetState(2101)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2100)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2103)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PartitionOptionIndexDirectoryContext).indexDirectory = _m
		}

	case MySqlParserMAX_ROWS:
		localctx = NewPartitionOptionMaxRowsContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(2104)
			p.Match(MySqlParserMAX_ROWS)
		}
		p.SetState(2106)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2105)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2108)

			var _x = p.DecimalLiteral()

			localctx.(*PartitionOptionMaxRowsContext).maxRows = _x
		}

	case MySqlParserMIN_ROWS:
		localctx = NewPartitionOptionMinRowsContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(2109)
			p.Match(MySqlParserMIN_ROWS)
		}
		p.SetState(2111)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2110)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2113)

			var _x = p.DecimalLiteral()

			localctx.(*PartitionOptionMinRowsContext).minRows = _x
		}

	case MySqlParserTABLESPACE:
		localctx = NewPartitionOptionTablespaceContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(2114)
			p.Match(MySqlParserTABLESPACE)
		}
		p.SetState(2116)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2115)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2118)

			var _x = p.Uid()

			localctx.(*PartitionOptionTablespaceContext).tablespace = _x
		}

	case MySqlParserNODEGROUP:
		localctx = NewPartitionOptionNodeGroupContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(2119)
			p.Match(MySqlParserNODEGROUP)
		}
		p.SetState(2121)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2120)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2123)

			var _x = p.Uid()

			localctx.(*PartitionOptionNodeGroupContext).nodegroup = _x
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IAlterDatabaseContext is an interface to support dynamic dispatch.
type IAlterDatabaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterDatabaseContext differentiates from other interfaces.
	IsAlterDatabaseContext()
}

type AlterDatabaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterDatabaseContext() *AlterDatabaseContext {
	var p = new(AlterDatabaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterDatabase
	return p
}

func (*AlterDatabaseContext) IsAlterDatabaseContext() {}

func NewAlterDatabaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterDatabaseContext {
	var p = new(AlterDatabaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterDatabase

	return p
}

func (s *AlterDatabaseContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterDatabaseContext) CopyFrom(ctx *AlterDatabaseContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *AlterDatabaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterDatabaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type AlterUpgradeNameContext struct {
	*AlterDatabaseContext
	dbFormat antlr.Token
}

func NewAlterUpgradeNameContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterUpgradeNameContext {
	var p = new(AlterUpgradeNameContext)

	p.AlterDatabaseContext = NewEmptyAlterDatabaseContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterDatabaseContext))

	return p
}

func (s *AlterUpgradeNameContext) GetDbFormat() antlr.Token { return s.dbFormat }

func (s *AlterUpgradeNameContext) SetDbFormat(v antlr.Token) { s.dbFormat = v }

func (s *AlterUpgradeNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterUpgradeNameContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterUpgradeNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterUpgradeNameContext) UPGRADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPGRADE, 0)
}

func (s *AlterUpgradeNameContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *AlterUpgradeNameContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *AlterUpgradeNameContext) NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserNAME, 0)
}

func (s *AlterUpgradeNameContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *AlterUpgradeNameContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *AlterUpgradeNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterUpgradeName(s)
	}
}

func (s *AlterUpgradeNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterUpgradeName(s)
	}
}

type AlterSimpleDatabaseContext struct {
	*AlterDatabaseContext
	dbFormat antlr.Token
}

func NewAlterSimpleDatabaseContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterSimpleDatabaseContext {
	var p = new(AlterSimpleDatabaseContext)

	p.AlterDatabaseContext = NewEmptyAlterDatabaseContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterDatabaseContext))

	return p
}

func (s *AlterSimpleDatabaseContext) GetDbFormat() antlr.Token { return s.dbFormat }

func (s *AlterSimpleDatabaseContext) SetDbFormat(v antlr.Token) { s.dbFormat = v }

func (s *AlterSimpleDatabaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterSimpleDatabaseContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterSimpleDatabaseContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *AlterSimpleDatabaseContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *AlterSimpleDatabaseContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterSimpleDatabaseContext) AllCreateDatabaseOption() []ICreateDatabaseOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICreateDatabaseOptionContext)(nil)).Elem())
	var tst = make([]ICreateDatabaseOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICreateDatabaseOptionContext)
		}
	}

	return tst
}

func (s *AlterSimpleDatabaseContext) CreateDatabaseOption(i int) ICreateDatabaseOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICreateDatabaseOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICreateDatabaseOptionContext)
}

func (s *AlterSimpleDatabaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterSimpleDatabase(s)
	}
}

func (s *AlterSimpleDatabaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterSimpleDatabase(s)
	}
}

func (p *MySqlParser) AlterDatabase() (localctx IAlterDatabaseContext) {
	this := p
	_ = this

	localctx = NewAlterDatabaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 116, MySqlParserRULE_alterDatabase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2144)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 250, p.GetParserRuleContext()) {
	case 1:
		localctx = NewAlterSimpleDatabaseContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(2126)
			p.Match(MySqlParserALTER)
		}
		{
			p.SetState(2127)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterSimpleDatabaseContext).dbFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDATABASE || _la == MySqlParserSCHEMA) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterSimpleDatabaseContext).dbFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(2129)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 248, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(2128)
				p.Uid()
			}

		}
		p.SetState(2132)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = (((_la-24)&-(0x1f+1)) == 0 && ((1<<uint((_la-24)))&((1<<(MySqlParserCHARACTER-24))|(1<<(MySqlParserCOLLATE-24))|(1<<(MySqlParserDEFAULT-24)))) != 0) || _la == MySqlParserCHAR || _la == MySqlParserCHARSET {
			{
				p.SetState(2131)
				p.CreateDatabaseOption()
			}

			p.SetState(2134)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewAlterUpgradeNameContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2136)
			p.Match(MySqlParserALTER)
		}
		{
			p.SetState(2137)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterUpgradeNameContext).dbFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDATABASE || _la == MySqlParserSCHEMA) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterUpgradeNameContext).dbFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(2138)
			p.Uid()
		}
		{
			p.SetState(2139)
			p.Match(MySqlParserUPGRADE)
		}
		{
			p.SetState(2140)
			p.Match(MySqlParserDATA)
		}
		{
			p.SetState(2141)
			p.Match(MySqlParserDIRECTORY)
		}
		{
			p.SetState(2142)
			p.Match(MySqlParserNAME)
		}

	}

	return localctx
}

// IAlterEventContext is an interface to support dynamic dispatch.
type IAlterEventContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterEventContext differentiates from other interfaces.
	IsAlterEventContext()
}

type AlterEventContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterEventContext() *AlterEventContext {
	var p = new(AlterEventContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterEvent
	return p
}

func (*AlterEventContext) IsAlterEventContext() {}

func NewAlterEventContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterEventContext {
	var p = new(AlterEventContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterEvent

	return p
}

func (s *AlterEventContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterEventContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterEventContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *AlterEventContext) AllFullId() []IFullIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullIdContext)(nil)).Elem())
	var tst = make([]IFullIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullIdContext)
		}
	}

	return tst
}

func (s *AlterEventContext) FullId(i int) IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *AlterEventContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *AlterEventContext) AllON() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserON)
}

func (s *AlterEventContext) ON(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserON, i)
}

func (s *AlterEventContext) SCHEDULE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEDULE, 0)
}

func (s *AlterEventContext) ScheduleExpression() IScheduleExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IScheduleExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IScheduleExpressionContext)
}

func (s *AlterEventContext) COMPLETION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPLETION, 0)
}

func (s *AlterEventContext) PRESERVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRESERVE, 0)
}

func (s *AlterEventContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *AlterEventContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *AlterEventContext) EnableType() IEnableTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEnableTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEnableTypeContext)
}

func (s *AlterEventContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *AlterEventContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *AlterEventContext) DO() antlr.TerminalNode {
	return s.GetToken(MySqlParserDO, 0)
}

func (s *AlterEventContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *AlterEventContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *AlterEventContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterEventContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterEventContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterEvent(s)
	}
}

func (s *AlterEventContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterEvent(s)
	}
}

func (p *MySqlParser) AlterEvent() (localctx IAlterEventContext) {
	this := p
	_ = this

	localctx = NewAlterEventContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 118, MySqlParserRULE_alterEvent)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2146)
		p.Match(MySqlParserALTER)
	}
	p.SetState(2148)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(2147)
			p.OwnerStatement()
		}

	}
	{
		p.SetState(2150)
		p.Match(MySqlParserEVENT)
	}
	{
		p.SetState(2151)
		p.FullId()
	}
	p.SetState(2155)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 252, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2152)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(2153)
			p.Match(MySqlParserSCHEDULE)
		}
		{
			p.SetState(2154)
			p.ScheduleExpression()
		}

	}
	p.SetState(2163)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserON {
		{
			p.SetState(2157)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(2158)
			p.Match(MySqlParserCOMPLETION)
		}
		p.SetState(2160)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNOT {
			{
				p.SetState(2159)
				p.Match(MySqlParserNOT)
			}

		}
		{
			p.SetState(2162)
			p.Match(MySqlParserPRESERVE)
		}

	}
	p.SetState(2168)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 255, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2165)
			p.Match(MySqlParserRENAME)
		}
		{
			p.SetState(2166)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(2167)
			p.FullId()
		}

	}
	p.SetState(2171)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDISABLE || _la == MySqlParserENABLE {
		{
			p.SetState(2170)
			p.EnableType()
		}

	}
	p.SetState(2175)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMENT {
		{
			p.SetState(2173)
			p.Match(MySqlParserCOMMENT)
		}
		{
			p.SetState(2174)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	}
	p.SetState(2179)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 258, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2177)
			p.Match(MySqlParserDO)
		}
		{
			p.SetState(2178)
			p.RoutineBody()
		}

	}

	return localctx
}

// IAlterFunctionContext is an interface to support dynamic dispatch.
type IAlterFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterFunctionContext differentiates from other interfaces.
	IsAlterFunctionContext()
}

type AlterFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterFunctionContext() *AlterFunctionContext {
	var p = new(AlterFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterFunction
	return p
}

func (*AlterFunctionContext) IsAlterFunctionContext() {}

func NewAlterFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterFunctionContext {
	var p = new(AlterFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterFunction

	return p
}

func (s *AlterFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterFunctionContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterFunctionContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *AlterFunctionContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *AlterFunctionContext) AllRoutineOption() []IRoutineOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem())
	var tst = make([]IRoutineOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRoutineOptionContext)
		}
	}

	return tst
}

func (s *AlterFunctionContext) RoutineOption(i int) IRoutineOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRoutineOptionContext)
}

func (s *AlterFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterFunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterFunction(s)
	}
}

func (s *AlterFunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterFunction(s)
	}
}

func (p *MySqlParser) AlterFunction() (localctx IAlterFunctionContext) {
	this := p
	_ = this

	localctx = NewAlterFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 120, MySqlParserRULE_alterFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2181)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2182)
		p.Match(MySqlParserFUNCTION)
	}
	{
		p.SetState(2183)
		p.FullId()
	}
	p.SetState(2187)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserDETERMINISTIC || (((_la-105)&-(0x1f+1)) == 0 && ((1<<uint((_la-105)))&((1<<(MySqlParserMODIFIES-105))|(1<<(MySqlParserNOT-105))|(1<<(MySqlParserREADS-105)))) != 0) || _la == MySqlParserSQL || _la == MySqlParserCOMMENT || _la == MySqlParserCONTAINS || _la == MySqlParserLANGUAGE || _la == MySqlParserNO {
		{
			p.SetState(2184)
			p.RoutineOption()
		}

		p.SetState(2189)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IAlterInstanceContext is an interface to support dynamic dispatch.
type IAlterInstanceContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterInstanceContext differentiates from other interfaces.
	IsAlterInstanceContext()
}

type AlterInstanceContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterInstanceContext() *AlterInstanceContext {
	var p = new(AlterInstanceContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterInstance
	return p
}

func (*AlterInstanceContext) IsAlterInstanceContext() {}

func NewAlterInstanceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterInstanceContext {
	var p = new(AlterInstanceContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterInstance

	return p
}

func (s *AlterInstanceContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterInstanceContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterInstanceContext) INSTANCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSTANCE, 0)
}

func (s *AlterInstanceContext) ROTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROTATE, 0)
}

func (s *AlterInstanceContext) INNODB() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNODB, 0)
}

func (s *AlterInstanceContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *AlterInstanceContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterInstanceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterInstanceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterInstanceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterInstance(s)
	}
}

func (s *AlterInstanceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterInstance(s)
	}
}

func (p *MySqlParser) AlterInstance() (localctx IAlterInstanceContext) {
	this := p
	_ = this

	localctx = NewAlterInstanceContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 122, MySqlParserRULE_alterInstance)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2190)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2191)
		p.Match(MySqlParserINSTANCE)
	}
	{
		p.SetState(2192)
		p.Match(MySqlParserROTATE)
	}
	{
		p.SetState(2193)
		p.Match(MySqlParserINNODB)
	}
	{
		p.SetState(2194)
		p.Match(MySqlParserMASTER)
	}
	{
		p.SetState(2195)
		p.Match(MySqlParserKEY)
	}

	return localctx
}

// IAlterLogfileGroupContext is an interface to support dynamic dispatch.
type IAlterLogfileGroupContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterLogfileGroupContext differentiates from other interfaces.
	IsAlterLogfileGroupContext()
}

type AlterLogfileGroupContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterLogfileGroupContext() *AlterLogfileGroupContext {
	var p = new(AlterLogfileGroupContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterLogfileGroup
	return p
}

func (*AlterLogfileGroupContext) IsAlterLogfileGroupContext() {}

func NewAlterLogfileGroupContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterLogfileGroupContext {
	var p = new(AlterLogfileGroupContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterLogfileGroup

	return p
}

func (s *AlterLogfileGroupContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterLogfileGroupContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterLogfileGroupContext) LOGFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGFILE, 0)
}

func (s *AlterLogfileGroupContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *AlterLogfileGroupContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterLogfileGroupContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterLogfileGroupContext) UNDOFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDOFILE, 0)
}

func (s *AlterLogfileGroupContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *AlterLogfileGroupContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *AlterLogfileGroupContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *AlterLogfileGroupContext) INITIAL_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINITIAL_SIZE, 0)
}

func (s *AlterLogfileGroupContext) FileSizeLiteral() IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *AlterLogfileGroupContext) WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT, 0)
}

func (s *AlterLogfileGroupContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *AlterLogfileGroupContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *AlterLogfileGroupContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterLogfileGroupContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterLogfileGroupContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterLogfileGroup(s)
	}
}

func (s *AlterLogfileGroupContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterLogfileGroup(s)
	}
}

func (p *MySqlParser) AlterLogfileGroup() (localctx IAlterLogfileGroupContext) {
	this := p
	_ = this

	localctx = NewAlterLogfileGroupContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 124, MySqlParserRULE_alterLogfileGroup)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2197)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2198)
		p.Match(MySqlParserLOGFILE)
	}
	{
		p.SetState(2199)
		p.Match(MySqlParserGROUP)
	}
	{
		p.SetState(2200)
		p.Uid()
	}
	{
		p.SetState(2201)
		p.Match(MySqlParserADD)
	}
	{
		p.SetState(2202)
		p.Match(MySqlParserUNDOFILE)
	}
	{
		p.SetState(2203)
		p.Match(MySqlParserSTRING_LITERAL)
	}
	p.SetState(2209)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINITIAL_SIZE {
		{
			p.SetState(2204)
			p.Match(MySqlParserINITIAL_SIZE)
		}
		p.SetState(2206)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2205)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2208)
			p.FileSizeLiteral()
		}

	}
	p.SetState(2212)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWAIT {
		{
			p.SetState(2211)
			p.Match(MySqlParserWAIT)
		}

	}
	{
		p.SetState(2214)
		p.Match(MySqlParserENGINE)
	}
	p.SetState(2216)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEQUAL_SYMBOL {
		{
			p.SetState(2215)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	}
	{
		p.SetState(2218)
		p.EngineName()
	}

	return localctx
}

// IAlterProcedureContext is an interface to support dynamic dispatch.
type IAlterProcedureContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterProcedureContext differentiates from other interfaces.
	IsAlterProcedureContext()
}

type AlterProcedureContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterProcedureContext() *AlterProcedureContext {
	var p = new(AlterProcedureContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterProcedure
	return p
}

func (*AlterProcedureContext) IsAlterProcedureContext() {}

func NewAlterProcedureContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterProcedureContext {
	var p = new(AlterProcedureContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterProcedure

	return p
}

func (s *AlterProcedureContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterProcedureContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterProcedureContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *AlterProcedureContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *AlterProcedureContext) AllRoutineOption() []IRoutineOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem())
	var tst = make([]IRoutineOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRoutineOptionContext)
		}
	}

	return tst
}

func (s *AlterProcedureContext) RoutineOption(i int) IRoutineOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRoutineOptionContext)
}

func (s *AlterProcedureContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterProcedureContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterProcedureContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterProcedure(s)
	}
}

func (s *AlterProcedureContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterProcedure(s)
	}
}

func (p *MySqlParser) AlterProcedure() (localctx IAlterProcedureContext) {
	this := p
	_ = this

	localctx = NewAlterProcedureContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 126, MySqlParserRULE_alterProcedure)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2220)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2221)
		p.Match(MySqlParserPROCEDURE)
	}
	{
		p.SetState(2222)
		p.FullId()
	}
	p.SetState(2226)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserDETERMINISTIC || (((_la-105)&-(0x1f+1)) == 0 && ((1<<uint((_la-105)))&((1<<(MySqlParserMODIFIES-105))|(1<<(MySqlParserNOT-105))|(1<<(MySqlParserREADS-105)))) != 0) || _la == MySqlParserSQL || _la == MySqlParserCOMMENT || _la == MySqlParserCONTAINS || _la == MySqlParserLANGUAGE || _la == MySqlParserNO {
		{
			p.SetState(2223)
			p.RoutineOption()
		}

		p.SetState(2228)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IAlterServerContext is an interface to support dynamic dispatch.
type IAlterServerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterServerContext differentiates from other interfaces.
	IsAlterServerContext()
}

type AlterServerContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterServerContext() *AlterServerContext {
	var p = new(AlterServerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterServer
	return p
}

func (*AlterServerContext) IsAlterServerContext() {}

func NewAlterServerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterServerContext {
	var p = new(AlterServerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterServer

	return p
}

func (s *AlterServerContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterServerContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterServerContext) SERVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERVER, 0)
}

func (s *AlterServerContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterServerContext) OPTIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIONS, 0)
}

func (s *AlterServerContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterServerContext) AllServerOption() []IServerOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IServerOptionContext)(nil)).Elem())
	var tst = make([]IServerOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IServerOptionContext)
		}
	}

	return tst
}

func (s *AlterServerContext) ServerOption(i int) IServerOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IServerOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IServerOptionContext)
}

func (s *AlterServerContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterServerContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterServerContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterServerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterServerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterServerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterServer(s)
	}
}

func (s *AlterServerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterServer(s)
	}
}

func (p *MySqlParser) AlterServer() (localctx IAlterServerContext) {
	this := p
	_ = this

	localctx = NewAlterServerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 128, MySqlParserRULE_alterServer)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2229)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2230)
		p.Match(MySqlParserSERVER)
	}
	{
		p.SetState(2231)
		p.Uid()
	}
	{
		p.SetState(2232)
		p.Match(MySqlParserOPTIONS)
	}
	{
		p.SetState(2233)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(2234)
		p.ServerOption()
	}
	p.SetState(2239)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(2235)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(2236)
			p.ServerOption()
		}

		p.SetState(2241)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(2242)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IAlterTableContext is an interface to support dynamic dispatch.
type IAlterTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIntimeAction returns the intimeAction token.
	GetIntimeAction() antlr.Token

	// SetIntimeAction sets the intimeAction token.
	SetIntimeAction(antlr.Token)

	// IsAlterTableContext differentiates from other interfaces.
	IsAlterTableContext()
}

type AlterTableContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	intimeAction antlr.Token
}

func NewEmptyAlterTableContext() *AlterTableContext {
	var p = new(AlterTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterTable
	return p
}

func (*AlterTableContext) IsAlterTableContext() {}

func NewAlterTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterTableContext {
	var p = new(AlterTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterTable

	return p
}

func (s *AlterTableContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterTableContext) GetIntimeAction() antlr.Token { return s.intimeAction }

func (s *AlterTableContext) SetIntimeAction(v antlr.Token) { s.intimeAction = v }

func (s *AlterTableContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *AlterTableContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *AlterTableContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *AlterTableContext) AllAlterSpecification() []IAlterSpecificationContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IAlterSpecificationContext)(nil)).Elem())
	var tst = make([]IAlterSpecificationContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IAlterSpecificationContext)
		}
	}

	return tst
}

func (s *AlterTableContext) AlterSpecification(i int) IAlterSpecificationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAlterSpecificationContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IAlterSpecificationContext)
}

func (s *AlterTableContext) PartitionDefinitions() IPartitionDefinitionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionsContext)
}

func (s *AlterTableContext) ONLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLINE, 0)
}

func (s *AlterTableContext) OFFLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFLINE, 0)
}

func (s *AlterTableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterTableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterTable(s)
	}
}

func (s *AlterTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterTable(s)
	}
}

func (p *MySqlParser) AlterTable() (localctx IAlterTableContext) {
	this := p
	_ = this

	localctx = NewAlterTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 130, MySqlParserRULE_alterTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2244)
		p.Match(MySqlParserALTER)
	}
	p.SetState(2246)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserOFFLINE || _la == MySqlParserONLINE {
		{
			p.SetState(2245)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterTableContext).intimeAction = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserOFFLINE || _la == MySqlParserONLINE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterTableContext).intimeAction = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2249)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(2248)
			p.Match(MySqlParserIGNORE)
		}

	}
	{
		p.SetState(2251)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(2252)
		p.TableName()
	}
	p.SetState(2261)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 269, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2253)
			p.AlterSpecification()
		}
		p.SetState(2258)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2254)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2255)
				p.AlterSpecification()
			}

			p.SetState(2260)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}
	p.SetState(2264)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(2263)
			p.PartitionDefinitions()
		}

	}

	return localctx
}

// IAlterTablespaceContext is an interface to support dynamic dispatch.
type IAlterTablespaceContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetObjectAction returns the objectAction token.
	GetObjectAction() antlr.Token

	// SetObjectAction sets the objectAction token.
	SetObjectAction(antlr.Token)

	// IsAlterTablespaceContext differentiates from other interfaces.
	IsAlterTablespaceContext()
}

type AlterTablespaceContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	objectAction antlr.Token
}

func NewEmptyAlterTablespaceContext() *AlterTablespaceContext {
	var p = new(AlterTablespaceContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterTablespace
	return p
}

func (*AlterTablespaceContext) IsAlterTablespaceContext() {}

func NewAlterTablespaceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterTablespaceContext {
	var p = new(AlterTablespaceContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterTablespace

	return p
}

func (s *AlterTablespaceContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterTablespaceContext) GetObjectAction() antlr.Token { return s.objectAction }

func (s *AlterTablespaceContext) SetObjectAction(v antlr.Token) { s.objectAction = v }

func (s *AlterTablespaceContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *AlterTablespaceContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterTablespaceContext) DATAFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATAFILE, 0)
}

func (s *AlterTablespaceContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *AlterTablespaceContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *AlterTablespaceContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *AlterTablespaceContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterTablespaceContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterTablespaceContext) INITIAL_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINITIAL_SIZE, 0)
}

func (s *AlterTablespaceContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *AlterTablespaceContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *AlterTablespaceContext) FileSizeLiteral() IFileSizeLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFileSizeLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFileSizeLiteralContext)
}

func (s *AlterTablespaceContext) WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT, 0)
}

func (s *AlterTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterTablespaceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterTablespace(s)
	}
}

func (s *AlterTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterTablespace(s)
	}
}

func (p *MySqlParser) AlterTablespace() (localctx IAlterTablespaceContext) {
	this := p
	_ = this

	localctx = NewAlterTablespaceContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 132, MySqlParserRULE_alterTablespace)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2266)
		p.Match(MySqlParserALTER)
	}
	{
		p.SetState(2267)
		p.Match(MySqlParserTABLESPACE)
	}
	{
		p.SetState(2268)
		p.Uid()
	}
	{
		p.SetState(2269)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*AlterTablespaceContext).objectAction = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserADD || _la == MySqlParserDROP) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*AlterTablespaceContext).objectAction = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(2270)
		p.Match(MySqlParserDATAFILE)
	}
	{
		p.SetState(2271)
		p.Match(MySqlParserSTRING_LITERAL)
	}
	p.SetState(2275)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINITIAL_SIZE {
		{
			p.SetState(2272)
			p.Match(MySqlParserINITIAL_SIZE)
		}
		{
			p.SetState(2273)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(2274)
			p.FileSizeLiteral()
		}

	}
	p.SetState(2278)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWAIT {
		{
			p.SetState(2277)
			p.Match(MySqlParserWAIT)
		}

	}
	{
		p.SetState(2280)
		p.Match(MySqlParserENGINE)
	}
	p.SetState(2282)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEQUAL_SYMBOL {
		{
			p.SetState(2281)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	}
	{
		p.SetState(2284)
		p.EngineName()
	}

	return localctx
}

// IAlterViewContext is an interface to support dynamic dispatch.
type IAlterViewContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetAlgType returns the algType token.
	GetAlgType() antlr.Token

	// GetSecContext returns the secContext token.
	GetSecContext() antlr.Token

	// GetCheckOpt returns the checkOpt token.
	GetCheckOpt() antlr.Token

	// SetAlgType sets the algType token.
	SetAlgType(antlr.Token)

	// SetSecContext sets the secContext token.
	SetSecContext(antlr.Token)

	// SetCheckOpt sets the checkOpt token.
	SetCheckOpt(antlr.Token)

	// IsAlterViewContext differentiates from other interfaces.
	IsAlterViewContext()
}

type AlterViewContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	algType    antlr.Token
	secContext antlr.Token
	checkOpt   antlr.Token
}

func NewEmptyAlterViewContext() *AlterViewContext {
	var p = new(AlterViewContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterView
	return p
}

func (*AlterViewContext) IsAlterViewContext() {}

func NewAlterViewContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterViewContext {
	var p = new(AlterViewContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterView

	return p
}

func (s *AlterViewContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterViewContext) GetAlgType() antlr.Token { return s.algType }

func (s *AlterViewContext) GetSecContext() antlr.Token { return s.secContext }

func (s *AlterViewContext) GetCheckOpt() antlr.Token { return s.checkOpt }

func (s *AlterViewContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *AlterViewContext) SetSecContext(v antlr.Token) { s.secContext = v }

func (s *AlterViewContext) SetCheckOpt(v antlr.Token) { s.checkOpt = v }

func (s *AlterViewContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterViewContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *AlterViewContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *AlterViewContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *AlterViewContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *AlterViewContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *AlterViewContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *AlterViewContext) OwnerStatement() IOwnerStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOwnerStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOwnerStatementContext)
}

func (s *AlterViewContext) SQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL, 0)
}

func (s *AlterViewContext) SECURITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECURITY, 0)
}

func (s *AlterViewContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterViewContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterViewContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterViewContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *AlterViewContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *AlterViewContext) OPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, 0)
}

func (s *AlterViewContext) UNDEFINED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDEFINED, 0)
}

func (s *AlterViewContext) MERGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMERGE, 0)
}

func (s *AlterViewContext) TEMPTABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPTABLE, 0)
}

func (s *AlterViewContext) DEFINER() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFINER, 0)
}

func (s *AlterViewContext) INVOKER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVOKER, 0)
}

func (s *AlterViewContext) CASCADED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADED, 0)
}

func (s *AlterViewContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *AlterViewContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterViewContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AlterViewContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterView(s)
	}
}

func (s *AlterViewContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterView(s)
	}
}

func (p *MySqlParser) AlterView() (localctx IAlterViewContext) {
	this := p
	_ = this

	localctx = NewAlterViewContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 134, MySqlParserRULE_alterView)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2286)
		p.Match(MySqlParserALTER)
	}
	p.SetState(2290)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserALGORITHM {
		{
			p.SetState(2287)
			p.Match(MySqlParserALGORITHM)
		}
		{
			p.SetState(2288)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(2289)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterViewContext).algType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserMERGE || _la == MySqlParserTEMPTABLE || _la == MySqlParserUNDEFINED) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterViewContext).algType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2293)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFINER {
		{
			p.SetState(2292)
			p.OwnerStatement()
		}

	}
	p.SetState(2298)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserSQL {
		{
			p.SetState(2295)
			p.Match(MySqlParserSQL)
		}
		{
			p.SetState(2296)
			p.Match(MySqlParserSECURITY)
		}
		{
			p.SetState(2297)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterViewContext).secContext = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFINER || _la == MySqlParserINVOKER) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterViewContext).secContext = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(2300)
		p.Match(MySqlParserVIEW)
	}
	{
		p.SetState(2301)
		p.FullId()
	}
	p.SetState(2306)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLR_BRACKET {
		{
			p.SetState(2302)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2303)
			p.UidList()
		}
		{
			p.SetState(2304)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	{
		p.SetState(2308)
		p.Match(MySqlParserAS)
	}
	{
		p.SetState(2309)
		p.SelectStatement()
	}
	p.SetState(2316)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWITH {
		{
			p.SetState(2310)
			p.Match(MySqlParserWITH)
		}
		p.SetState(2312)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCASCADED || _la == MySqlParserLOCAL {
			{
				p.SetState(2311)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AlterViewContext).checkOpt = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserCASCADED || _la == MySqlParserLOCAL) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AlterViewContext).checkOpt = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(2314)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(2315)
			p.Match(MySqlParserOPTION)
		}

	}

	return localctx
}

// IAlterSpecificationContext is an interface to support dynamic dispatch.
type IAlterSpecificationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterSpecificationContext differentiates from other interfaces.
	IsAlterSpecificationContext()
}

type AlterSpecificationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterSpecificationContext() *AlterSpecificationContext {
	var p = new(AlterSpecificationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterSpecification
	return p
}

func (*AlterSpecificationContext) IsAlterSpecificationContext() {}

func NewAlterSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterSpecificationContext {
	var p = new(AlterSpecificationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterSpecification

	return p
}

func (s *AlterSpecificationContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterSpecificationContext) CopyFrom(ctx *AlterSpecificationContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *AlterSpecificationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type AlterByDisableKeysContext struct {
	*AlterSpecificationContext
}

func NewAlterByDisableKeysContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDisableKeysContext {
	var p = new(AlterByDisableKeysContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDisableKeysContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDisableKeysContext) DISABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISABLE, 0)
}

func (s *AlterByDisableKeysContext) KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEYS, 0)
}

func (s *AlterByDisableKeysContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDisableKeys(s)
	}
}

func (s *AlterByDisableKeysContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDisableKeys(s)
	}
}

type AlterByDefaultCharsetContext struct {
	*AlterSpecificationContext
}

func NewAlterByDefaultCharsetContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDefaultCharsetContext {
	var p = new(AlterByDefaultCharsetContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDefaultCharsetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDefaultCharsetContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *AlterByDefaultCharsetContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *AlterByDefaultCharsetContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *AlterByDefaultCharsetContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *AlterByDefaultCharsetContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *AlterByDefaultCharsetContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *AlterByDefaultCharsetContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *AlterByDefaultCharsetContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *AlterByDefaultCharsetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDefaultCharset(s)
	}
}

func (s *AlterByDefaultCharsetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDefaultCharset(s)
	}
}

type AlterByRenameColumnContext struct {
	*AlterSpecificationContext
	oldColumn IUidContext
	newColumn IUidContext
}

func NewAlterByRenameColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRenameColumnContext {
	var p = new(AlterByRenameColumnContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRenameColumnContext) GetOldColumn() IUidContext { return s.oldColumn }

func (s *AlterByRenameColumnContext) GetNewColumn() IUidContext { return s.newColumn }

func (s *AlterByRenameColumnContext) SetOldColumn(v IUidContext) { s.oldColumn = v }

func (s *AlterByRenameColumnContext) SetNewColumn(v IUidContext) { s.newColumn = v }

func (s *AlterByRenameColumnContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRenameColumnContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *AlterByRenameColumnContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByRenameColumnContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *AlterByRenameColumnContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByRenameColumnContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByRenameColumnContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRenameColumn(s)
	}
}

func (s *AlterByRenameColumnContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRenameColumn(s)
	}
}

type AlterByConvertCharsetContext struct {
	*AlterSpecificationContext
}

func NewAlterByConvertCharsetContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByConvertCharsetContext {
	var p = new(AlterByConvertCharsetContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByConvertCharsetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByConvertCharsetContext) CONVERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONVERT, 0)
}

func (s *AlterByConvertCharsetContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *AlterByConvertCharsetContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *AlterByConvertCharsetContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *AlterByConvertCharsetContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *AlterByConvertCharsetContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *AlterByConvertCharsetContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *AlterByConvertCharsetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByConvertCharset(s)
	}
}

func (s *AlterByConvertCharsetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByConvertCharset(s)
	}
}

type AlterByAddPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByAddPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddPartitionContext {
	var p = new(AlterByAddPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddPartitionContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByAddPartitionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterByAddPartitionContext) AllPartitionDefinition() []IPartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem())
	var tst = make([]IPartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinitionContext)
		}
	}

	return tst
}

func (s *AlterByAddPartitionContext) PartitionDefinition(i int) IPartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionContext)
}

func (s *AlterByAddPartitionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterByAddPartitionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterByAddPartitionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterByAddPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddPartition(s)
	}
}

func (s *AlterByAddPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddPartition(s)
	}
}

type AlterByAddForeignKeyContext struct {
	*AlterSpecificationContext
	name      IUidContext
	indexName IUidContext
}

func NewAlterByAddForeignKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddForeignKeyContext {
	var p = new(AlterByAddForeignKeyContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddForeignKeyContext) GetName() IUidContext { return s.name }

func (s *AlterByAddForeignKeyContext) GetIndexName() IUidContext { return s.indexName }

func (s *AlterByAddForeignKeyContext) SetName(v IUidContext) { s.name = v }

func (s *AlterByAddForeignKeyContext) SetIndexName(v IUidContext) { s.indexName = v }

func (s *AlterByAddForeignKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddForeignKeyContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddForeignKeyContext) FOREIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOREIGN, 0)
}

func (s *AlterByAddForeignKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByAddForeignKeyContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *AlterByAddForeignKeyContext) ReferenceDefinition() IReferenceDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReferenceDefinitionContext)
}

func (s *AlterByAddForeignKeyContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *AlterByAddForeignKeyContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByAddForeignKeyContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddForeignKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddForeignKey(s)
	}
}

func (s *AlterByAddForeignKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddForeignKey(s)
	}
}

type AlterByRenameIndexContext struct {
	*AlterSpecificationContext
	indexFormat antlr.Token
}

func NewAlterByRenameIndexContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRenameIndexContext {
	var p = new(AlterByRenameIndexContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRenameIndexContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *AlterByRenameIndexContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *AlterByRenameIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRenameIndexContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *AlterByRenameIndexContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByRenameIndexContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByRenameIndexContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *AlterByRenameIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByRenameIndexContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByRenameIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRenameIndex(s)
	}
}

func (s *AlterByRenameIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRenameIndex(s)
	}
}

type AlterByRemovePartitioningContext struct {
	*AlterSpecificationContext
}

func NewAlterByRemovePartitioningContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRemovePartitioningContext {
	var p = new(AlterByRemovePartitioningContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRemovePartitioningContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRemovePartitioningContext) REMOVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREMOVE, 0)
}

func (s *AlterByRemovePartitioningContext) PARTITIONING() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONING, 0)
}

func (s *AlterByRemovePartitioningContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRemovePartitioning(s)
	}
}

func (s *AlterByRemovePartitioningContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRemovePartitioning(s)
	}
}

type AlterByRenameContext struct {
	*AlterSpecificationContext
	renameFormat antlr.Token
}

func NewAlterByRenameContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRenameContext {
	var p = new(AlterByRenameContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRenameContext) GetRenameFormat() antlr.Token { return s.renameFormat }

func (s *AlterByRenameContext) SetRenameFormat(v antlr.Token) { s.renameFormat = v }

func (s *AlterByRenameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRenameContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *AlterByRenameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByRenameContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *AlterByRenameContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *AlterByRenameContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *AlterByRenameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRename(s)
	}
}

func (s *AlterByRenameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRename(s)
	}
}

type AlterByOptimizePartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByOptimizePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByOptimizePartitionContext {
	var p = new(AlterByOptimizePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByOptimizePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByOptimizePartitionContext) OPTIMIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIMIZE, 0)
}

func (s *AlterByOptimizePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByOptimizePartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByOptimizePartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByOptimizePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByOptimizePartition(s)
	}
}

func (s *AlterByOptimizePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByOptimizePartition(s)
	}
}

type AlterByImportTablespaceContext struct {
	*AlterSpecificationContext
}

func NewAlterByImportTablespaceContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByImportTablespaceContext {
	var p = new(AlterByImportTablespaceContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByImportTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByImportTablespaceContext) IMPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserIMPORT, 0)
}

func (s *AlterByImportTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *AlterByImportTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByImportTablespace(s)
	}
}

func (s *AlterByImportTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByImportTablespace(s)
	}
}

type AlterByCoalescePartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByCoalescePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByCoalescePartitionContext {
	var p = new(AlterByCoalescePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByCoalescePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByCoalescePartitionContext) COALESCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOALESCE, 0)
}

func (s *AlterByCoalescePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByCoalescePartitionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *AlterByCoalescePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByCoalescePartition(s)
	}
}

func (s *AlterByCoalescePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByCoalescePartition(s)
	}
}

type AlterByDropConstraintCheckContext struct {
	*AlterSpecificationContext
}

func NewAlterByDropConstraintCheckContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropConstraintCheckContext {
	var p = new(AlterByDropConstraintCheckContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropConstraintCheckContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropConstraintCheckContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropConstraintCheckContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByDropConstraintCheckContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *AlterByDropConstraintCheckContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *AlterByDropConstraintCheckContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropConstraintCheck(s)
	}
}

func (s *AlterByDropConstraintCheckContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropConstraintCheck(s)
	}
}

type AlterByAddColumnsContext struct {
	*AlterSpecificationContext
}

func NewAlterByAddColumnsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddColumnsContext {
	var p = new(AlterByAddColumnsContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddColumnsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddColumnsContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddColumnsContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterByAddColumnsContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByAddColumnsContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddColumnsContext) AllColumnDefinition() []IColumnDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem())
	var tst = make([]IColumnDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IColumnDefinitionContext)
		}
	}

	return tst
}

func (s *AlterByAddColumnsContext) ColumnDefinition(i int) IColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IColumnDefinitionContext)
}

func (s *AlterByAddColumnsContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterByAddColumnsContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByAddColumnsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterByAddColumnsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterByAddColumnsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddColumns(s)
	}
}

func (s *AlterByAddColumnsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddColumns(s)
	}
}

type AlterByAlterIndexVisibilityContext struct {
	*AlterSpecificationContext
}

func NewAlterByAlterIndexVisibilityContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAlterIndexVisibilityContext {
	var p = new(AlterByAlterIndexVisibilityContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAlterIndexVisibilityContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAlterIndexVisibilityContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterByAlterIndexVisibilityContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByAlterIndexVisibilityContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAlterIndexVisibilityContext) VISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVISIBLE, 0)
}

func (s *AlterByAlterIndexVisibilityContext) INVISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVISIBLE, 0)
}

func (s *AlterByAlterIndexVisibilityContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAlterIndexVisibility(s)
	}
}

func (s *AlterByAlterIndexVisibilityContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAlterIndexVisibility(s)
	}
}

type AlterByDropForeignKeyContext struct {
	*AlterSpecificationContext
}

func NewAlterByDropForeignKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropForeignKeyContext {
	var p = new(AlterByDropForeignKeyContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropForeignKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropForeignKeyContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropForeignKeyContext) FOREIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOREIGN, 0)
}

func (s *AlterByDropForeignKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByDropForeignKeyContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByDropForeignKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropForeignKey(s)
	}
}

func (s *AlterByDropForeignKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropForeignKey(s)
	}
}

type AlterByAddCheckTableConstraintContext struct {
	*AlterSpecificationContext
	name IUidContext
}

func NewAlterByAddCheckTableConstraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddCheckTableConstraintContext {
	var p = new(AlterByAddCheckTableConstraintContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddCheckTableConstraintContext) GetName() IUidContext { return s.name }

func (s *AlterByAddCheckTableConstraintContext) SetName(v IUidContext) { s.name = v }

func (s *AlterByAddCheckTableConstraintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddCheckTableConstraintContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddCheckTableConstraintContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *AlterByAddCheckTableConstraintContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterByAddCheckTableConstraintContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *AlterByAddCheckTableConstraintContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterByAddCheckTableConstraintContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *AlterByAddCheckTableConstraintContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddCheckTableConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddCheckTableConstraint(s)
	}
}

func (s *AlterByAddCheckTableConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddCheckTableConstraint(s)
	}
}

type AlterByRebuildPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByRebuildPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRebuildPartitionContext {
	var p = new(AlterByRebuildPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRebuildPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRebuildPartitionContext) REBUILD() antlr.TerminalNode {
	return s.GetToken(MySqlParserREBUILD, 0)
}

func (s *AlterByRebuildPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByRebuildPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByRebuildPartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByRebuildPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRebuildPartition(s)
	}
}

func (s *AlterByRebuildPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRebuildPartition(s)
	}
}

type AlterByUpgradePartitioningContext struct {
	*AlterSpecificationContext
}

func NewAlterByUpgradePartitioningContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByUpgradePartitioningContext {
	var p = new(AlterByUpgradePartitioningContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByUpgradePartitioningContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByUpgradePartitioningContext) UPGRADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPGRADE, 0)
}

func (s *AlterByUpgradePartitioningContext) PARTITIONING() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONING, 0)
}

func (s *AlterByUpgradePartitioningContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByUpgradePartitioning(s)
	}
}

func (s *AlterByUpgradePartitioningContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByUpgradePartitioning(s)
	}
}

type AlterByRepairPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByRepairPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByRepairPartitionContext {
	var p = new(AlterByRepairPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByRepairPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByRepairPartitionContext) REPAIR() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPAIR, 0)
}

func (s *AlterByRepairPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByRepairPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByRepairPartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByRepairPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByRepairPartition(s)
	}
}

func (s *AlterByRepairPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByRepairPartition(s)
	}
}

type AlterByExchangePartitionContext struct {
	*AlterSpecificationContext
	validationFormat antlr.Token
}

func NewAlterByExchangePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByExchangePartitionContext {
	var p = new(AlterByExchangePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByExchangePartitionContext) GetValidationFormat() antlr.Token {
	return s.validationFormat
}

func (s *AlterByExchangePartitionContext) SetValidationFormat(v antlr.Token) { s.validationFormat = v }

func (s *AlterByExchangePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByExchangePartitionContext) EXCHANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCHANGE, 0)
}

func (s *AlterByExchangePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByExchangePartitionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByExchangePartitionContext) AllWITH() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserWITH)
}

func (s *AlterByExchangePartitionContext) WITH(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, i)
}

func (s *AlterByExchangePartitionContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *AlterByExchangePartitionContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *AlterByExchangePartitionContext) VALIDATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALIDATION, 0)
}

func (s *AlterByExchangePartitionContext) WITHOUT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITHOUT, 0)
}

func (s *AlterByExchangePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByExchangePartition(s)
	}
}

func (s *AlterByExchangePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByExchangePartition(s)
	}
}

type AlterByAddIndexContext struct {
	*AlterSpecificationContext
	indexFormat antlr.Token
}

func NewAlterByAddIndexContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddIndexContext {
	var p = new(AlterByAddIndexContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddIndexContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *AlterByAddIndexContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *AlterByAddIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddIndexContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddIndexContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *AlterByAddIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByAddIndexContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByAddIndexContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddIndexContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *AlterByAddIndexContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *AlterByAddIndexContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *AlterByAddIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddIndex(s)
	}
}

func (s *AlterByAddIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddIndex(s)
	}
}

type AlterByDropColumnContext struct {
	*AlterSpecificationContext
}

func NewAlterByDropColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropColumnContext {
	var p = new(AlterByDropColumnContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropColumnContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropColumnContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropColumnContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByDropColumnContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByDropColumnContext) RESTRICT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESTRICT, 0)
}

func (s *AlterByDropColumnContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropColumn(s)
	}
}

func (s *AlterByDropColumnContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropColumn(s)
	}
}

type AlterByImportPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByImportPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByImportPartitionContext {
	var p = new(AlterByImportPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByImportPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByImportPartitionContext) IMPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserIMPORT, 0)
}

func (s *AlterByImportPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByImportPartitionContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *AlterByImportPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByImportPartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByImportPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByImportPartition(s)
	}
}

func (s *AlterByImportPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByImportPartition(s)
	}
}

type AlterByChangeDefaultContext struct {
	*AlterSpecificationContext
}

func NewAlterByChangeDefaultContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByChangeDefaultContext {
	var p = new(AlterByChangeDefaultContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByChangeDefaultContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByChangeDefaultContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterByChangeDefaultContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByChangeDefaultContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *AlterByChangeDefaultContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *AlterByChangeDefaultContext) DefaultValue() IDefaultValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDefaultValueContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDefaultValueContext)
}

func (s *AlterByChangeDefaultContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByChangeDefaultContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByChangeDefaultContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByChangeDefault(s)
	}
}

func (s *AlterByChangeDefaultContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByChangeDefault(s)
	}
}

type AlterByForceContext struct {
	*AlterSpecificationContext
}

func NewAlterByForceContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByForceContext {
	var p = new(AlterByForceContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByForceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByForceContext) FORCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFORCE, 0)
}

func (s *AlterByForceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByForce(s)
	}
}

func (s *AlterByForceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByForce(s)
	}
}

type AlterByDropPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByDropPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropPartitionContext {
	var p = new(AlterByDropPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropPartitionContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByDropPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByDropPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropPartition(s)
	}
}

func (s *AlterByDropPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropPartition(s)
	}
}

type AlterByAddSpecialIndexContext struct {
	*AlterSpecificationContext
	keyType     antlr.Token
	indexFormat antlr.Token
}

func NewAlterByAddSpecialIndexContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddSpecialIndexContext {
	var p = new(AlterByAddSpecialIndexContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddSpecialIndexContext) GetKeyType() antlr.Token { return s.keyType }

func (s *AlterByAddSpecialIndexContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *AlterByAddSpecialIndexContext) SetKeyType(v antlr.Token) { s.keyType = v }

func (s *AlterByAddSpecialIndexContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *AlterByAddSpecialIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddSpecialIndexContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddSpecialIndexContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *AlterByAddSpecialIndexContext) FULLTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULLTEXT, 0)
}

func (s *AlterByAddSpecialIndexContext) SPATIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSPATIAL, 0)
}

func (s *AlterByAddSpecialIndexContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddSpecialIndexContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *AlterByAddSpecialIndexContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *AlterByAddSpecialIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByAddSpecialIndexContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByAddSpecialIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddSpecialIndex(s)
	}
}

func (s *AlterByAddSpecialIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddSpecialIndex(s)
	}
}

type AlterByModifyColumnContext struct {
	*AlterSpecificationContext
}

func NewAlterByModifyColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByModifyColumnContext {
	var p = new(AlterByModifyColumnContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByModifyColumnContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByModifyColumnContext) MODIFY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODIFY, 0)
}

func (s *AlterByModifyColumnContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByModifyColumnContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByModifyColumnContext) ColumnDefinition() IColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IColumnDefinitionContext)
}

func (s *AlterByModifyColumnContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByModifyColumnContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *AlterByModifyColumnContext) AFTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserAFTER, 0)
}

func (s *AlterByModifyColumnContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByModifyColumn(s)
	}
}

func (s *AlterByModifyColumnContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByModifyColumn(s)
	}
}

type AlterByTableOptionContext struct {
	*AlterSpecificationContext
}

func NewAlterByTableOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByTableOptionContext {
	var p = new(AlterByTableOptionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByTableOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByTableOptionContext) AllTableOption() []ITableOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableOptionContext)(nil)).Elem())
	var tst = make([]ITableOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableOptionContext)
		}
	}

	return tst
}

func (s *AlterByTableOptionContext) TableOption(i int) ITableOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableOptionContext)
}

func (s *AlterByTableOptionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterByTableOptionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterByTableOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByTableOption(s)
	}
}

func (s *AlterByTableOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByTableOption(s)
	}
}

type AlterByDropPrimaryKeyContext struct {
	*AlterSpecificationContext
}

func NewAlterByDropPrimaryKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropPrimaryKeyContext {
	var p = new(AlterByDropPrimaryKeyContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropPrimaryKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropPrimaryKeyContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropPrimaryKeyContext) PRIMARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIMARY, 0)
}

func (s *AlterByDropPrimaryKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByDropPrimaryKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropPrimaryKey(s)
	}
}

func (s *AlterByDropPrimaryKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropPrimaryKey(s)
	}
}

type AlterByLockContext struct {
	*AlterSpecificationContext
	lockType antlr.Token
}

func NewAlterByLockContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByLockContext {
	var p = new(AlterByLockContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByLockContext) GetLockType() antlr.Token { return s.lockType }

func (s *AlterByLockContext) SetLockType(v antlr.Token) { s.lockType = v }

func (s *AlterByLockContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByLockContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *AlterByLockContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *AlterByLockContext) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *AlterByLockContext) SHARED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARED, 0)
}

func (s *AlterByLockContext) EXCLUSIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLUSIVE, 0)
}

func (s *AlterByLockContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *AlterByLockContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByLock(s)
	}
}

func (s *AlterByLockContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByLock(s)
	}
}

type AlterByDiscardPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByDiscardPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDiscardPartitionContext {
	var p = new(AlterByDiscardPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDiscardPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDiscardPartitionContext) DISCARD() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISCARD, 0)
}

func (s *AlterByDiscardPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByDiscardPartitionContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *AlterByDiscardPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByDiscardPartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByDiscardPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDiscardPartition(s)
	}
}

func (s *AlterByDiscardPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDiscardPartition(s)
	}
}

type AlterByDiscardTablespaceContext struct {
	*AlterSpecificationContext
}

func NewAlterByDiscardTablespaceContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDiscardTablespaceContext {
	var p = new(AlterByDiscardTablespaceContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDiscardTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDiscardTablespaceContext) DISCARD() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISCARD, 0)
}

func (s *AlterByDiscardTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *AlterByDiscardTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDiscardTablespace(s)
	}
}

func (s *AlterByDiscardTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDiscardTablespace(s)
	}
}

type AlterByValidateContext struct {
	*AlterSpecificationContext
	validationFormat antlr.Token
}

func NewAlterByValidateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByValidateContext {
	var p = new(AlterByValidateContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByValidateContext) GetValidationFormat() antlr.Token { return s.validationFormat }

func (s *AlterByValidateContext) SetValidationFormat(v antlr.Token) { s.validationFormat = v }

func (s *AlterByValidateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByValidateContext) VALIDATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALIDATION, 0)
}

func (s *AlterByValidateContext) WITHOUT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITHOUT, 0)
}

func (s *AlterByValidateContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *AlterByValidateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByValidate(s)
	}
}

func (s *AlterByValidateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByValidate(s)
	}
}

type AlterByAddPrimaryKeyContext struct {
	*AlterSpecificationContext
	name  IUidContext
	index IUidContext
}

func NewAlterByAddPrimaryKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddPrimaryKeyContext {
	var p = new(AlterByAddPrimaryKeyContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddPrimaryKeyContext) GetName() IUidContext { return s.name }

func (s *AlterByAddPrimaryKeyContext) GetIndex() IUidContext { return s.index }

func (s *AlterByAddPrimaryKeyContext) SetName(v IUidContext) { s.name = v }

func (s *AlterByAddPrimaryKeyContext) SetIndex(v IUidContext) { s.index = v }

func (s *AlterByAddPrimaryKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddPrimaryKeyContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddPrimaryKeyContext) PRIMARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIMARY, 0)
}

func (s *AlterByAddPrimaryKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByAddPrimaryKeyContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *AlterByAddPrimaryKeyContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *AlterByAddPrimaryKeyContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *AlterByAddPrimaryKeyContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *AlterByAddPrimaryKeyContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *AlterByAddPrimaryKeyContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByAddPrimaryKeyContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddPrimaryKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddPrimaryKey(s)
	}
}

func (s *AlterByAddPrimaryKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddPrimaryKey(s)
	}
}

type AlterByCheckPartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByCheckPartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByCheckPartitionContext {
	var p = new(AlterByCheckPartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByCheckPartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByCheckPartitionContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *AlterByCheckPartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByCheckPartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByCheckPartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByCheckPartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByCheckPartition(s)
	}
}

func (s *AlterByCheckPartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByCheckPartition(s)
	}
}

type AlterByEnableKeysContext struct {
	*AlterSpecificationContext
}

func NewAlterByEnableKeysContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByEnableKeysContext {
	var p = new(AlterByEnableKeysContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByEnableKeysContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByEnableKeysContext) ENABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENABLE, 0)
}

func (s *AlterByEnableKeysContext) KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEYS, 0)
}

func (s *AlterByEnableKeysContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByEnableKeys(s)
	}
}

func (s *AlterByEnableKeysContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByEnableKeys(s)
	}
}

type AlterByReorganizePartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByReorganizePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByReorganizePartitionContext {
	var p = new(AlterByReorganizePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByReorganizePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByReorganizePartitionContext) REORGANIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREORGANIZE, 0)
}

func (s *AlterByReorganizePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByReorganizePartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByReorganizePartitionContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *AlterByReorganizePartitionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AlterByReorganizePartitionContext) AllPartitionDefinition() []IPartitionDefinitionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem())
	var tst = make([]IPartitionDefinitionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPartitionDefinitionContext)
		}
	}

	return tst
}

func (s *AlterByReorganizePartitionContext) PartitionDefinition(i int) IPartitionDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionDefinitionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPartitionDefinitionContext)
}

func (s *AlterByReorganizePartitionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AlterByReorganizePartitionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterByReorganizePartitionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterByReorganizePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByReorganizePartition(s)
	}
}

func (s *AlterByReorganizePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByReorganizePartition(s)
	}
}

type AlterBySetAlgorithmContext struct {
	*AlterSpecificationContext
	algType antlr.Token
}

func NewAlterBySetAlgorithmContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterBySetAlgorithmContext {
	var p = new(AlterBySetAlgorithmContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterBySetAlgorithmContext) GetAlgType() antlr.Token { return s.algType }

func (s *AlterBySetAlgorithmContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *AlterBySetAlgorithmContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterBySetAlgorithmContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *AlterBySetAlgorithmContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *AlterBySetAlgorithmContext) INPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINPLACE, 0)
}

func (s *AlterBySetAlgorithmContext) COPY() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOPY, 0)
}

func (s *AlterBySetAlgorithmContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *AlterBySetAlgorithmContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterBySetAlgorithm(s)
	}
}

func (s *AlterBySetAlgorithmContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterBySetAlgorithm(s)
	}
}

type AlterByAnalyzePartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByAnalyzePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAnalyzePartitionContext {
	var p = new(AlterByAnalyzePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAnalyzePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAnalyzePartitionContext) ANALYZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserANALYZE, 0)
}

func (s *AlterByAnalyzePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByAnalyzePartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByAnalyzePartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByAnalyzePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAnalyzePartition(s)
	}
}

func (s *AlterByAnalyzePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAnalyzePartition(s)
	}
}

type AlterByChangeColumnContext struct {
	*AlterSpecificationContext
	oldColumn   IUidContext
	newColumn   IUidContext
	afterColumn IUidContext
}

func NewAlterByChangeColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByChangeColumnContext {
	var p = new(AlterByChangeColumnContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByChangeColumnContext) GetOldColumn() IUidContext { return s.oldColumn }

func (s *AlterByChangeColumnContext) GetNewColumn() IUidContext { return s.newColumn }

func (s *AlterByChangeColumnContext) GetAfterColumn() IUidContext { return s.afterColumn }

func (s *AlterByChangeColumnContext) SetOldColumn(v IUidContext) { s.oldColumn = v }

func (s *AlterByChangeColumnContext) SetNewColumn(v IUidContext) { s.newColumn = v }

func (s *AlterByChangeColumnContext) SetAfterColumn(v IUidContext) { s.afterColumn = v }

func (s *AlterByChangeColumnContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByChangeColumnContext) CHANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANGE, 0)
}

func (s *AlterByChangeColumnContext) ColumnDefinition() IColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IColumnDefinitionContext)
}

func (s *AlterByChangeColumnContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByChangeColumnContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByChangeColumnContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByChangeColumnContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *AlterByChangeColumnContext) AFTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserAFTER, 0)
}

func (s *AlterByChangeColumnContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByChangeColumn(s)
	}
}

func (s *AlterByChangeColumnContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByChangeColumn(s)
	}
}

type AlterByAddUniqueKeyContext struct {
	*AlterSpecificationContext
	name        IUidContext
	indexFormat antlr.Token
	indexName   IUidContext
}

func NewAlterByAddUniqueKeyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddUniqueKeyContext {
	var p = new(AlterByAddUniqueKeyContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddUniqueKeyContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *AlterByAddUniqueKeyContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *AlterByAddUniqueKeyContext) GetName() IUidContext { return s.name }

func (s *AlterByAddUniqueKeyContext) GetIndexName() IUidContext { return s.indexName }

func (s *AlterByAddUniqueKeyContext) SetName(v IUidContext) { s.name = v }

func (s *AlterByAddUniqueKeyContext) SetIndexName(v IUidContext) { s.indexName = v }

func (s *AlterByAddUniqueKeyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddUniqueKeyContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddUniqueKeyContext) UNIQUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNIQUE, 0)
}

func (s *AlterByAddUniqueKeyContext) IndexColumnNames() IIndexColumnNamesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNamesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNamesContext)
}

func (s *AlterByAddUniqueKeyContext) CONSTRAINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT, 0)
}

func (s *AlterByAddUniqueKeyContext) IndexType() IIndexTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexTypeContext)
}

func (s *AlterByAddUniqueKeyContext) AllIndexOption() []IIndexOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem())
	var tst = make([]IIndexOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexOptionContext)
		}
	}

	return tst
}

func (s *AlterByAddUniqueKeyContext) IndexOption(i int) IIndexOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexOptionContext)
}

func (s *AlterByAddUniqueKeyContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByAddUniqueKeyContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddUniqueKeyContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByAddUniqueKeyContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByAddUniqueKeyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddUniqueKey(s)
	}
}

func (s *AlterByAddUniqueKeyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddUniqueKey(s)
	}
}

type AlterByTruncatePartitionContext struct {
	*AlterSpecificationContext
}

func NewAlterByTruncatePartitionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByTruncatePartitionContext {
	var p = new(AlterByTruncatePartitionContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByTruncatePartitionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByTruncatePartitionContext) TRUNCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRUNCATE, 0)
}

func (s *AlterByTruncatePartitionContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AlterByTruncatePartitionContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByTruncatePartitionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AlterByTruncatePartitionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByTruncatePartition(s)
	}
}

func (s *AlterByTruncatePartitionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByTruncatePartition(s)
	}
}

type AlterByDropIndexContext struct {
	*AlterSpecificationContext
	indexFormat antlr.Token
}

func NewAlterByDropIndexContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByDropIndexContext {
	var p = new(AlterByDropIndexContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByDropIndexContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *AlterByDropIndexContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *AlterByDropIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByDropIndexContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AlterByDropIndexContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByDropIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *AlterByDropIndexContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *AlterByDropIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByDropIndex(s)
	}
}

func (s *AlterByDropIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByDropIndex(s)
	}
}

type AlterByAddColumnContext struct {
	*AlterSpecificationContext
}

func NewAlterByAddColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByAddColumnContext {
	var p = new(AlterByAddColumnContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByAddColumnContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByAddColumnContext) ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserADD, 0)
}

func (s *AlterByAddColumnContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *AlterByAddColumnContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AlterByAddColumnContext) ColumnDefinition() IColumnDefinitionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IColumnDefinitionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IColumnDefinitionContext)
}

func (s *AlterByAddColumnContext) COLUMN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN, 0)
}

func (s *AlterByAddColumnContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *AlterByAddColumnContext) AFTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserAFTER, 0)
}

func (s *AlterByAddColumnContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByAddColumn(s)
	}
}

func (s *AlterByAddColumnContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByAddColumn(s)
	}
}

type AlterByOrderContext struct {
	*AlterSpecificationContext
}

func NewAlterByOrderContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterByOrderContext {
	var p = new(AlterByOrderContext)

	p.AlterSpecificationContext = NewEmptyAlterSpecificationContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterSpecificationContext))

	return p
}

func (s *AlterByOrderContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterByOrderContext) ORDER() antlr.TerminalNode {
	return s.GetToken(MySqlParserORDER, 0)
}

func (s *AlterByOrderContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *AlterByOrderContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AlterByOrderContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterByOrder(s)
	}
}

func (s *AlterByOrderContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterByOrder(s)
	}
}

func (p *MySqlParser) AlterSpecification() (localctx IAlterSpecificationContext) {
	this := p
	_ = this

	localctx = NewAlterSpecificationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 136, MySqlParserRULE_alterSpecification)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(2684)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 334, p.GetParserRuleContext()) {
	case 1:
		localctx = NewAlterByTableOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(2318)
			p.TableOption()
		}
		p.SetState(2325)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 281, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				p.SetState(2320)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserCOMMA {
					{
						p.SetState(2319)
						p.Match(MySqlParserCOMMA)
					}

				}
				{
					p.SetState(2322)
					p.TableOption()
				}

			}
			p.SetState(2327)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 281, p.GetParserRuleContext())
		}

	case 2:
		localctx = NewAlterByAddColumnContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2328)
			p.Match(MySqlParserADD)
		}
		p.SetState(2330)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2329)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2332)
			p.Uid()
		}
		{
			p.SetState(2333)
			p.ColumnDefinition()
		}
		p.SetState(2337)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserFIRST:
			{
				p.SetState(2334)
				p.Match(MySqlParserFIRST)
			}

		case MySqlParserAFTER:
			{
				p.SetState(2335)
				p.Match(MySqlParserAFTER)
			}
			{
				p.SetState(2336)
				p.Uid()
			}

		case MySqlParserEOF, MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPARTITION, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserMINUS, MySqlParserLR_BRACKET, MySqlParserCOMMA, MySqlParserSEMI:

		default:
		}

	case 3:
		localctx = NewAlterByAddColumnsContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(2339)
			p.Match(MySqlParserADD)
		}
		p.SetState(2341)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2340)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2343)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2344)
			p.Uid()
		}
		{
			p.SetState(2345)
			p.ColumnDefinition()
		}
		p.SetState(2352)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2346)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2347)
				p.Uid()
			}
			{
				p.SetState(2348)
				p.ColumnDefinition()
			}

			p.SetState(2354)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(2355)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 4:
		localctx = NewAlterByAddIndexContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(2357)
			p.Match(MySqlParserADD)
		}
		{
			p.SetState(2358)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByAddIndexContext).indexFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByAddIndexContext).indexFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(2360)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2359)
				p.Uid()
			}

		}
		p.SetState(2363)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(2362)
				p.IndexType()
			}

		}
		{
			p.SetState(2365)
			p.IndexColumnNames()
		}
		p.SetState(2369)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(2366)
				p.IndexOption()
			}

			p.SetState(2371)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 5:
		localctx = NewAlterByAddPrimaryKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(2372)
			p.Match(MySqlParserADD)
		}
		p.SetState(2377)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(2373)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(2375)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(2374)

					var _x = p.Uid()

					localctx.(*AlterByAddPrimaryKeyContext).name = _x
				}

			}

		}
		{
			p.SetState(2379)
			p.Match(MySqlParserPRIMARY)
		}
		{
			p.SetState(2380)
			p.Match(MySqlParserKEY)
		}
		p.SetState(2382)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2381)

				var _x = p.Uid()

				localctx.(*AlterByAddPrimaryKeyContext).index = _x
			}

		}
		p.SetState(2385)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(2384)
				p.IndexType()
			}

		}
		{
			p.SetState(2387)
			p.IndexColumnNames()
		}
		p.SetState(2391)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(2388)
				p.IndexOption()
			}

			p.SetState(2393)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 6:
		localctx = NewAlterByAddUniqueKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(2394)
			p.Match(MySqlParserADD)
		}
		p.SetState(2399)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(2395)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(2397)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(2396)

					var _x = p.Uid()

					localctx.(*AlterByAddUniqueKeyContext).name = _x
				}

			}

		}
		{
			p.SetState(2401)
			p.Match(MySqlParserUNIQUE)
		}
		p.SetState(2403)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(2402)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AlterByAddUniqueKeyContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AlterByAddUniqueKeyContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(2406)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2405)

				var _x = p.Uid()

				localctx.(*AlterByAddUniqueKeyContext).indexName = _x
			}

		}
		p.SetState(2409)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(2408)
				p.IndexType()
			}

		}
		{
			p.SetState(2411)
			p.IndexColumnNames()
		}
		p.SetState(2415)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(2412)
				p.IndexOption()
			}

			p.SetState(2417)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 7:
		localctx = NewAlterByAddSpecialIndexContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(2418)
			p.Match(MySqlParserADD)
		}
		{
			p.SetState(2419)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByAddSpecialIndexContext).keyType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFULLTEXT || _la == MySqlParserSPATIAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByAddSpecialIndexContext).keyType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(2421)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(2420)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AlterByAddSpecialIndexContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AlterByAddSpecialIndexContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(2424)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2423)
				p.Uid()
			}

		}
		{
			p.SetState(2426)
			p.IndexColumnNames()
		}
		p.SetState(2430)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserUSING || _la == MySqlParserWITH || _la == MySqlParserCOMMENT || _la == MySqlParserINVISIBLE || _la == MySqlParserKEY_BLOCK_SIZE || _la == MySqlParserVISIBLE {
			{
				p.SetState(2427)
				p.IndexOption()
			}

			p.SetState(2432)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 8:
		localctx = NewAlterByAddForeignKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(2433)
			p.Match(MySqlParserADD)
		}
		p.SetState(2438)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(2434)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(2436)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(2435)

					var _x = p.Uid()

					localctx.(*AlterByAddForeignKeyContext).name = _x
				}

			}

		}
		{
			p.SetState(2440)
			p.Match(MySqlParserFOREIGN)
		}
		{
			p.SetState(2441)
			p.Match(MySqlParserKEY)
		}
		p.SetState(2443)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2442)

				var _x = p.Uid()

				localctx.(*AlterByAddForeignKeyContext).indexName = _x
			}

		}
		{
			p.SetState(2445)
			p.IndexColumnNames()
		}
		{
			p.SetState(2446)
			p.ReferenceDefinition()
		}

	case 9:
		localctx = NewAlterByAddCheckTableConstraintContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(2448)
			p.Match(MySqlParserADD)
		}
		p.SetState(2453)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCONSTRAINT {
			{
				p.SetState(2449)
				p.Match(MySqlParserCONSTRAINT)
			}
			p.SetState(2451)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
				{
					p.SetState(2450)

					var _x = p.Uid()

					localctx.(*AlterByAddCheckTableConstraintContext).name = _x
				}

			}

		}
		{
			p.SetState(2455)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(2456)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2457)
			p.expression(0)
		}
		{
			p.SetState(2458)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 10:
		localctx = NewAlterBySetAlgorithmContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(2460)
			p.Match(MySqlParserALGORITHM)
		}
		p.SetState(2462)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2461)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2464)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterBySetAlgorithmContext).algType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserCOPY || _la == MySqlParserINPLACE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterBySetAlgorithmContext).algType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 11:
		localctx = NewAlterByChangeDefaultContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(2465)
			p.Match(MySqlParserALTER)
		}
		p.SetState(2467)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2466)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2469)
			p.Uid()
		}
		p.SetState(2475)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserSET:
			{
				p.SetState(2470)
				p.Match(MySqlParserSET)
			}
			{
				p.SetState(2471)
				p.Match(MySqlParserDEFAULT)
			}
			{
				p.SetState(2472)
				p.DefaultValue()
			}

		case MySqlParserDROP:
			{
				p.SetState(2473)
				p.Match(MySqlParserDROP)
			}
			{
				p.SetState(2474)
				p.Match(MySqlParserDEFAULT)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 12:
		localctx = NewAlterByChangeColumnContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(2477)
			p.Match(MySqlParserCHANGE)
		}
		p.SetState(2479)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2478)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2481)

			var _x = p.Uid()

			localctx.(*AlterByChangeColumnContext).oldColumn = _x
		}
		{
			p.SetState(2482)

			var _x = p.Uid()

			localctx.(*AlterByChangeColumnContext).newColumn = _x
		}
		{
			p.SetState(2483)
			p.ColumnDefinition()
		}
		p.SetState(2487)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserFIRST:
			{
				p.SetState(2484)
				p.Match(MySqlParserFIRST)
			}

		case MySqlParserAFTER:
			{
				p.SetState(2485)
				p.Match(MySqlParserAFTER)
			}
			{
				p.SetState(2486)

				var _x = p.Uid()

				localctx.(*AlterByChangeColumnContext).afterColumn = _x
			}

		case MySqlParserEOF, MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPARTITION, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserMINUS, MySqlParserLR_BRACKET, MySqlParserCOMMA, MySqlParserSEMI:

		default:
		}

	case 13:
		localctx = NewAlterByRenameColumnContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(2489)
			p.Match(MySqlParserRENAME)
		}
		{
			p.SetState(2490)
			p.Match(MySqlParserCOLUMN)
		}
		{
			p.SetState(2491)

			var _x = p.Uid()

			localctx.(*AlterByRenameColumnContext).oldColumn = _x
		}
		{
			p.SetState(2492)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(2493)

			var _x = p.Uid()

			localctx.(*AlterByRenameColumnContext).newColumn = _x
		}

	case 14:
		localctx = NewAlterByLockContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(2495)
			p.Match(MySqlParserLOCK)
		}
		p.SetState(2497)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2496)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2499)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByLockContext).lockType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDEFAULT || _la == MySqlParserEXCLUSIVE || _la == MySqlParserNONE || _la == MySqlParserSHARED) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByLockContext).lockType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 15:
		localctx = NewAlterByModifyColumnContext(p, localctx)
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(2500)
			p.Match(MySqlParserMODIFY)
		}
		p.SetState(2502)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2501)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2504)
			p.Uid()
		}
		{
			p.SetState(2505)
			p.ColumnDefinition()
		}
		p.SetState(2509)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserFIRST:
			{
				p.SetState(2506)
				p.Match(MySqlParserFIRST)
			}

		case MySqlParserAFTER:
			{
				p.SetState(2507)
				p.Match(MySqlParserAFTER)
			}
			{
				p.SetState(2508)
				p.Uid()
			}

		case MySqlParserEOF, MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPARTITION, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserMINUS, MySqlParserLR_BRACKET, MySqlParserCOMMA, MySqlParserSEMI:

		default:
		}

	case 16:
		localctx = NewAlterByDropColumnContext(p, localctx)
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(2511)
			p.Match(MySqlParserDROP)
		}
		p.SetState(2513)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLUMN {
			{
				p.SetState(2512)
				p.Match(MySqlParserCOLUMN)
			}

		}
		{
			p.SetState(2515)
			p.Uid()
		}
		p.SetState(2517)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserRESTRICT {
			{
				p.SetState(2516)
				p.Match(MySqlParserRESTRICT)
			}

		}

	case 17:
		localctx = NewAlterByDropConstraintCheckContext(p, localctx)
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(2519)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(2520)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCHECK || _la == MySqlParserCONSTRAINT) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(2521)
			p.Uid()
		}

	case 18:
		localctx = NewAlterByDropPrimaryKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(2522)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(2523)
			p.Match(MySqlParserPRIMARY)
		}
		{
			p.SetState(2524)
			p.Match(MySqlParserKEY)
		}

	case 19:
		localctx = NewAlterByRenameIndexContext(p, localctx)
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(2525)
			p.Match(MySqlParserRENAME)
		}
		{
			p.SetState(2526)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByRenameIndexContext).indexFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByRenameIndexContext).indexFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(2527)
			p.Uid()
		}
		{
			p.SetState(2528)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(2529)
			p.Uid()
		}

	case 20:
		localctx = NewAlterByAlterIndexVisibilityContext(p, localctx)
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(2531)
			p.Match(MySqlParserALTER)
		}
		{
			p.SetState(2532)
			p.Match(MySqlParserINDEX)
		}
		{
			p.SetState(2533)
			p.Uid()
		}
		{
			p.SetState(2534)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINVISIBLE || _la == MySqlParserVISIBLE) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 21:
		localctx = NewAlterByDropIndexContext(p, localctx)
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(2536)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(2537)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByDropIndexContext).indexFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByDropIndexContext).indexFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(2538)
			p.Uid()
		}

	case 22:
		localctx = NewAlterByDropForeignKeyContext(p, localctx)
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(2539)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(2540)
			p.Match(MySqlParserFOREIGN)
		}
		{
			p.SetState(2541)
			p.Match(MySqlParserKEY)
		}
		{
			p.SetState(2542)
			p.Uid()
		}

	case 23:
		localctx = NewAlterByDisableKeysContext(p, localctx)
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(2543)
			p.Match(MySqlParserDISABLE)
		}
		{
			p.SetState(2544)
			p.Match(MySqlParserKEYS)
		}

	case 24:
		localctx = NewAlterByEnableKeysContext(p, localctx)
		p.EnterOuterAlt(localctx, 24)
		{
			p.SetState(2545)
			p.Match(MySqlParserENABLE)
		}
		{
			p.SetState(2546)
			p.Match(MySqlParserKEYS)
		}

	case 25:
		localctx = NewAlterByRenameContext(p, localctx)
		p.EnterOuterAlt(localctx, 25)
		{
			p.SetState(2547)
			p.Match(MySqlParserRENAME)
		}
		p.SetState(2549)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS || _la == MySqlParserTO {
			{
				p.SetState(2548)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AlterByRenameContext).renameFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserAS || _la == MySqlParserTO) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AlterByRenameContext).renameFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		p.SetState(2553)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 319, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(2551)
				p.Uid()
			}

		case 2:
			{
				p.SetState(2552)
				p.FullId()
			}

		}

	case 26:
		localctx = NewAlterByOrderContext(p, localctx)
		p.EnterOuterAlt(localctx, 26)
		{
			p.SetState(2555)
			p.Match(MySqlParserORDER)
		}
		{
			p.SetState(2556)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(2557)
			p.UidList()
		}

	case 27:
		localctx = NewAlterByConvertCharsetContext(p, localctx)
		p.EnterOuterAlt(localctx, 27)
		{
			p.SetState(2558)
			p.Match(MySqlParserCONVERT)
		}
		{
			p.SetState(2559)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(2560)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(2561)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2562)
			p.CharsetName()
		}
		p.SetState(2565)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLLATE {
			{
				p.SetState(2563)
				p.Match(MySqlParserCOLLATE)
			}
			{
				p.SetState(2564)
				p.CollationName()
			}

		}

	case 28:
		localctx = NewAlterByDefaultCharsetContext(p, localctx)
		p.EnterOuterAlt(localctx, 28)
		p.SetState(2568)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT {
			{
				p.SetState(2567)
				p.Match(MySqlParserDEFAULT)
			}

		}
		{
			p.SetState(2570)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(2571)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2572)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(2573)
			p.CharsetName()
		}
		p.SetState(2577)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOLLATE {
			{
				p.SetState(2574)
				p.Match(MySqlParserCOLLATE)
			}
			{
				p.SetState(2575)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}
			{
				p.SetState(2576)
				p.CollationName()
			}

		}

	case 29:
		localctx = NewAlterByDiscardTablespaceContext(p, localctx)
		p.EnterOuterAlt(localctx, 29)
		{
			p.SetState(2579)
			p.Match(MySqlParserDISCARD)
		}
		{
			p.SetState(2580)
			p.Match(MySqlParserTABLESPACE)
		}

	case 30:
		localctx = NewAlterByImportTablespaceContext(p, localctx)
		p.EnterOuterAlt(localctx, 30)
		{
			p.SetState(2581)
			p.Match(MySqlParserIMPORT)
		}
		{
			p.SetState(2582)
			p.Match(MySqlParserTABLESPACE)
		}

	case 31:
		localctx = NewAlterByForceContext(p, localctx)
		p.EnterOuterAlt(localctx, 31)
		{
			p.SetState(2583)
			p.Match(MySqlParserFORCE)
		}

	case 32:
		localctx = NewAlterByValidateContext(p, localctx)
		p.EnterOuterAlt(localctx, 32)
		{
			p.SetState(2584)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AlterByValidateContext).validationFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserWITH || _la == MySqlParserWITHOUT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AlterByValidateContext).validationFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(2585)
			p.Match(MySqlParserVALIDATION)
		}

	case 33:
		localctx = NewAlterByAddPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 33)
		{
			p.SetState(2586)
			p.Match(MySqlParserADD)
		}
		{
			p.SetState(2587)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2588)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2589)
			p.PartitionDefinition()
		}
		p.SetState(2594)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2590)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2591)
				p.PartitionDefinition()
			}

			p.SetState(2596)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(2597)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 34:
		localctx = NewAlterByDropPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 34)
		{
			p.SetState(2599)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(2600)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2601)
			p.UidList()
		}

	case 35:
		localctx = NewAlterByDiscardPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 35)
		{
			p.SetState(2602)
			p.Match(MySqlParserDISCARD)
		}
		{
			p.SetState(2603)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2606)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2604)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2605)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		{
			p.SetState(2608)
			p.Match(MySqlParserTABLESPACE)
		}

	case 36:
		localctx = NewAlterByImportPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 36)
		{
			p.SetState(2609)
			p.Match(MySqlParserIMPORT)
		}
		{
			p.SetState(2610)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2613)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2611)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2612)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		{
			p.SetState(2615)
			p.Match(MySqlParserTABLESPACE)
		}

	case 37:
		localctx = NewAlterByTruncatePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 37)
		{
			p.SetState(2616)
			p.Match(MySqlParserTRUNCATE)
		}
		{
			p.SetState(2617)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2620)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2618)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2619)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 38:
		localctx = NewAlterByCoalescePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 38)
		{
			p.SetState(2622)
			p.Match(MySqlParserCOALESCE)
		}
		{
			p.SetState(2623)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2624)
			p.DecimalLiteral()
		}

	case 39:
		localctx = NewAlterByReorganizePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 39)
		{
			p.SetState(2625)
			p.Match(MySqlParserREORGANIZE)
		}
		{
			p.SetState(2626)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2627)
			p.UidList()
		}
		{
			p.SetState(2628)
			p.Match(MySqlParserINTO)
		}
		{
			p.SetState(2629)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2630)
			p.PartitionDefinition()
		}
		p.SetState(2635)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2631)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2632)
				p.PartitionDefinition()
			}

			p.SetState(2637)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(2638)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 40:
		localctx = NewAlterByExchangePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 40)
		{
			p.SetState(2640)
			p.Match(MySqlParserEXCHANGE)
		}
		{
			p.SetState(2641)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2642)
			p.Uid()
		}
		{
			p.SetState(2643)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(2644)
			p.Match(MySqlParserTABLE)
		}
		{
			p.SetState(2645)
			p.TableName()
		}
		p.SetState(2648)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH || _la == MySqlParserWITHOUT {
			{
				p.SetState(2646)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AlterByExchangePartitionContext).validationFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserWITH || _la == MySqlParserWITHOUT) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AlterByExchangePartitionContext).validationFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(2647)
				p.Match(MySqlParserVALIDATION)
			}

		}

	case 41:
		localctx = NewAlterByAnalyzePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 41)
		{
			p.SetState(2650)
			p.Match(MySqlParserANALYZE)
		}
		{
			p.SetState(2651)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2654)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2652)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2653)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 42:
		localctx = NewAlterByCheckPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 42)
		{
			p.SetState(2656)
			p.Match(MySqlParserCHECK)
		}
		{
			p.SetState(2657)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2660)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2658)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2659)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 43:
		localctx = NewAlterByOptimizePartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 43)
		{
			p.SetState(2662)
			p.Match(MySqlParserOPTIMIZE)
		}
		{
			p.SetState(2663)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2666)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2664)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2665)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 44:
		localctx = NewAlterByRebuildPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 44)
		{
			p.SetState(2668)
			p.Match(MySqlParserREBUILD)
		}
		{
			p.SetState(2669)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2672)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2670)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2671)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 45:
		localctx = NewAlterByRepairPartitionContext(p, localctx)
		p.EnterOuterAlt(localctx, 45)
		{
			p.SetState(2674)
			p.Match(MySqlParserREPAIR)
		}
		{
			p.SetState(2675)
			p.Match(MySqlParserPARTITION)
		}
		p.SetState(2678)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(2676)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(2677)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 46:
		localctx = NewAlterByRemovePartitioningContext(p, localctx)
		p.EnterOuterAlt(localctx, 46)
		{
			p.SetState(2680)
			p.Match(MySqlParserREMOVE)
		}
		{
			p.SetState(2681)
			p.Match(MySqlParserPARTITIONING)
		}

	case 47:
		localctx = NewAlterByUpgradePartitioningContext(p, localctx)
		p.EnterOuterAlt(localctx, 47)
		{
			p.SetState(2682)
			p.Match(MySqlParserUPGRADE)
		}
		{
			p.SetState(2683)
			p.Match(MySqlParserPARTITIONING)
		}

	}

	return localctx
}

// IDropDatabaseContext is an interface to support dynamic dispatch.
type IDropDatabaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDbFormat returns the dbFormat token.
	GetDbFormat() antlr.Token

	// SetDbFormat sets the dbFormat token.
	SetDbFormat(antlr.Token)

	// IsDropDatabaseContext differentiates from other interfaces.
	IsDropDatabaseContext()
}

type DropDatabaseContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	dbFormat antlr.Token
}

func NewEmptyDropDatabaseContext() *DropDatabaseContext {
	var p = new(DropDatabaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropDatabase
	return p
}

func (*DropDatabaseContext) IsDropDatabaseContext() {}

func NewDropDatabaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropDatabaseContext {
	var p = new(DropDatabaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropDatabase

	return p
}

func (s *DropDatabaseContext) GetParser() antlr.Parser { return s.parser }

func (s *DropDatabaseContext) GetDbFormat() antlr.Token { return s.dbFormat }

func (s *DropDatabaseContext) SetDbFormat(v antlr.Token) { s.dbFormat = v }

func (s *DropDatabaseContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropDatabaseContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DropDatabaseContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *DropDatabaseContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *DropDatabaseContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropDatabaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropDatabaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropDatabaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropDatabase(s)
	}
}

func (s *DropDatabaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropDatabase(s)
	}
}

func (p *MySqlParser) DropDatabase() (localctx IDropDatabaseContext) {
	this := p
	_ = this

	localctx = NewDropDatabaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 138, MySqlParserRULE_dropDatabase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2686)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2687)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*DropDatabaseContext).dbFormat = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDATABASE || _la == MySqlParserSCHEMA) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*DropDatabaseContext).dbFormat = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(2689)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2688)
			p.IfExists()
		}

	}
	{
		p.SetState(2691)
		p.Uid()
	}

	return localctx
}

// IDropEventContext is an interface to support dynamic dispatch.
type IDropEventContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropEventContext differentiates from other interfaces.
	IsDropEventContext()
}

type DropEventContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropEventContext() *DropEventContext {
	var p = new(DropEventContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropEvent
	return p
}

func (*DropEventContext) IsDropEventContext() {}

func NewDropEventContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropEventContext {
	var p = new(DropEventContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropEvent

	return p
}

func (s *DropEventContext) GetParser() antlr.Parser { return s.parser }

func (s *DropEventContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropEventContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *DropEventContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *DropEventContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropEventContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropEventContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropEventContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropEvent(s)
	}
}

func (s *DropEventContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropEvent(s)
	}
}

func (p *MySqlParser) DropEvent() (localctx IDropEventContext) {
	this := p
	_ = this

	localctx = NewDropEventContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 140, MySqlParserRULE_dropEvent)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2693)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2694)
		p.Match(MySqlParserEVENT)
	}
	p.SetState(2696)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2695)
			p.IfExists()
		}

	}
	{
		p.SetState(2698)
		p.FullId()
	}

	return localctx
}

// IDropIndexContext is an interface to support dynamic dispatch.
type IDropIndexContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIntimeAction returns the intimeAction token.
	GetIntimeAction() antlr.Token

	// GetAlgType returns the algType token.
	GetAlgType() antlr.Token

	// GetLockType returns the lockType token.
	GetLockType() antlr.Token

	// SetIntimeAction sets the intimeAction token.
	SetIntimeAction(antlr.Token)

	// SetAlgType sets the algType token.
	SetAlgType(antlr.Token)

	// SetLockType sets the lockType token.
	SetLockType(antlr.Token)

	// IsDropIndexContext differentiates from other interfaces.
	IsDropIndexContext()
}

type DropIndexContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	intimeAction antlr.Token
	algType      antlr.Token
	lockType     antlr.Token
}

func NewEmptyDropIndexContext() *DropIndexContext {
	var p = new(DropIndexContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropIndex
	return p
}

func (*DropIndexContext) IsDropIndexContext() {}

func NewDropIndexContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropIndexContext {
	var p = new(DropIndexContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropIndex

	return p
}

func (s *DropIndexContext) GetParser() antlr.Parser { return s.parser }

func (s *DropIndexContext) GetIntimeAction() antlr.Token { return s.intimeAction }

func (s *DropIndexContext) GetAlgType() antlr.Token { return s.algType }

func (s *DropIndexContext) GetLockType() antlr.Token { return s.lockType }

func (s *DropIndexContext) SetIntimeAction(v antlr.Token) { s.intimeAction = v }

func (s *DropIndexContext) SetAlgType(v antlr.Token) { s.algType = v }

func (s *DropIndexContext) SetLockType(v antlr.Token) { s.lockType = v }

func (s *DropIndexContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropIndexContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *DropIndexContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DropIndexContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *DropIndexContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *DropIndexContext) AllALGORITHM() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserALGORITHM)
}

func (s *DropIndexContext) ALGORITHM(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, i)
}

func (s *DropIndexContext) AllLOCK() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLOCK)
}

func (s *DropIndexContext) LOCK(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, i)
}

func (s *DropIndexContext) ONLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLINE, 0)
}

func (s *DropIndexContext) OFFLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFLINE, 0)
}

func (s *DropIndexContext) AllDEFAULT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDEFAULT)
}

func (s *DropIndexContext) DEFAULT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, i)
}

func (s *DropIndexContext) AllINPLACE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserINPLACE)
}

func (s *DropIndexContext) INPLACE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserINPLACE, i)
}

func (s *DropIndexContext) AllCOPY() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOPY)
}

func (s *DropIndexContext) COPY(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOPY, i)
}

func (s *DropIndexContext) AllNONE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNONE)
}

func (s *DropIndexContext) NONE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, i)
}

func (s *DropIndexContext) AllSHARED() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSHARED)
}

func (s *DropIndexContext) SHARED(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARED, i)
}

func (s *DropIndexContext) AllEXCLUSIVE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEXCLUSIVE)
}

func (s *DropIndexContext) EXCLUSIVE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLUSIVE, i)
}

func (s *DropIndexContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *DropIndexContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *DropIndexContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropIndexContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropIndexContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropIndex(s)
	}
}

func (s *DropIndexContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropIndex(s)
	}
}

func (p *MySqlParser) DropIndex() (localctx IDropIndexContext) {
	this := p
	_ = this

	localctx = NewDropIndexContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 142, MySqlParserRULE_dropIndex)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2700)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2701)
		p.Match(MySqlParserINDEX)
	}
	p.SetState(2703)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 337, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2702)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DropIndexContext).intimeAction = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserOFFLINE || _la == MySqlParserONLINE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DropIndexContext).intimeAction = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(2705)
		p.Uid()
	}
	{
		p.SetState(2706)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(2707)
		p.TableName()
	}
	p.SetState(2720)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 341, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			p.SetState(2718)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserALGORITHM:
				{
					p.SetState(2708)
					p.Match(MySqlParserALGORITHM)
				}
				p.SetState(2710)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserEQUAL_SYMBOL {
					{
						p.SetState(2709)
						p.Match(MySqlParserEQUAL_SYMBOL)
					}

				}
				{
					p.SetState(2712)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*DropIndexContext).algType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserDEFAULT || _la == MySqlParserCOPY || _la == MySqlParserINPLACE) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*DropIndexContext).algType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			case MySqlParserLOCK:
				{
					p.SetState(2713)
					p.Match(MySqlParserLOCK)
				}
				p.SetState(2715)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserEQUAL_SYMBOL {
					{
						p.SetState(2714)
						p.Match(MySqlParserEQUAL_SYMBOL)
					}

				}
				{
					p.SetState(2717)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*DropIndexContext).lockType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserDEFAULT || _la == MySqlParserEXCLUSIVE || _la == MySqlParserNONE || _la == MySqlParserSHARED) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*DropIndexContext).lockType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(2722)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 341, p.GetParserRuleContext())
	}

	return localctx
}

// IDropLogfileGroupContext is an interface to support dynamic dispatch.
type IDropLogfileGroupContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropLogfileGroupContext differentiates from other interfaces.
	IsDropLogfileGroupContext()
}

type DropLogfileGroupContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropLogfileGroupContext() *DropLogfileGroupContext {
	var p = new(DropLogfileGroupContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropLogfileGroup
	return p
}

func (*DropLogfileGroupContext) IsDropLogfileGroupContext() {}

func NewDropLogfileGroupContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropLogfileGroupContext {
	var p = new(DropLogfileGroupContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropLogfileGroup

	return p
}

func (s *DropLogfileGroupContext) GetParser() antlr.Parser { return s.parser }

func (s *DropLogfileGroupContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropLogfileGroupContext) LOGFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGFILE, 0)
}

func (s *DropLogfileGroupContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *DropLogfileGroupContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DropLogfileGroupContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *DropLogfileGroupContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *DropLogfileGroupContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *DropLogfileGroupContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropLogfileGroupContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropLogfileGroupContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropLogfileGroup(s)
	}
}

func (s *DropLogfileGroupContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropLogfileGroup(s)
	}
}

func (p *MySqlParser) DropLogfileGroup() (localctx IDropLogfileGroupContext) {
	this := p
	_ = this

	localctx = NewDropLogfileGroupContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 144, MySqlParserRULE_dropLogfileGroup)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2723)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2724)
		p.Match(MySqlParserLOGFILE)
	}
	{
		p.SetState(2725)
		p.Match(MySqlParserGROUP)
	}
	{
		p.SetState(2726)
		p.Uid()
	}
	{
		p.SetState(2727)
		p.Match(MySqlParserENGINE)
	}
	{
		p.SetState(2728)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	{
		p.SetState(2729)
		p.EngineName()
	}

	return localctx
}

// IDropProcedureContext is an interface to support dynamic dispatch.
type IDropProcedureContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropProcedureContext differentiates from other interfaces.
	IsDropProcedureContext()
}

type DropProcedureContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropProcedureContext() *DropProcedureContext {
	var p = new(DropProcedureContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropProcedure
	return p
}

func (*DropProcedureContext) IsDropProcedureContext() {}

func NewDropProcedureContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropProcedureContext {
	var p = new(DropProcedureContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropProcedure

	return p
}

func (s *DropProcedureContext) GetParser() antlr.Parser { return s.parser }

func (s *DropProcedureContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropProcedureContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *DropProcedureContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *DropProcedureContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropProcedureContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropProcedureContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropProcedureContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropProcedure(s)
	}
}

func (s *DropProcedureContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropProcedure(s)
	}
}

func (p *MySqlParser) DropProcedure() (localctx IDropProcedureContext) {
	this := p
	_ = this

	localctx = NewDropProcedureContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 146, MySqlParserRULE_dropProcedure)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2731)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2732)
		p.Match(MySqlParserPROCEDURE)
	}
	p.SetState(2734)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2733)
			p.IfExists()
		}

	}
	{
		p.SetState(2736)
		p.FullId()
	}

	return localctx
}

// IDropFunctionContext is an interface to support dynamic dispatch.
type IDropFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropFunctionContext differentiates from other interfaces.
	IsDropFunctionContext()
}

type DropFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropFunctionContext() *DropFunctionContext {
	var p = new(DropFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropFunction
	return p
}

func (*DropFunctionContext) IsDropFunctionContext() {}

func NewDropFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropFunctionContext {
	var p = new(DropFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropFunction

	return p
}

func (s *DropFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *DropFunctionContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropFunctionContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *DropFunctionContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *DropFunctionContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropFunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropFunction(s)
	}
}

func (s *DropFunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropFunction(s)
	}
}

func (p *MySqlParser) DropFunction() (localctx IDropFunctionContext) {
	this := p
	_ = this

	localctx = NewDropFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 148, MySqlParserRULE_dropFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2738)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2739)
		p.Match(MySqlParserFUNCTION)
	}
	p.SetState(2741)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2740)
			p.IfExists()
		}

	}
	{
		p.SetState(2743)
		p.FullId()
	}

	return localctx
}

// IDropServerContext is an interface to support dynamic dispatch.
type IDropServerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropServerContext differentiates from other interfaces.
	IsDropServerContext()
}

type DropServerContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropServerContext() *DropServerContext {
	var p = new(DropServerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropServer
	return p
}

func (*DropServerContext) IsDropServerContext() {}

func NewDropServerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropServerContext {
	var p = new(DropServerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropServer

	return p
}

func (s *DropServerContext) GetParser() antlr.Parser { return s.parser }

func (s *DropServerContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropServerContext) SERVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERVER, 0)
}

func (s *DropServerContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DropServerContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropServerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropServerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropServerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropServer(s)
	}
}

func (s *DropServerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropServer(s)
	}
}

func (p *MySqlParser) DropServer() (localctx IDropServerContext) {
	this := p
	_ = this

	localctx = NewDropServerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 150, MySqlParserRULE_dropServer)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2745)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2746)
		p.Match(MySqlParserSERVER)
	}
	p.SetState(2748)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2747)
			p.IfExists()
		}

	}
	{
		p.SetState(2750)
		p.Uid()
	}

	return localctx
}

// IDropTableContext is an interface to support dynamic dispatch.
type IDropTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDropType returns the dropType token.
	GetDropType() antlr.Token

	// SetDropType sets the dropType token.
	SetDropType(antlr.Token)

	// IsDropTableContext differentiates from other interfaces.
	IsDropTableContext()
}

type DropTableContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	dropType antlr.Token
}

func NewEmptyDropTableContext() *DropTableContext {
	var p = new(DropTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropTable
	return p
}

func (*DropTableContext) IsDropTableContext() {}

func NewDropTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropTableContext {
	var p = new(DropTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropTable

	return p
}

func (s *DropTableContext) GetParser() antlr.Parser { return s.parser }

func (s *DropTableContext) GetDropType() antlr.Token { return s.dropType }

func (s *DropTableContext) SetDropType(v antlr.Token) { s.dropType = v }

func (s *DropTableContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *DropTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *DropTableContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *DropTableContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropTableContext) RESTRICT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESTRICT, 0)
}

func (s *DropTableContext) CASCADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADE, 0)
}

func (s *DropTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropTable(s)
	}
}

func (s *DropTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropTable(s)
	}
}

func (p *MySqlParser) DropTable() (localctx IDropTableContext) {
	this := p
	_ = this

	localctx = NewDropTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 152, MySqlParserRULE_dropTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2752)
		p.Match(MySqlParserDROP)
	}
	p.SetState(2754)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserTEMPORARY {
		{
			p.SetState(2753)
			p.Match(MySqlParserTEMPORARY)
		}

	}
	{
		p.SetState(2756)
		p.Match(MySqlParserTABLE)
	}
	p.SetState(2758)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2757)
			p.IfExists()
		}

	}
	{
		p.SetState(2760)
		p.Tables()
	}
	p.SetState(2762)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCASCADE || _la == MySqlParserRESTRICT {
		{
			p.SetState(2761)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DropTableContext).dropType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCASCADE || _la == MySqlParserRESTRICT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DropTableContext).dropType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IDropTablespaceContext is an interface to support dynamic dispatch.
type IDropTablespaceContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropTablespaceContext differentiates from other interfaces.
	IsDropTablespaceContext()
}

type DropTablespaceContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropTablespaceContext() *DropTablespaceContext {
	var p = new(DropTablespaceContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropTablespace
	return p
}

func (*DropTablespaceContext) IsDropTablespaceContext() {}

func NewDropTablespaceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropTablespaceContext {
	var p = new(DropTablespaceContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropTablespace

	return p
}

func (s *DropTablespaceContext) GetParser() antlr.Parser { return s.parser }

func (s *DropTablespaceContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropTablespaceContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *DropTablespaceContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DropTablespaceContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *DropTablespaceContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *DropTablespaceContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *DropTablespaceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropTablespaceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropTablespaceContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropTablespace(s)
	}
}

func (s *DropTablespaceContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropTablespace(s)
	}
}

func (p *MySqlParser) DropTablespace() (localctx IDropTablespaceContext) {
	this := p
	_ = this

	localctx = NewDropTablespaceContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 154, MySqlParserRULE_dropTablespace)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2764)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2765)
		p.Match(MySqlParserTABLESPACE)
	}
	{
		p.SetState(2766)
		p.Uid()
	}
	p.SetState(2772)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserENGINE {
		{
			p.SetState(2767)
			p.Match(MySqlParserENGINE)
		}
		p.SetState(2769)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEQUAL_SYMBOL {
			{
				p.SetState(2768)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}

		}
		{
			p.SetState(2771)
			p.EngineName()
		}

	}

	return localctx
}

// IDropTriggerContext is an interface to support dynamic dispatch.
type IDropTriggerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropTriggerContext differentiates from other interfaces.
	IsDropTriggerContext()
}

type DropTriggerContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropTriggerContext() *DropTriggerContext {
	var p = new(DropTriggerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropTrigger
	return p
}

func (*DropTriggerContext) IsDropTriggerContext() {}

func NewDropTriggerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropTriggerContext {
	var p = new(DropTriggerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropTrigger

	return p
}

func (s *DropTriggerContext) GetParser() antlr.Parser { return s.parser }

func (s *DropTriggerContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropTriggerContext) TRIGGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGER, 0)
}

func (s *DropTriggerContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *DropTriggerContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropTriggerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropTriggerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropTriggerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropTrigger(s)
	}
}

func (s *DropTriggerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropTrigger(s)
	}
}

func (p *MySqlParser) DropTrigger() (localctx IDropTriggerContext) {
	this := p
	_ = this

	localctx = NewDropTriggerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 156, MySqlParserRULE_dropTrigger)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2774)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2775)
		p.Match(MySqlParserTRIGGER)
	}
	p.SetState(2777)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2776)
			p.IfExists()
		}

	}
	{
		p.SetState(2779)
		p.FullId()
	}

	return localctx
}

// IDropViewContext is an interface to support dynamic dispatch.
type IDropViewContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDropType returns the dropType token.
	GetDropType() antlr.Token

	// SetDropType sets the dropType token.
	SetDropType(antlr.Token)

	// IsDropViewContext differentiates from other interfaces.
	IsDropViewContext()
}

type DropViewContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	dropType antlr.Token
}

func NewEmptyDropViewContext() *DropViewContext {
	var p = new(DropViewContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropView
	return p
}

func (*DropViewContext) IsDropViewContext() {}

func NewDropViewContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropViewContext {
	var p = new(DropViewContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropView

	return p
}

func (s *DropViewContext) GetParser() antlr.Parser { return s.parser }

func (s *DropViewContext) GetDropType() antlr.Token { return s.dropType }

func (s *DropViewContext) SetDropType(v antlr.Token) { s.dropType = v }

func (s *DropViewContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropViewContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *DropViewContext) AllFullId() []IFullIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullIdContext)(nil)).Elem())
	var tst = make([]IFullIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullIdContext)
		}
	}

	return tst
}

func (s *DropViewContext) FullId(i int) IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *DropViewContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropViewContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *DropViewContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *DropViewContext) RESTRICT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESTRICT, 0)
}

func (s *DropViewContext) CASCADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADE, 0)
}

func (s *DropViewContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropViewContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropViewContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropView(s)
	}
}

func (s *DropViewContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropView(s)
	}
}

func (p *MySqlParser) DropView() (localctx IDropViewContext) {
	this := p
	_ = this

	localctx = NewDropViewContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 158, MySqlParserRULE_dropView)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2781)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(2782)
		p.Match(MySqlParserVIEW)
	}
	p.SetState(2784)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(2783)
			p.IfExists()
		}

	}
	{
		p.SetState(2786)
		p.FullId()
	}
	p.SetState(2791)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(2787)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(2788)
			p.FullId()
		}

		p.SetState(2793)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(2795)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCASCADE || _la == MySqlParserRESTRICT {
		{
			p.SetState(2794)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DropViewContext).dropType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCASCADE || _la == MySqlParserRESTRICT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DropViewContext).dropType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IRenameTableContext is an interface to support dynamic dispatch.
type IRenameTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRenameTableContext differentiates from other interfaces.
	IsRenameTableContext()
}

type RenameTableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRenameTableContext() *RenameTableContext {
	var p = new(RenameTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_renameTable
	return p
}

func (*RenameTableContext) IsRenameTableContext() {}

func NewRenameTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RenameTableContext {
	var p = new(RenameTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_renameTable

	return p
}

func (s *RenameTableContext) GetParser() antlr.Parser { return s.parser }

func (s *RenameTableContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *RenameTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *RenameTableContext) AllRenameTableClause() []IRenameTableClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRenameTableClauseContext)(nil)).Elem())
	var tst = make([]IRenameTableClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRenameTableClauseContext)
		}
	}

	return tst
}

func (s *RenameTableContext) RenameTableClause(i int) IRenameTableClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRenameTableClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRenameTableClauseContext)
}

func (s *RenameTableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RenameTableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RenameTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RenameTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RenameTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRenameTable(s)
	}
}

func (s *RenameTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRenameTable(s)
	}
}

func (p *MySqlParser) RenameTable() (localctx IRenameTableContext) {
	this := p
	_ = this

	localctx = NewRenameTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 160, MySqlParserRULE_renameTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2797)
		p.Match(MySqlParserRENAME)
	}
	{
		p.SetState(2798)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(2799)
		p.RenameTableClause()
	}
	p.SetState(2804)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(2800)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(2801)
			p.RenameTableClause()
		}

		p.SetState(2806)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IRenameTableClauseContext is an interface to support dynamic dispatch.
type IRenameTableClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRenameTableClauseContext differentiates from other interfaces.
	IsRenameTableClauseContext()
}

type RenameTableClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRenameTableClauseContext() *RenameTableClauseContext {
	var p = new(RenameTableClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_renameTableClause
	return p
}

func (*RenameTableClauseContext) IsRenameTableClauseContext() {}

func NewRenameTableClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RenameTableClauseContext {
	var p = new(RenameTableClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_renameTableClause

	return p
}

func (s *RenameTableClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *RenameTableClauseContext) AllTableName() []ITableNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableNameContext)(nil)).Elem())
	var tst = make([]ITableNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableNameContext)
		}
	}

	return tst
}

func (s *RenameTableClauseContext) TableName(i int) ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *RenameTableClauseContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *RenameTableClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RenameTableClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RenameTableClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRenameTableClause(s)
	}
}

func (s *RenameTableClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRenameTableClause(s)
	}
}

func (p *MySqlParser) RenameTableClause() (localctx IRenameTableClauseContext) {
	this := p
	_ = this

	localctx = NewRenameTableClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 162, MySqlParserRULE_renameTableClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2807)
		p.TableName()
	}
	{
		p.SetState(2808)
		p.Match(MySqlParserTO)
	}
	{
		p.SetState(2809)
		p.TableName()
	}

	return localctx
}

// ITruncateTableContext is an interface to support dynamic dispatch.
type ITruncateTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTruncateTableContext differentiates from other interfaces.
	IsTruncateTableContext()
}

type TruncateTableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTruncateTableContext() *TruncateTableContext {
	var p = new(TruncateTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_truncateTable
	return p
}

func (*TruncateTableContext) IsTruncateTableContext() {}

func NewTruncateTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TruncateTableContext {
	var p = new(TruncateTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_truncateTable

	return p
}

func (s *TruncateTableContext) GetParser() antlr.Parser { return s.parser }

func (s *TruncateTableContext) TRUNCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRUNCATE, 0)
}

func (s *TruncateTableContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *TruncateTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *TruncateTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TruncateTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TruncateTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTruncateTable(s)
	}
}

func (s *TruncateTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTruncateTable(s)
	}
}

func (p *MySqlParser) TruncateTable() (localctx ITruncateTableContext) {
	this := p
	_ = this

	localctx = NewTruncateTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 164, MySqlParserRULE_truncateTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2811)
		p.Match(MySqlParserTRUNCATE)
	}
	p.SetState(2813)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserTABLE {
		{
			p.SetState(2812)
			p.Match(MySqlParserTABLE)
		}

	}
	{
		p.SetState(2815)
		p.TableName()
	}

	return localctx
}

// ICallStatementContext is an interface to support dynamic dispatch.
type ICallStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCallStatementContext differentiates from other interfaces.
	IsCallStatementContext()
}

type CallStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCallStatementContext() *CallStatementContext {
	var p = new(CallStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_callStatement
	return p
}

func (*CallStatementContext) IsCallStatementContext() {}

func NewCallStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CallStatementContext {
	var p = new(CallStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_callStatement

	return p
}

func (s *CallStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *CallStatementContext) CALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserCALL, 0)
}

func (s *CallStatementContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *CallStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CallStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CallStatementContext) Constants() IConstantsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantsContext)
}

func (s *CallStatementContext) Expressions() IExpressionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionsContext)
}

func (s *CallStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CallStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CallStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCallStatement(s)
	}
}

func (s *CallStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCallStatement(s)
	}
}

func (p *MySqlParser) CallStatement() (localctx ICallStatementContext) {
	this := p
	_ = this

	localctx = NewCallStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 166, MySqlParserRULE_callStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2817)
		p.Match(MySqlParserCALL)
	}
	{
		p.SetState(2818)
		p.FullId()
	}
	p.SetState(2825)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 357, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2819)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(2822)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 356, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(2820)
				p.Constants()
			}

		} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 356, p.GetParserRuleContext()) == 2 {
			{
				p.SetState(2821)
				p.Expressions()
			}

		}
		{
			p.SetState(2824)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IDeleteStatementContext is an interface to support dynamic dispatch.
type IDeleteStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDeleteStatementContext differentiates from other interfaces.
	IsDeleteStatementContext()
}

type DeleteStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDeleteStatementContext() *DeleteStatementContext {
	var p = new(DeleteStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_deleteStatement
	return p
}

func (*DeleteStatementContext) IsDeleteStatementContext() {}

func NewDeleteStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeleteStatementContext {
	var p = new(DeleteStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_deleteStatement

	return p
}

func (s *DeleteStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *DeleteStatementContext) SingleDeleteStatement() ISingleDeleteStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISingleDeleteStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISingleDeleteStatementContext)
}

func (s *DeleteStatementContext) MultipleDeleteStatement() IMultipleDeleteStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMultipleDeleteStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMultipleDeleteStatementContext)
}

func (s *DeleteStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeleteStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeleteStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeleteStatement(s)
	}
}

func (s *DeleteStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeleteStatement(s)
	}
}

func (p *MySqlParser) DeleteStatement() (localctx IDeleteStatementContext) {
	this := p
	_ = this

	localctx = NewDeleteStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 168, MySqlParserRULE_deleteStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2829)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 358, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(2827)
			p.SingleDeleteStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2828)
			p.MultipleDeleteStatement()
		}

	}

	return localctx
}

// IDoStatementContext is an interface to support dynamic dispatch.
type IDoStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDoStatementContext differentiates from other interfaces.
	IsDoStatementContext()
}

type DoStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDoStatementContext() *DoStatementContext {
	var p = new(DoStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_doStatement
	return p
}

func (*DoStatementContext) IsDoStatementContext() {}

func NewDoStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DoStatementContext {
	var p = new(DoStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_doStatement

	return p
}

func (s *DoStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *DoStatementContext) DO() antlr.TerminalNode {
	return s.GetToken(MySqlParserDO, 0)
}

func (s *DoStatementContext) Expressions() IExpressionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionsContext)
}

func (s *DoStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DoStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DoStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDoStatement(s)
	}
}

func (s *DoStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDoStatement(s)
	}
}

func (p *MySqlParser) DoStatement() (localctx IDoStatementContext) {
	this := p
	_ = this

	localctx = NewDoStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 170, MySqlParserRULE_doStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2831)
		p.Match(MySqlParserDO)
	}
	{
		p.SetState(2832)
		p.Expressions()
	}

	return localctx
}

// IHandlerStatementContext is an interface to support dynamic dispatch.
type IHandlerStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHandlerStatementContext differentiates from other interfaces.
	IsHandlerStatementContext()
}

type HandlerStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHandlerStatementContext() *HandlerStatementContext {
	var p = new(HandlerStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerStatement
	return p
}

func (*HandlerStatementContext) IsHandlerStatementContext() {}

func NewHandlerStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerStatementContext {
	var p = new(HandlerStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerStatement

	return p
}

func (s *HandlerStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerStatementContext) HandlerOpenStatement() IHandlerOpenStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerOpenStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHandlerOpenStatementContext)
}

func (s *HandlerStatementContext) HandlerReadIndexStatement() IHandlerReadIndexStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerReadIndexStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHandlerReadIndexStatementContext)
}

func (s *HandlerStatementContext) HandlerReadStatement() IHandlerReadStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerReadStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHandlerReadStatementContext)
}

func (s *HandlerStatementContext) HandlerCloseStatement() IHandlerCloseStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerCloseStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHandlerCloseStatementContext)
}

func (s *HandlerStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HandlerStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerStatement(s)
	}
}

func (s *HandlerStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerStatement(s)
	}
}

func (p *MySqlParser) HandlerStatement() (localctx IHandlerStatementContext) {
	this := p
	_ = this

	localctx = NewHandlerStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 172, MySqlParserRULE_handlerStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(2838)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 359, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(2834)
			p.HandlerOpenStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(2835)
			p.HandlerReadIndexStatement()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(2836)
			p.HandlerReadStatement()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(2837)
			p.HandlerCloseStatement()
		}

	}

	return localctx
}

// IInsertStatementContext is an interface to support dynamic dispatch.
type IInsertStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// GetPartitions returns the partitions rule contexts.
	GetPartitions() IUidListContext

	// GetColumns returns the columns rule contexts.
	GetColumns() IUidListContext

	// GetSetFirst returns the setFirst rule contexts.
	GetSetFirst() IUpdatedElementContext

	// Get_updatedElement returns the _updatedElement rule contexts.
	Get_updatedElement() IUpdatedElementContext

	// GetDuplicatedFirst returns the duplicatedFirst rule contexts.
	GetDuplicatedFirst() IUpdatedElementContext

	// SetPartitions sets the partitions rule contexts.
	SetPartitions(IUidListContext)

	// SetColumns sets the columns rule contexts.
	SetColumns(IUidListContext)

	// SetSetFirst sets the setFirst rule contexts.
	SetSetFirst(IUpdatedElementContext)

	// Set_updatedElement sets the _updatedElement rule contexts.
	Set_updatedElement(IUpdatedElementContext)

	// SetDuplicatedFirst sets the duplicatedFirst rule contexts.
	SetDuplicatedFirst(IUpdatedElementContext)

	// GetSetElements returns the setElements rule context list.
	GetSetElements() []IUpdatedElementContext

	// GetDuplicatedElements returns the duplicatedElements rule context list.
	GetDuplicatedElements() []IUpdatedElementContext

	// SetSetElements sets the setElements rule context list.
	SetSetElements([]IUpdatedElementContext)

	// SetDuplicatedElements sets the duplicatedElements rule context list.
	SetDuplicatedElements([]IUpdatedElementContext)

	// IsInsertStatementContext differentiates from other interfaces.
	IsInsertStatementContext()
}

type InsertStatementContext struct {
	*antlr.BaseParserRuleContext
	parser             antlr.Parser
	priority           antlr.Token
	partitions         IUidListContext
	columns            IUidListContext
	setFirst           IUpdatedElementContext
	_updatedElement    IUpdatedElementContext
	setElements        []IUpdatedElementContext
	duplicatedFirst    IUpdatedElementContext
	duplicatedElements []IUpdatedElementContext
}

func NewEmptyInsertStatementContext() *InsertStatementContext {
	var p = new(InsertStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_insertStatement
	return p
}

func (*InsertStatementContext) IsInsertStatementContext() {}

func NewInsertStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertStatementContext {
	var p = new(InsertStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_insertStatement

	return p
}

func (s *InsertStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *InsertStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *InsertStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *InsertStatementContext) GetPartitions() IUidListContext { return s.partitions }

func (s *InsertStatementContext) GetColumns() IUidListContext { return s.columns }

func (s *InsertStatementContext) GetSetFirst() IUpdatedElementContext { return s.setFirst }

func (s *InsertStatementContext) Get_updatedElement() IUpdatedElementContext {
	return s._updatedElement
}

func (s *InsertStatementContext) GetDuplicatedFirst() IUpdatedElementContext {
	return s.duplicatedFirst
}

func (s *InsertStatementContext) SetPartitions(v IUidListContext) { s.partitions = v }

func (s *InsertStatementContext) SetColumns(v IUidListContext) { s.columns = v }

func (s *InsertStatementContext) SetSetFirst(v IUpdatedElementContext) { s.setFirst = v }

func (s *InsertStatementContext) Set_updatedElement(v IUpdatedElementContext) { s._updatedElement = v }

func (s *InsertStatementContext) SetDuplicatedFirst(v IUpdatedElementContext) { s.duplicatedFirst = v }

func (s *InsertStatementContext) GetSetElements() []IUpdatedElementContext { return s.setElements }

func (s *InsertStatementContext) GetDuplicatedElements() []IUpdatedElementContext {
	return s.duplicatedElements
}

func (s *InsertStatementContext) SetSetElements(v []IUpdatedElementContext) { s.setElements = v }

func (s *InsertStatementContext) SetDuplicatedElements(v []IUpdatedElementContext) {
	s.duplicatedElements = v
}

func (s *InsertStatementContext) INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT, 0)
}

func (s *InsertStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *InsertStatementContext) InsertStatementValue() IInsertStatementValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IInsertStatementValueContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IInsertStatementValueContext)
}

func (s *InsertStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *InsertStatementContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *InsertStatementContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *InsertStatementContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *InsertStatementContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *InsertStatementContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *InsertStatementContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *InsertStatementContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *InsertStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *InsertStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *InsertStatementContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *InsertStatementContext) DUPLICATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDUPLICATE, 0)
}

func (s *InsertStatementContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *InsertStatementContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *InsertStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *InsertStatementContext) DELAYED() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELAYED, 0)
}

func (s *InsertStatementContext) HIGH_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserHIGH_PRIORITY, 0)
}

func (s *InsertStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *InsertStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *InsertStatementContext) AllUidList() []IUidListContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidListContext)(nil)).Elem())
	var tst = make([]IUidListContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidListContext)
		}
	}

	return tst
}

func (s *InsertStatementContext) UidList(i int) IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *InsertStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *InsertStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *InsertStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterInsertStatement(s)
	}
}

func (s *InsertStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitInsertStatement(s)
	}
}

func (p *MySqlParser) InsertStatement() (localctx IInsertStatementContext) {
	this := p
	_ = this

	localctx = NewInsertStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 174, MySqlParserRULE_insertStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2840)
		p.Match(MySqlParserINSERT)
	}
	p.SetState(2842)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDELAYED || _la == MySqlParserHIGH_PRIORITY || _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(2841)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*InsertStatementContext).priority = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDELAYED || _la == MySqlParserHIGH_PRIORITY || _la == MySqlParserLOW_PRIORITY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*InsertStatementContext).priority = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2845)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(2844)
			p.Match(MySqlParserIGNORE)
		}

	}
	p.SetState(2848)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINTO {
		{
			p.SetState(2847)
			p.Match(MySqlParserINTO)
		}

	}
	{
		p.SetState(2850)
		p.TableName()
	}
	p.SetState(2857)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(2851)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2852)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(2854)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(2853)

				var _x = p.UidList()

				localctx.(*InsertStatementContext).partitions = _x
			}

		}
		{
			p.SetState(2856)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(2875)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSELECT, MySqlParserVALUES, MySqlParserVALUE, MySqlParserLR_BRACKET:
		p.SetState(2863)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 365, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(2859)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(2860)

				var _x = p.UidList()

				localctx.(*InsertStatementContext).columns = _x
			}
			{
				p.SetState(2861)
				p.Match(MySqlParserRR_BRACKET)
			}

		}
		{
			p.SetState(2865)
			p.InsertStatementValue()
		}

	case MySqlParserSET:
		{
			p.SetState(2866)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2867)

			var _x = p.UpdatedElement()

			localctx.(*InsertStatementContext).setFirst = _x
		}
		p.SetState(2872)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2868)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2869)

				var _x = p.UpdatedElement()

				localctx.(*InsertStatementContext)._updatedElement = _x
			}
			localctx.(*InsertStatementContext).setElements = append(localctx.(*InsertStatementContext).setElements, localctx.(*InsertStatementContext)._updatedElement)

			p.SetState(2874)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}
	p.SetState(2889)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserON {
		{
			p.SetState(2877)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(2878)
			p.Match(MySqlParserDUPLICATE)
		}
		{
			p.SetState(2879)
			p.Match(MySqlParserKEY)
		}
		{
			p.SetState(2880)
			p.Match(MySqlParserUPDATE)
		}
		{
			p.SetState(2881)

			var _x = p.UpdatedElement()

			localctx.(*InsertStatementContext).duplicatedFirst = _x
		}
		p.SetState(2886)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2882)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2883)

				var _x = p.UpdatedElement()

				localctx.(*InsertStatementContext)._updatedElement = _x
			}
			localctx.(*InsertStatementContext).duplicatedElements = append(localctx.(*InsertStatementContext).duplicatedElements, localctx.(*InsertStatementContext)._updatedElement)

			p.SetState(2888)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// ILoadDataStatementContext is an interface to support dynamic dispatch.
type ILoadDataStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// GetFilename returns the filename token.
	GetFilename() antlr.Token

	// GetViolation returns the violation token.
	GetViolation() antlr.Token

	// GetFieldsFormat returns the fieldsFormat token.
	GetFieldsFormat() antlr.Token

	// GetLinesFormat returns the linesFormat token.
	GetLinesFormat() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// SetFilename sets the filename token.
	SetFilename(antlr.Token)

	// SetViolation sets the violation token.
	SetViolation(antlr.Token)

	// SetFieldsFormat sets the fieldsFormat token.
	SetFieldsFormat(antlr.Token)

	// SetLinesFormat sets the linesFormat token.
	SetLinesFormat(antlr.Token)

	// GetCharset returns the charset rule contexts.
	GetCharset() ICharsetNameContext

	// SetCharset sets the charset rule contexts.
	SetCharset(ICharsetNameContext)

	// IsLoadDataStatementContext differentiates from other interfaces.
	IsLoadDataStatementContext()
}

type LoadDataStatementContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	priority     antlr.Token
	filename     antlr.Token
	violation    antlr.Token
	charset      ICharsetNameContext
	fieldsFormat antlr.Token
	linesFormat  antlr.Token
}

func NewEmptyLoadDataStatementContext() *LoadDataStatementContext {
	var p = new(LoadDataStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_loadDataStatement
	return p
}

func (*LoadDataStatementContext) IsLoadDataStatementContext() {}

func NewLoadDataStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LoadDataStatementContext {
	var p = new(LoadDataStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_loadDataStatement

	return p
}

func (s *LoadDataStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *LoadDataStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *LoadDataStatementContext) GetFilename() antlr.Token { return s.filename }

func (s *LoadDataStatementContext) GetViolation() antlr.Token { return s.violation }

func (s *LoadDataStatementContext) GetFieldsFormat() antlr.Token { return s.fieldsFormat }

func (s *LoadDataStatementContext) GetLinesFormat() antlr.Token { return s.linesFormat }

func (s *LoadDataStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *LoadDataStatementContext) SetFilename(v antlr.Token) { s.filename = v }

func (s *LoadDataStatementContext) SetViolation(v antlr.Token) { s.violation = v }

func (s *LoadDataStatementContext) SetFieldsFormat(v antlr.Token) { s.fieldsFormat = v }

func (s *LoadDataStatementContext) SetLinesFormat(v antlr.Token) { s.linesFormat = v }

func (s *LoadDataStatementContext) GetCharset() ICharsetNameContext { return s.charset }

func (s *LoadDataStatementContext) SetCharset(v ICharsetNameContext) { s.charset = v }

func (s *LoadDataStatementContext) LOAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOAD, 0)
}

func (s *LoadDataStatementContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *LoadDataStatementContext) INFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINFILE, 0)
}

func (s *LoadDataStatementContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *LoadDataStatementContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *LoadDataStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *LoadDataStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *LoadDataStatementContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *LoadDataStatementContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *LoadDataStatementContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *LoadDataStatementContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *LoadDataStatementContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *LoadDataStatementContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *LoadDataStatementContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *LoadDataStatementContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *LoadDataStatementContext) AllSET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSET)
}

func (s *LoadDataStatementContext) SET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, i)
}

func (s *LoadDataStatementContext) AllLINES() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLINES)
}

func (s *LoadDataStatementContext) LINES(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLINES, i)
}

func (s *LoadDataStatementContext) AllIGNORE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserIGNORE)
}

func (s *LoadDataStatementContext) IGNORE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, i)
}

func (s *LoadDataStatementContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LoadDataStatementContext) AllAssignmentField() []IAssignmentFieldContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem())
	var tst = make([]IAssignmentFieldContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IAssignmentFieldContext)
		}
	}

	return tst
}

func (s *LoadDataStatementContext) AssignmentField(i int) IAssignmentFieldContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IAssignmentFieldContext)
}

func (s *LoadDataStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *LoadDataStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *LoadDataStatementContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *LoadDataStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *LoadDataStatementContext) CONCURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONCURRENT, 0)
}

func (s *LoadDataStatementContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *LoadDataStatementContext) FIELDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIELDS, 0)
}

func (s *LoadDataStatementContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *LoadDataStatementContext) ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserROWS, 0)
}

func (s *LoadDataStatementContext) AllSelectFieldsInto() []ISelectFieldsIntoContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectFieldsIntoContext)(nil)).Elem())
	var tst = make([]ISelectFieldsIntoContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectFieldsIntoContext)
		}
	}

	return tst
}

func (s *LoadDataStatementContext) SelectFieldsInto(i int) ISelectFieldsIntoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectFieldsIntoContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectFieldsIntoContext)
}

func (s *LoadDataStatementContext) AllSelectLinesInto() []ISelectLinesIntoContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectLinesIntoContext)(nil)).Elem())
	var tst = make([]ISelectLinesIntoContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectLinesIntoContext)
		}
	}

	return tst
}

func (s *LoadDataStatementContext) SelectLinesInto(i int) ISelectLinesIntoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectLinesIntoContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectLinesIntoContext)
}

func (s *LoadDataStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *LoadDataStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *LoadDataStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LoadDataStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LoadDataStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLoadDataStatement(s)
	}
}

func (s *LoadDataStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLoadDataStatement(s)
	}
}

func (p *MySqlParser) LoadDataStatement() (localctx ILoadDataStatementContext) {
	this := p
	_ = this

	localctx = NewLoadDataStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 176, MySqlParserRULE_loadDataStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2891)
		p.Match(MySqlParserLOAD)
	}
	{
		p.SetState(2892)
		p.Match(MySqlParserDATA)
	}
	p.SetState(2894)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY || _la == MySqlParserCONCURRENT {
		{
			p.SetState(2893)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadDataStatementContext).priority = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLOW_PRIORITY || _la == MySqlParserCONCURRENT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadDataStatementContext).priority = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2897)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOCAL {
		{
			p.SetState(2896)
			p.Match(MySqlParserLOCAL)
		}

	}
	{
		p.SetState(2899)
		p.Match(MySqlParserINFILE)
	}
	{
		p.SetState(2900)

		var _m = p.Match(MySqlParserSTRING_LITERAL)

		localctx.(*LoadDataStatementContext).filename = _m
	}
	p.SetState(2902)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE || _la == MySqlParserREPLACE {
		{
			p.SetState(2901)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadDataStatementContext).violation = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserIGNORE || _la == MySqlParserREPLACE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadDataStatementContext).violation = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(2904)
		p.Match(MySqlParserINTO)
	}
	{
		p.SetState(2905)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(2906)
		p.TableName()
	}
	p.SetState(2912)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(2907)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(2908)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2909)
			p.UidList()
		}
		{
			p.SetState(2910)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(2917)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCHARACTER {
		{
			p.SetState(2914)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(2915)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2916)

			var _x = p.CharsetName()

			localctx.(*LoadDataStatementContext).charset = _x
		}

	}
	p.SetState(2925)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOLUMNS || _la == MySqlParserFIELDS {
		{
			p.SetState(2919)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadDataStatementContext).fieldsFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCOLUMNS || _la == MySqlParserFIELDS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadDataStatementContext).fieldsFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(2921)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserENCLOSED || _la == MySqlParserESCAPED || _la == MySqlParserOPTIONALLY || _la == MySqlParserTERMINATED {
			{
				p.SetState(2920)
				p.SelectFieldsInto()
			}

			p.SetState(2923)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}
	p.SetState(2933)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLINES {
		{
			p.SetState(2927)
			p.Match(MySqlParserLINES)
		}
		p.SetState(2929)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserSTARTING || _la == MySqlParserTERMINATED {
			{
				p.SetState(2928)
				p.SelectLinesInto()
			}

			p.SetState(2931)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}
	p.SetState(2939)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(2935)
			p.Match(MySqlParserIGNORE)
		}
		{
			p.SetState(2936)
			p.DecimalLiteral()
		}
		{
			p.SetState(2937)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadDataStatementContext).linesFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLINES || _la == MySqlParserROWS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadDataStatementContext).linesFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2952)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 381, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2941)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(2942)
			p.AssignmentField()
		}
		p.SetState(2947)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2943)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2944)
				p.AssignmentField()
			}

			p.SetState(2949)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(2950)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(2963)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 383, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(2954)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2955)
			p.UpdatedElement()
		}
		p.SetState(2960)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(2956)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(2957)
				p.UpdatedElement()
			}

			p.SetState(2962)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// ILoadXmlStatementContext is an interface to support dynamic dispatch.
type ILoadXmlStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// GetFilename returns the filename token.
	GetFilename() antlr.Token

	// GetViolation returns the violation token.
	GetViolation() antlr.Token

	// GetTag returns the tag token.
	GetTag() antlr.Token

	// GetLinesFormat returns the linesFormat token.
	GetLinesFormat() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// SetFilename sets the filename token.
	SetFilename(antlr.Token)

	// SetViolation sets the violation token.
	SetViolation(antlr.Token)

	// SetTag sets the tag token.
	SetTag(antlr.Token)

	// SetLinesFormat sets the linesFormat token.
	SetLinesFormat(antlr.Token)

	// GetCharset returns the charset rule contexts.
	GetCharset() ICharsetNameContext

	// SetCharset sets the charset rule contexts.
	SetCharset(ICharsetNameContext)

	// IsLoadXmlStatementContext differentiates from other interfaces.
	IsLoadXmlStatementContext()
}

type LoadXmlStatementContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	priority    antlr.Token
	filename    antlr.Token
	violation   antlr.Token
	charset     ICharsetNameContext
	tag         antlr.Token
	linesFormat antlr.Token
}

func NewEmptyLoadXmlStatementContext() *LoadXmlStatementContext {
	var p = new(LoadXmlStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_loadXmlStatement
	return p
}

func (*LoadXmlStatementContext) IsLoadXmlStatementContext() {}

func NewLoadXmlStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LoadXmlStatementContext {
	var p = new(LoadXmlStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_loadXmlStatement

	return p
}

func (s *LoadXmlStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *LoadXmlStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *LoadXmlStatementContext) GetFilename() antlr.Token { return s.filename }

func (s *LoadXmlStatementContext) GetViolation() antlr.Token { return s.violation }

func (s *LoadXmlStatementContext) GetTag() antlr.Token { return s.tag }

func (s *LoadXmlStatementContext) GetLinesFormat() antlr.Token { return s.linesFormat }

func (s *LoadXmlStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *LoadXmlStatementContext) SetFilename(v antlr.Token) { s.filename = v }

func (s *LoadXmlStatementContext) SetViolation(v antlr.Token) { s.violation = v }

func (s *LoadXmlStatementContext) SetTag(v antlr.Token) { s.tag = v }

func (s *LoadXmlStatementContext) SetLinesFormat(v antlr.Token) { s.linesFormat = v }

func (s *LoadXmlStatementContext) GetCharset() ICharsetNameContext { return s.charset }

func (s *LoadXmlStatementContext) SetCharset(v ICharsetNameContext) { s.charset = v }

func (s *LoadXmlStatementContext) LOAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOAD, 0)
}

func (s *LoadXmlStatementContext) XML() antlr.TerminalNode {
	return s.GetToken(MySqlParserXML, 0)
}

func (s *LoadXmlStatementContext) INFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINFILE, 0)
}

func (s *LoadXmlStatementContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *LoadXmlStatementContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *LoadXmlStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *LoadXmlStatementContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *LoadXmlStatementContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *LoadXmlStatementContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *LoadXmlStatementContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *LoadXmlStatementContext) AllSET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSET)
}

func (s *LoadXmlStatementContext) SET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, i)
}

func (s *LoadXmlStatementContext) AllROWS() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserROWS)
}

func (s *LoadXmlStatementContext) ROWS(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserROWS, i)
}

func (s *LoadXmlStatementContext) IDENTIFIED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIDENTIFIED, 0)
}

func (s *LoadXmlStatementContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *LoadXmlStatementContext) LESS_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLESS_SYMBOL, 0)
}

func (s *LoadXmlStatementContext) GREATER_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGREATER_SYMBOL, 0)
}

func (s *LoadXmlStatementContext) AllIGNORE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserIGNORE)
}

func (s *LoadXmlStatementContext) IGNORE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, i)
}

func (s *LoadXmlStatementContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LoadXmlStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *LoadXmlStatementContext) AllAssignmentField() []IAssignmentFieldContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem())
	var tst = make([]IAssignmentFieldContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IAssignmentFieldContext)
		}
	}

	return tst
}

func (s *LoadXmlStatementContext) AssignmentField(i int) IAssignmentFieldContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IAssignmentFieldContext)
}

func (s *LoadXmlStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *LoadXmlStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *LoadXmlStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *LoadXmlStatementContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *LoadXmlStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *LoadXmlStatementContext) CONCURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONCURRENT, 0)
}

func (s *LoadXmlStatementContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *LoadXmlStatementContext) LINES() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINES, 0)
}

func (s *LoadXmlStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *LoadXmlStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *LoadXmlStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LoadXmlStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LoadXmlStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLoadXmlStatement(s)
	}
}

func (s *LoadXmlStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLoadXmlStatement(s)
	}
}

func (p *MySqlParser) LoadXmlStatement() (localctx ILoadXmlStatementContext) {
	this := p
	_ = this

	localctx = NewLoadXmlStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 178, MySqlParserRULE_loadXmlStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(2965)
		p.Match(MySqlParserLOAD)
	}
	{
		p.SetState(2966)
		p.Match(MySqlParserXML)
	}
	p.SetState(2968)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY || _la == MySqlParserCONCURRENT {
		{
			p.SetState(2967)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadXmlStatementContext).priority = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLOW_PRIORITY || _la == MySqlParserCONCURRENT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadXmlStatementContext).priority = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(2971)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOCAL {
		{
			p.SetState(2970)
			p.Match(MySqlParserLOCAL)
		}

	}
	{
		p.SetState(2973)
		p.Match(MySqlParserINFILE)
	}
	{
		p.SetState(2974)

		var _m = p.Match(MySqlParserSTRING_LITERAL)

		localctx.(*LoadXmlStatementContext).filename = _m
	}
	p.SetState(2976)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE || _la == MySqlParserREPLACE {
		{
			p.SetState(2975)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadXmlStatementContext).violation = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserIGNORE || _la == MySqlParserREPLACE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadXmlStatementContext).violation = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(2978)
		p.Match(MySqlParserINTO)
	}
	{
		p.SetState(2979)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(2980)
		p.TableName()
	}
	p.SetState(2984)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCHARACTER {
		{
			p.SetState(2981)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(2982)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(2983)

			var _x = p.CharsetName()

			localctx.(*LoadXmlStatementContext).charset = _x
		}

	}
	p.SetState(2992)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserROWS {
		{
			p.SetState(2986)
			p.Match(MySqlParserROWS)
		}
		{
			p.SetState(2987)
			p.Match(MySqlParserIDENTIFIED)
		}
		{
			p.SetState(2988)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(2989)
			p.Match(MySqlParserLESS_SYMBOL)
		}
		{
			p.SetState(2990)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*LoadXmlStatementContext).tag = _m
		}
		{
			p.SetState(2991)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	}
	p.SetState(2998)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(2994)
			p.Match(MySqlParserIGNORE)
		}
		{
			p.SetState(2995)
			p.DecimalLiteral()
		}
		{
			p.SetState(2996)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LoadXmlStatementContext).linesFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLINES || _la == MySqlParserROWS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LoadXmlStatementContext).linesFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(3011)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 391, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3000)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3001)
			p.AssignmentField()
		}
		p.SetState(3006)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3002)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3003)
				p.AssignmentField()
			}

			p.SetState(3008)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(3009)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(3022)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 393, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3013)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(3014)
			p.UpdatedElement()
		}
		p.SetState(3019)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3015)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3016)
				p.UpdatedElement()
			}

			p.SetState(3021)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IReplaceStatementContext is an interface to support dynamic dispatch.
type IReplaceStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// GetPartitions returns the partitions rule contexts.
	GetPartitions() IUidListContext

	// GetColumns returns the columns rule contexts.
	GetColumns() IUidListContext

	// GetSetFirst returns the setFirst rule contexts.
	GetSetFirst() IUpdatedElementContext

	// Get_updatedElement returns the _updatedElement rule contexts.
	Get_updatedElement() IUpdatedElementContext

	// SetPartitions sets the partitions rule contexts.
	SetPartitions(IUidListContext)

	// SetColumns sets the columns rule contexts.
	SetColumns(IUidListContext)

	// SetSetFirst sets the setFirst rule contexts.
	SetSetFirst(IUpdatedElementContext)

	// Set_updatedElement sets the _updatedElement rule contexts.
	Set_updatedElement(IUpdatedElementContext)

	// GetSetElements returns the setElements rule context list.
	GetSetElements() []IUpdatedElementContext

	// SetSetElements sets the setElements rule context list.
	SetSetElements([]IUpdatedElementContext)

	// IsReplaceStatementContext differentiates from other interfaces.
	IsReplaceStatementContext()
}

type ReplaceStatementContext struct {
	*antlr.BaseParserRuleContext
	parser          antlr.Parser
	priority        antlr.Token
	partitions      IUidListContext
	columns         IUidListContext
	setFirst        IUpdatedElementContext
	_updatedElement IUpdatedElementContext
	setElements     []IUpdatedElementContext
}

func NewEmptyReplaceStatementContext() *ReplaceStatementContext {
	var p = new(ReplaceStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_replaceStatement
	return p
}

func (*ReplaceStatementContext) IsReplaceStatementContext() {}

func NewReplaceStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReplaceStatementContext {
	var p = new(ReplaceStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_replaceStatement

	return p
}

func (s *ReplaceStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ReplaceStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *ReplaceStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *ReplaceStatementContext) GetPartitions() IUidListContext { return s.partitions }

func (s *ReplaceStatementContext) GetColumns() IUidListContext { return s.columns }

func (s *ReplaceStatementContext) GetSetFirst() IUpdatedElementContext { return s.setFirst }

func (s *ReplaceStatementContext) Get_updatedElement() IUpdatedElementContext {
	return s._updatedElement
}

func (s *ReplaceStatementContext) SetPartitions(v IUidListContext) { s.partitions = v }

func (s *ReplaceStatementContext) SetColumns(v IUidListContext) { s.columns = v }

func (s *ReplaceStatementContext) SetSetFirst(v IUpdatedElementContext) { s.setFirst = v }

func (s *ReplaceStatementContext) Set_updatedElement(v IUpdatedElementContext) { s._updatedElement = v }

func (s *ReplaceStatementContext) GetSetElements() []IUpdatedElementContext { return s.setElements }

func (s *ReplaceStatementContext) SetSetElements(v []IUpdatedElementContext) { s.setElements = v }

func (s *ReplaceStatementContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *ReplaceStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *ReplaceStatementContext) InsertStatementValue() IInsertStatementValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IInsertStatementValueContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IInsertStatementValueContext)
}

func (s *ReplaceStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *ReplaceStatementContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *ReplaceStatementContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *ReplaceStatementContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *ReplaceStatementContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *ReplaceStatementContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *ReplaceStatementContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *ReplaceStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *ReplaceStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *ReplaceStatementContext) AllUidList() []IUidListContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidListContext)(nil)).Elem())
	var tst = make([]IUidListContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidListContext)
		}
	}

	return tst
}

func (s *ReplaceStatementContext) UidList(i int) IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *ReplaceStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *ReplaceStatementContext) DELAYED() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELAYED, 0)
}

func (s *ReplaceStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ReplaceStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ReplaceStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReplaceStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReplaceStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReplaceStatement(s)
	}
}

func (s *ReplaceStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReplaceStatement(s)
	}
}

func (p *MySqlParser) ReplaceStatement() (localctx IReplaceStatementContext) {
	this := p
	_ = this

	localctx = NewReplaceStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 180, MySqlParserRULE_replaceStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3024)
		p.Match(MySqlParserREPLACE)
	}
	p.SetState(3026)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDELAYED || _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(3025)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ReplaceStatementContext).priority = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDELAYED || _la == MySqlParserLOW_PRIORITY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ReplaceStatementContext).priority = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(3029)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINTO {
		{
			p.SetState(3028)
			p.Match(MySqlParserINTO)
		}

	}
	{
		p.SetState(3031)
		p.TableName()
	}
	p.SetState(3037)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(3032)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(3033)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3034)

			var _x = p.UidList()

			localctx.(*ReplaceStatementContext).partitions = _x
		}
		{
			p.SetState(3035)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(3055)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSELECT, MySqlParserVALUES, MySqlParserVALUE, MySqlParserLR_BRACKET:
		p.SetState(3043)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 397, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3039)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(3040)

				var _x = p.UidList()

				localctx.(*ReplaceStatementContext).columns = _x
			}
			{
				p.SetState(3041)
				p.Match(MySqlParserRR_BRACKET)
			}

		}
		{
			p.SetState(3045)
			p.InsertStatementValue()
		}

	case MySqlParserSET:
		{
			p.SetState(3046)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(3047)

			var _x = p.UpdatedElement()

			localctx.(*ReplaceStatementContext).setFirst = _x
		}
		p.SetState(3052)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3048)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3049)

				var _x = p.UpdatedElement()

				localctx.(*ReplaceStatementContext)._updatedElement = _x
			}
			localctx.(*ReplaceStatementContext).setElements = append(localctx.(*ReplaceStatementContext).setElements, localctx.(*ReplaceStatementContext)._updatedElement)

			p.SetState(3054)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISelectStatementContext is an interface to support dynamic dispatch.
type ISelectStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSelectStatementContext differentiates from other interfaces.
	IsSelectStatementContext()
}

type SelectStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySelectStatementContext() *SelectStatementContext {
	var p = new(SelectStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectStatement
	return p
}

func (*SelectStatementContext) IsSelectStatementContext() {}

func NewSelectStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectStatementContext {
	var p = new(SelectStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectStatement

	return p
}

func (s *SelectStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectStatementContext) CopyFrom(ctx *SelectStatementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SelectStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type UnionSelectContext struct {
	*SelectStatementContext
	unionType antlr.Token
}

func NewUnionSelectContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UnionSelectContext {
	var p = new(UnionSelectContext)

	p.SelectStatementContext = NewEmptySelectStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectStatementContext))

	return p
}

func (s *UnionSelectContext) GetUnionType() antlr.Token { return s.unionType }

func (s *UnionSelectContext) SetUnionType(v antlr.Token) { s.unionType = v }

func (s *UnionSelectContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnionSelectContext) QuerySpecificationNointo() IQuerySpecificationNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationNointoContext)
}

func (s *UnionSelectContext) AllUnionStatement() []IUnionStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUnionStatementContext)(nil)).Elem())
	var tst = make([]IUnionStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUnionStatementContext)
		}
	}

	return tst
}

func (s *UnionSelectContext) UnionStatement(i int) IUnionStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUnionStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUnionStatementContext)
}

func (s *UnionSelectContext) UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNION, 0)
}

func (s *UnionSelectContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *UnionSelectContext) LimitClause() ILimitClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseContext)
}

func (s *UnionSelectContext) LockClause() ILockClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockClauseContext)
}

func (s *UnionSelectContext) QuerySpecification() IQuerySpecificationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationContext)
}

func (s *UnionSelectContext) QueryExpression() IQueryExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionContext)
}

func (s *UnionSelectContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *UnionSelectContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *UnionSelectContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnionSelect(s)
	}
}

func (s *UnionSelectContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnionSelect(s)
	}
}

type UnionParenthesisSelectContext struct {
	*SelectStatementContext
	unionType antlr.Token
}

func NewUnionParenthesisSelectContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UnionParenthesisSelectContext {
	var p = new(UnionParenthesisSelectContext)

	p.SelectStatementContext = NewEmptySelectStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectStatementContext))

	return p
}

func (s *UnionParenthesisSelectContext) GetUnionType() antlr.Token { return s.unionType }

func (s *UnionParenthesisSelectContext) SetUnionType(v antlr.Token) { s.unionType = v }

func (s *UnionParenthesisSelectContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnionParenthesisSelectContext) QueryExpressionNointo() IQueryExpressionNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionNointoContext)
}

func (s *UnionParenthesisSelectContext) AllUnionParenthesis() []IUnionParenthesisContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUnionParenthesisContext)(nil)).Elem())
	var tst = make([]IUnionParenthesisContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUnionParenthesisContext)
		}
	}

	return tst
}

func (s *UnionParenthesisSelectContext) UnionParenthesis(i int) IUnionParenthesisContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUnionParenthesisContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUnionParenthesisContext)
}

func (s *UnionParenthesisSelectContext) UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNION, 0)
}

func (s *UnionParenthesisSelectContext) QueryExpression() IQueryExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionContext)
}

func (s *UnionParenthesisSelectContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *UnionParenthesisSelectContext) LimitClause() ILimitClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseContext)
}

func (s *UnionParenthesisSelectContext) LockClause() ILockClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockClauseContext)
}

func (s *UnionParenthesisSelectContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *UnionParenthesisSelectContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *UnionParenthesisSelectContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnionParenthesisSelect(s)
	}
}

func (s *UnionParenthesisSelectContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnionParenthesisSelect(s)
	}
}

type SimpleSelectContext struct {
	*SelectStatementContext
}

func NewSimpleSelectContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleSelectContext {
	var p = new(SimpleSelectContext)

	p.SelectStatementContext = NewEmptySelectStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectStatementContext))

	return p
}

func (s *SimpleSelectContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleSelectContext) QuerySpecification() IQuerySpecificationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationContext)
}

func (s *SimpleSelectContext) LockClause() ILockClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockClauseContext)
}

func (s *SimpleSelectContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleSelect(s)
	}
}

func (s *SimpleSelectContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleSelect(s)
	}
}

type ParenthesisSelectContext struct {
	*SelectStatementContext
}

func NewParenthesisSelectContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ParenthesisSelectContext {
	var p = new(ParenthesisSelectContext)

	p.SelectStatementContext = NewEmptySelectStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectStatementContext))

	return p
}

func (s *ParenthesisSelectContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ParenthesisSelectContext) QueryExpression() IQueryExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionContext)
}

func (s *ParenthesisSelectContext) LockClause() ILockClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockClauseContext)
}

func (s *ParenthesisSelectContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterParenthesisSelect(s)
	}
}

func (s *ParenthesisSelectContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitParenthesisSelect(s)
	}
}

func (p *MySqlParser) SelectStatement() (localctx ISelectStatementContext) {
	this := p
	_ = this

	localctx = NewSelectStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 182, MySqlParserRULE_selectStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(3112)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 415, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSimpleSelectContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3057)
			p.QuerySpecification()
		}
		p.SetState(3059)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 400, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3058)
				p.LockClause()
			}

		}

	case 2:
		localctx = NewParenthesisSelectContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3061)
			p.QueryExpression()
		}
		p.SetState(3063)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 401, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3062)
				p.LockClause()
			}

		}

	case 3:
		localctx = NewUnionSelectContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3065)
			p.QuerySpecificationNointo()
		}
		p.SetState(3067)
		p.GetErrorHandler().Sync(p)
		_alt = 1
		for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			switch _alt {
			case 1:
				{
					p.SetState(3066)
					p.UnionStatement()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(3069)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 402, p.GetParserRuleContext())
		}
		p.SetState(3079)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUNION {
			{
				p.SetState(3071)
				p.Match(MySqlParserUNION)
			}
			p.SetState(3073)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserALL || _la == MySqlParserDISTINCT {
				{
					p.SetState(3072)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*UnionSelectContext).unionType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*UnionSelectContext).unionType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			p.SetState(3077)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserSELECT:
				{
					p.SetState(3075)
					p.QuerySpecification()
				}

			case MySqlParserLR_BRACKET:
				{
					p.SetState(3076)
					p.QueryExpression()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(3082)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 406, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3081)
				p.OrderByClause()
			}

		}
		p.SetState(3085)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIMIT {
			{
				p.SetState(3084)
				p.LimitClause()
			}

		}
		p.SetState(3088)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 408, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3087)
				p.LockClause()
			}

		}

	case 4:
		localctx = NewUnionParenthesisSelectContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(3090)
			p.QueryExpressionNointo()
		}
		p.SetState(3092)
		p.GetErrorHandler().Sync(p)
		_alt = 1
		for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			switch _alt {
			case 1:
				{
					p.SetState(3091)
					p.UnionParenthesis()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(3094)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 409, p.GetParserRuleContext())
		}
		p.SetState(3101)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUNION {
			{
				p.SetState(3096)
				p.Match(MySqlParserUNION)
			}
			p.SetState(3098)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserALL || _la == MySqlParserDISTINCT {
				{
					p.SetState(3097)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*UnionParenthesisSelectContext).unionType = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*UnionParenthesisSelectContext).unionType = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			{
				p.SetState(3100)
				p.QueryExpression()
			}

		}
		p.SetState(3104)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 412, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3103)
				p.OrderByClause()
			}

		}
		p.SetState(3107)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIMIT {
			{
				p.SetState(3106)
				p.LimitClause()
			}

		}
		p.SetState(3110)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 414, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3109)
				p.LockClause()
			}

		}

	}

	return localctx
}

// IUpdateStatementContext is an interface to support dynamic dispatch.
type IUpdateStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUpdateStatementContext differentiates from other interfaces.
	IsUpdateStatementContext()
}

type UpdateStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUpdateStatementContext() *UpdateStatementContext {
	var p = new(UpdateStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_updateStatement
	return p
}

func (*UpdateStatementContext) IsUpdateStatementContext() {}

func NewUpdateStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UpdateStatementContext {
	var p = new(UpdateStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_updateStatement

	return p
}

func (s *UpdateStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *UpdateStatementContext) SingleUpdateStatement() ISingleUpdateStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISingleUpdateStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISingleUpdateStatementContext)
}

func (s *UpdateStatementContext) MultipleUpdateStatement() IMultipleUpdateStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMultipleUpdateStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMultipleUpdateStatementContext)
}

func (s *UpdateStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UpdateStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UpdateStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUpdateStatement(s)
	}
}

func (s *UpdateStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUpdateStatement(s)
	}
}

func (p *MySqlParser) UpdateStatement() (localctx IUpdateStatementContext) {
	this := p
	_ = this

	localctx = NewUpdateStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 184, MySqlParserRULE_updateStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3116)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 416, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3114)
			p.SingleUpdateStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3115)
			p.MultipleUpdateStatement()
		}

	}

	return localctx
}

// IInsertStatementValueContext is an interface to support dynamic dispatch.
type IInsertStatementValueContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetInsertFormat returns the insertFormat token.
	GetInsertFormat() antlr.Token

	// SetInsertFormat sets the insertFormat token.
	SetInsertFormat(antlr.Token)

	// IsInsertStatementValueContext differentiates from other interfaces.
	IsInsertStatementValueContext()
}

type InsertStatementValueContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	insertFormat antlr.Token
}

func NewEmptyInsertStatementValueContext() *InsertStatementValueContext {
	var p = new(InsertStatementValueContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_insertStatementValue
	return p
}

func (*InsertStatementValueContext) IsInsertStatementValueContext() {}

func NewInsertStatementValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertStatementValueContext {
	var p = new(InsertStatementValueContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_insertStatementValue

	return p
}

func (s *InsertStatementValueContext) GetParser() antlr.Parser { return s.parser }

func (s *InsertStatementValueContext) GetInsertFormat() antlr.Token { return s.insertFormat }

func (s *InsertStatementValueContext) SetInsertFormat(v antlr.Token) { s.insertFormat = v }

func (s *InsertStatementValueContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *InsertStatementValueContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *InsertStatementValueContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *InsertStatementValueContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *InsertStatementValueContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *InsertStatementValueContext) VALUES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUES, 0)
}

func (s *InsertStatementValueContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *InsertStatementValueContext) AllExpressionsWithDefaults() []IExpressionsWithDefaultsContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionsWithDefaultsContext)(nil)).Elem())
	var tst = make([]IExpressionsWithDefaultsContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionsWithDefaultsContext)
		}
	}

	return tst
}

func (s *InsertStatementValueContext) ExpressionsWithDefaults(i int) IExpressionsWithDefaultsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionsWithDefaultsContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionsWithDefaultsContext)
}

func (s *InsertStatementValueContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *InsertStatementValueContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *InsertStatementValueContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *InsertStatementValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *InsertStatementValueContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterInsertStatementValue(s)
	}
}

func (s *InsertStatementValueContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitInsertStatementValue(s)
	}
}

func (p *MySqlParser) InsertStatementValue() (localctx IInsertStatementValueContext) {
	this := p
	_ = this

	localctx = NewInsertStatementValueContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 186, MySqlParserRULE_insertStatementValue)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3136)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSELECT, MySqlParserLR_BRACKET:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3118)
			p.SelectStatement()
		}

	case MySqlParserVALUES, MySqlParserVALUE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3119)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*InsertStatementValueContext).insertFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserVALUES || _la == MySqlParserVALUE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*InsertStatementValueContext).insertFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(3120)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(3122)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 417, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3121)
				p.ExpressionsWithDefaults()
			}

		}
		{
			p.SetState(3124)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(3133)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3125)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3126)
				p.Match(MySqlParserLR_BRACKET)
			}
			p.SetState(3128)
			p.GetErrorHandler().Sync(p)

			if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 418, p.GetParserRuleContext()) == 1 {
				{
					p.SetState(3127)
					p.ExpressionsWithDefaults()
				}

			}
			{
				p.SetState(3130)
				p.Match(MySqlParserRR_BRACKET)
			}

			p.SetState(3135)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IUpdatedElementContext is an interface to support dynamic dispatch.
type IUpdatedElementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUpdatedElementContext differentiates from other interfaces.
	IsUpdatedElementContext()
}

type UpdatedElementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUpdatedElementContext() *UpdatedElementContext {
	var p = new(UpdatedElementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_updatedElement
	return p
}

func (*UpdatedElementContext) IsUpdatedElementContext() {}

func NewUpdatedElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UpdatedElementContext {
	var p = new(UpdatedElementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_updatedElement

	return p
}

func (s *UpdatedElementContext) GetParser() antlr.Parser { return s.parser }

func (s *UpdatedElementContext) FullColumnName() IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *UpdatedElementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *UpdatedElementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *UpdatedElementContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *UpdatedElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UpdatedElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UpdatedElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUpdatedElement(s)
	}
}

func (s *UpdatedElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUpdatedElement(s)
	}
}

func (p *MySqlParser) UpdatedElement() (localctx IUpdatedElementContext) {
	this := p
	_ = this

	localctx = NewUpdatedElementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 188, MySqlParserRULE_updatedElement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3138)
		p.FullColumnName()
	}
	{
		p.SetState(3139)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	p.SetState(3142)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 421, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(3140)
			p.expression(0)
		}

	case 2:
		{
			p.SetState(3141)
			p.Match(MySqlParserDEFAULT)
		}

	}

	return localctx
}

// IAssignmentFieldContext is an interface to support dynamic dispatch.
type IAssignmentFieldContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAssignmentFieldContext differentiates from other interfaces.
	IsAssignmentFieldContext()
}

type AssignmentFieldContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAssignmentFieldContext() *AssignmentFieldContext {
	var p = new(AssignmentFieldContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_assignmentField
	return p
}

func (*AssignmentFieldContext) IsAssignmentFieldContext() {}

func NewAssignmentFieldContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AssignmentFieldContext {
	var p = new(AssignmentFieldContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_assignmentField

	return p
}

func (s *AssignmentFieldContext) GetParser() antlr.Parser { return s.parser }

func (s *AssignmentFieldContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AssignmentFieldContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *AssignmentFieldContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AssignmentFieldContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AssignmentFieldContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAssignmentField(s)
	}
}

func (s *AssignmentFieldContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAssignmentField(s)
	}
}

func (p *MySqlParser) AssignmentField() (localctx IAssignmentFieldContext) {
	this := p
	_ = this

	localctx = NewAssignmentFieldContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 190, MySqlParserRULE_assignmentField)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3146)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3144)
			p.Uid()
		}

	case MySqlParserLOCAL_ID:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3145)
			p.Match(MySqlParserLOCAL_ID)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ILockClauseContext is an interface to support dynamic dispatch.
type ILockClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLockClauseContext differentiates from other interfaces.
	IsLockClauseContext()
}

type LockClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLockClauseContext() *LockClauseContext {
	var p = new(LockClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lockClause
	return p
}

func (*LockClauseContext) IsLockClauseContext() {}

func NewLockClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LockClauseContext {
	var p = new(LockClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lockClause

	return p
}

func (s *LockClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *LockClauseContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *LockClauseContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *LockClauseContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *LockClauseContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *LockClauseContext) SHARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARE, 0)
}

func (s *LockClauseContext) MODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODE, 0)
}

func (s *LockClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LockClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LockClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLockClause(s)
	}
}

func (s *LockClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLockClause(s)
	}
}

func (p *MySqlParser) LockClause() (localctx ILockClauseContext) {
	this := p
	_ = this

	localctx = NewLockClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 192, MySqlParserRULE_lockClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3154)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserFOR:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3148)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(3149)
			p.Match(MySqlParserUPDATE)
		}

	case MySqlParserLOCK:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3150)
			p.Match(MySqlParserLOCK)
		}
		{
			p.SetState(3151)
			p.Match(MySqlParserIN)
		}
		{
			p.SetState(3152)
			p.Match(MySqlParserSHARE)
		}
		{
			p.SetState(3153)
			p.Match(MySqlParserMODE)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISingleDeleteStatementContext is an interface to support dynamic dispatch.
type ISingleDeleteStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// IsSingleDeleteStatementContext differentiates from other interfaces.
	IsSingleDeleteStatementContext()
}

type SingleDeleteStatementContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	priority antlr.Token
}

func NewEmptySingleDeleteStatementContext() *SingleDeleteStatementContext {
	var p = new(SingleDeleteStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_singleDeleteStatement
	return p
}

func (*SingleDeleteStatementContext) IsSingleDeleteStatementContext() {}

func NewSingleDeleteStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SingleDeleteStatementContext {
	var p = new(SingleDeleteStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_singleDeleteStatement

	return p
}

func (s *SingleDeleteStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SingleDeleteStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *SingleDeleteStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *SingleDeleteStatementContext) DELETE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELETE, 0)
}

func (s *SingleDeleteStatementContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *SingleDeleteStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *SingleDeleteStatementContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *SingleDeleteStatementContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *SingleDeleteStatementContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *SingleDeleteStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SingleDeleteStatementContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *SingleDeleteStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SingleDeleteStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *SingleDeleteStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SingleDeleteStatementContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *SingleDeleteStatementContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *SingleDeleteStatementContext) LimitClauseAtom() ILimitClauseAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseAtomContext)
}

func (s *SingleDeleteStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *SingleDeleteStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SingleDeleteStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SingleDeleteStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSingleDeleteStatement(s)
	}
}

func (s *SingleDeleteStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSingleDeleteStatement(s)
	}
}

func (p *MySqlParser) SingleDeleteStatement() (localctx ISingleDeleteStatementContext) {
	this := p
	_ = this

	localctx = NewSingleDeleteStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 194, MySqlParserRULE_singleDeleteStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3156)
		p.Match(MySqlParserDELETE)
	}
	p.SetState(3158)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(3157)

			var _m = p.Match(MySqlParserLOW_PRIORITY)

			localctx.(*SingleDeleteStatementContext).priority = _m
		}

	}
	p.SetState(3161)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserQUICK {
		{
			p.SetState(3160)
			p.Match(MySqlParserQUICK)
		}

	}
	p.SetState(3164)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(3163)
			p.Match(MySqlParserIGNORE)
		}

	}
	{
		p.SetState(3166)
		p.Match(MySqlParserFROM)
	}
	{
		p.SetState(3167)
		p.TableName()
	}
	p.SetState(3173)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(3168)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(3169)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3170)
			p.UidList()
		}
		{
			p.SetState(3171)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(3177)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3175)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3176)
			p.expression(0)
		}

	}
	p.SetState(3180)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserORDER {
		{
			p.SetState(3179)
			p.OrderByClause()
		}

	}
	p.SetState(3184)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLIMIT {
		{
			p.SetState(3182)
			p.Match(MySqlParserLIMIT)
		}
		{
			p.SetState(3183)
			p.LimitClauseAtom()
		}

	}

	return localctx
}

// IMultipleDeleteStatementContext is an interface to support dynamic dispatch.
type IMultipleDeleteStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// IsMultipleDeleteStatementContext differentiates from other interfaces.
	IsMultipleDeleteStatementContext()
}

type MultipleDeleteStatementContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	priority antlr.Token
}

func NewEmptyMultipleDeleteStatementContext() *MultipleDeleteStatementContext {
	var p = new(MultipleDeleteStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_multipleDeleteStatement
	return p
}

func (*MultipleDeleteStatementContext) IsMultipleDeleteStatementContext() {}

func NewMultipleDeleteStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MultipleDeleteStatementContext {
	var p = new(MultipleDeleteStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_multipleDeleteStatement

	return p
}

func (s *MultipleDeleteStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *MultipleDeleteStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *MultipleDeleteStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *MultipleDeleteStatementContext) DELETE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELETE, 0)
}

func (s *MultipleDeleteStatementContext) AllTableName() []ITableNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableNameContext)(nil)).Elem())
	var tst = make([]ITableNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableNameContext)
		}
	}

	return tst
}

func (s *MultipleDeleteStatementContext) TableName(i int) ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *MultipleDeleteStatementContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *MultipleDeleteStatementContext) TableSources() ITableSourcesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourcesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourcesContext)
}

func (s *MultipleDeleteStatementContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *MultipleDeleteStatementContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *MultipleDeleteStatementContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *MultipleDeleteStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *MultipleDeleteStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *MultipleDeleteStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *MultipleDeleteStatementContext) AllDOT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDOT)
}

func (s *MultipleDeleteStatementContext) DOT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, i)
}

func (s *MultipleDeleteStatementContext) AllSTAR() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTAR)
}

func (s *MultipleDeleteStatementContext) STAR(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, i)
}

func (s *MultipleDeleteStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *MultipleDeleteStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *MultipleDeleteStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MultipleDeleteStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *MultipleDeleteStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMultipleDeleteStatement(s)
	}
}

func (s *MultipleDeleteStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMultipleDeleteStatement(s)
	}
}

func (p *MySqlParser) MultipleDeleteStatement() (localctx IMultipleDeleteStatementContext) {
	this := p
	_ = this

	localctx = NewMultipleDeleteStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 196, MySqlParserRULE_multipleDeleteStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3186)
		p.Match(MySqlParserDELETE)
	}
	p.SetState(3188)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(3187)

			var _m = p.Match(MySqlParserLOW_PRIORITY)

			localctx.(*MultipleDeleteStatementContext).priority = _m
		}

	}
	p.SetState(3191)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 432, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3190)
			p.Match(MySqlParserQUICK)
		}

	}
	p.SetState(3194)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(3193)
			p.Match(MySqlParserIGNORE)
		}

	}
	p.SetState(3235)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		{
			p.SetState(3196)
			p.TableName()
		}
		p.SetState(3199)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDOT {
			{
				p.SetState(3197)
				p.Match(MySqlParserDOT)
			}
			{
				p.SetState(3198)
				p.Match(MySqlParserSTAR)
			}

		}
		p.SetState(3209)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3201)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3202)
				p.TableName()
			}
			p.SetState(3205)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserDOT {
				{
					p.SetState(3203)
					p.Match(MySqlParserDOT)
				}
				{
					p.SetState(3204)
					p.Match(MySqlParserSTAR)
				}

			}

			p.SetState(3211)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(3212)
			p.Match(MySqlParserFROM)
		}
		{
			p.SetState(3213)
			p.TableSources()
		}

	case MySqlParserFROM:
		{
			p.SetState(3215)
			p.Match(MySqlParserFROM)
		}
		{
			p.SetState(3216)
			p.TableName()
		}
		p.SetState(3219)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDOT {
			{
				p.SetState(3217)
				p.Match(MySqlParserDOT)
			}
			{
				p.SetState(3218)
				p.Match(MySqlParserSTAR)
			}

		}
		p.SetState(3229)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3221)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3222)
				p.TableName()
			}
			p.SetState(3225)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserDOT {
				{
					p.SetState(3223)
					p.Match(MySqlParserDOT)
				}
				{
					p.SetState(3224)
					p.Match(MySqlParserSTAR)
				}

			}

			p.SetState(3231)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(3232)
			p.Match(MySqlParserUSING)
		}
		{
			p.SetState(3233)
			p.TableSources()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}
	p.SetState(3239)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3237)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3238)
			p.expression(0)
		}

	}

	return localctx
}

// IHandlerOpenStatementContext is an interface to support dynamic dispatch.
type IHandlerOpenStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHandlerOpenStatementContext differentiates from other interfaces.
	IsHandlerOpenStatementContext()
}

type HandlerOpenStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHandlerOpenStatementContext() *HandlerOpenStatementContext {
	var p = new(HandlerOpenStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerOpenStatement
	return p
}

func (*HandlerOpenStatementContext) IsHandlerOpenStatementContext() {}

func NewHandlerOpenStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerOpenStatementContext {
	var p = new(HandlerOpenStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerOpenStatement

	return p
}

func (s *HandlerOpenStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerOpenStatementContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *HandlerOpenStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *HandlerOpenStatementContext) OPEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPEN, 0)
}

func (s *HandlerOpenStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *HandlerOpenStatementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *HandlerOpenStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerOpenStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HandlerOpenStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerOpenStatement(s)
	}
}

func (s *HandlerOpenStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerOpenStatement(s)
	}
}

func (p *MySqlParser) HandlerOpenStatement() (localctx IHandlerOpenStatementContext) {
	this := p
	_ = this

	localctx = NewHandlerOpenStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 198, MySqlParserRULE_handlerOpenStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3241)
		p.Match(MySqlParserHANDLER)
	}
	{
		p.SetState(3242)
		p.TableName()
	}
	{
		p.SetState(3243)
		p.Match(MySqlParserOPEN)
	}
	p.SetState(3248)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 443, p.GetParserRuleContext()) == 1 {
		p.SetState(3245)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(3244)
				p.Match(MySqlParserAS)
			}

		}
		{
			p.SetState(3247)
			p.Uid()
		}

	}

	return localctx
}

// IHandlerReadIndexStatementContext is an interface to support dynamic dispatch.
type IHandlerReadIndexStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetMoveOrder returns the moveOrder token.
	GetMoveOrder() antlr.Token

	// SetMoveOrder sets the moveOrder token.
	SetMoveOrder(antlr.Token)

	// GetIndex returns the index rule contexts.
	GetIndex() IUidContext

	// SetIndex sets the index rule contexts.
	SetIndex(IUidContext)

	// IsHandlerReadIndexStatementContext differentiates from other interfaces.
	IsHandlerReadIndexStatementContext()
}

type HandlerReadIndexStatementContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	index     IUidContext
	moveOrder antlr.Token
}

func NewEmptyHandlerReadIndexStatementContext() *HandlerReadIndexStatementContext {
	var p = new(HandlerReadIndexStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerReadIndexStatement
	return p
}

func (*HandlerReadIndexStatementContext) IsHandlerReadIndexStatementContext() {}

func NewHandlerReadIndexStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerReadIndexStatementContext {
	var p = new(HandlerReadIndexStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerReadIndexStatement

	return p
}

func (s *HandlerReadIndexStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerReadIndexStatementContext) GetMoveOrder() antlr.Token { return s.moveOrder }

func (s *HandlerReadIndexStatementContext) SetMoveOrder(v antlr.Token) { s.moveOrder = v }

func (s *HandlerReadIndexStatementContext) GetIndex() IUidContext { return s.index }

func (s *HandlerReadIndexStatementContext) SetIndex(v IUidContext) { s.index = v }

func (s *HandlerReadIndexStatementContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *HandlerReadIndexStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *HandlerReadIndexStatementContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *HandlerReadIndexStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *HandlerReadIndexStatementContext) ComparisonOperator() IComparisonOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IComparisonOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IComparisonOperatorContext)
}

func (s *HandlerReadIndexStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *HandlerReadIndexStatementContext) Constants() IConstantsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantsContext)
}

func (s *HandlerReadIndexStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *HandlerReadIndexStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *HandlerReadIndexStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *HandlerReadIndexStatementContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *HandlerReadIndexStatementContext) LimitClauseAtom() ILimitClauseAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseAtomContext)
}

func (s *HandlerReadIndexStatementContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *HandlerReadIndexStatementContext) NEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEXT, 0)
}

func (s *HandlerReadIndexStatementContext) PREV() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREV, 0)
}

func (s *HandlerReadIndexStatementContext) LAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAST, 0)
}

func (s *HandlerReadIndexStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerReadIndexStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HandlerReadIndexStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerReadIndexStatement(s)
	}
}

func (s *HandlerReadIndexStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerReadIndexStatement(s)
	}
}

func (p *MySqlParser) HandlerReadIndexStatement() (localctx IHandlerReadIndexStatementContext) {
	this := p
	_ = this

	localctx = NewHandlerReadIndexStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 200, MySqlParserRULE_handlerReadIndexStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3250)
		p.Match(MySqlParserHANDLER)
	}
	{
		p.SetState(3251)
		p.TableName()
	}
	{
		p.SetState(3252)
		p.Match(MySqlParserREAD)
	}
	{
		p.SetState(3253)

		var _x = p.Uid()

		localctx.(*HandlerReadIndexStatementContext).index = _x
	}
	p.SetState(3260)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserEQUAL_SYMBOL, MySqlParserGREATER_SYMBOL, MySqlParserLESS_SYMBOL, MySqlParserEXCLAMATION_SYMBOL:
		{
			p.SetState(3254)
			p.ComparisonOperator()
		}
		{
			p.SetState(3255)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3256)
			p.Constants()
		}
		{
			p.SetState(3257)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserFIRST, MySqlParserLAST, MySqlParserNEXT, MySqlParserPREV:
		{
			p.SetState(3259)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*HandlerReadIndexStatementContext).moveOrder = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFIRST || _la == MySqlParserLAST || _la == MySqlParserNEXT || _la == MySqlParserPREV) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*HandlerReadIndexStatementContext).moveOrder = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}
	p.SetState(3264)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3262)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3263)
			p.expression(0)
		}

	}
	p.SetState(3268)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLIMIT {
		{
			p.SetState(3266)
			p.Match(MySqlParserLIMIT)
		}
		{
			p.SetState(3267)
			p.LimitClauseAtom()
		}

	}

	return localctx
}

// IHandlerReadStatementContext is an interface to support dynamic dispatch.
type IHandlerReadStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetMoveOrder returns the moveOrder token.
	GetMoveOrder() antlr.Token

	// SetMoveOrder sets the moveOrder token.
	SetMoveOrder(antlr.Token)

	// IsHandlerReadStatementContext differentiates from other interfaces.
	IsHandlerReadStatementContext()
}

type HandlerReadStatementContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	moveOrder antlr.Token
}

func NewEmptyHandlerReadStatementContext() *HandlerReadStatementContext {
	var p = new(HandlerReadStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerReadStatement
	return p
}

func (*HandlerReadStatementContext) IsHandlerReadStatementContext() {}

func NewHandlerReadStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerReadStatementContext {
	var p = new(HandlerReadStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerReadStatement

	return p
}

func (s *HandlerReadStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerReadStatementContext) GetMoveOrder() antlr.Token { return s.moveOrder }

func (s *HandlerReadStatementContext) SetMoveOrder(v antlr.Token) { s.moveOrder = v }

func (s *HandlerReadStatementContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *HandlerReadStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *HandlerReadStatementContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *HandlerReadStatementContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *HandlerReadStatementContext) NEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEXT, 0)
}

func (s *HandlerReadStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *HandlerReadStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *HandlerReadStatementContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *HandlerReadStatementContext) LimitClauseAtom() ILimitClauseAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseAtomContext)
}

func (s *HandlerReadStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerReadStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HandlerReadStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerReadStatement(s)
	}
}

func (s *HandlerReadStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerReadStatement(s)
	}
}

func (p *MySqlParser) HandlerReadStatement() (localctx IHandlerReadStatementContext) {
	this := p
	_ = this

	localctx = NewHandlerReadStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 202, MySqlParserRULE_handlerReadStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3270)
		p.Match(MySqlParserHANDLER)
	}
	{
		p.SetState(3271)
		p.TableName()
	}
	{
		p.SetState(3272)
		p.Match(MySqlParserREAD)
	}
	{
		p.SetState(3273)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*HandlerReadStatementContext).moveOrder = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserFIRST || _la == MySqlParserNEXT) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*HandlerReadStatementContext).moveOrder = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(3276)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3274)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3275)
			p.expression(0)
		}

	}
	p.SetState(3280)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLIMIT {
		{
			p.SetState(3278)
			p.Match(MySqlParserLIMIT)
		}
		{
			p.SetState(3279)
			p.LimitClauseAtom()
		}

	}

	return localctx
}

// IHandlerCloseStatementContext is an interface to support dynamic dispatch.
type IHandlerCloseStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHandlerCloseStatementContext differentiates from other interfaces.
	IsHandlerCloseStatementContext()
}

type HandlerCloseStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHandlerCloseStatementContext() *HandlerCloseStatementContext {
	var p = new(HandlerCloseStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerCloseStatement
	return p
}

func (*HandlerCloseStatementContext) IsHandlerCloseStatementContext() {}

func NewHandlerCloseStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerCloseStatementContext {
	var p = new(HandlerCloseStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerCloseStatement

	return p
}

func (s *HandlerCloseStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerCloseStatementContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *HandlerCloseStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *HandlerCloseStatementContext) CLOSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLOSE, 0)
}

func (s *HandlerCloseStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerCloseStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HandlerCloseStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerCloseStatement(s)
	}
}

func (s *HandlerCloseStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerCloseStatement(s)
	}
}

func (p *MySqlParser) HandlerCloseStatement() (localctx IHandlerCloseStatementContext) {
	this := p
	_ = this

	localctx = NewHandlerCloseStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 204, MySqlParserRULE_handlerCloseStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3282)
		p.Match(MySqlParserHANDLER)
	}
	{
		p.SetState(3283)
		p.TableName()
	}
	{
		p.SetState(3284)
		p.Match(MySqlParserCLOSE)
	}

	return localctx
}

// ISingleUpdateStatementContext is an interface to support dynamic dispatch.
type ISingleUpdateStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// IsSingleUpdateStatementContext differentiates from other interfaces.
	IsSingleUpdateStatementContext()
}

type SingleUpdateStatementContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	priority antlr.Token
}

func NewEmptySingleUpdateStatementContext() *SingleUpdateStatementContext {
	var p = new(SingleUpdateStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_singleUpdateStatement
	return p
}

func (*SingleUpdateStatementContext) IsSingleUpdateStatementContext() {}

func NewSingleUpdateStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SingleUpdateStatementContext {
	var p = new(SingleUpdateStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_singleUpdateStatement

	return p
}

func (s *SingleUpdateStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SingleUpdateStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *SingleUpdateStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *SingleUpdateStatementContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *SingleUpdateStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *SingleUpdateStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SingleUpdateStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *SingleUpdateStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *SingleUpdateStatementContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *SingleUpdateStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SingleUpdateStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SingleUpdateStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SingleUpdateStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *SingleUpdateStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SingleUpdateStatementContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *SingleUpdateStatementContext) LimitClause() ILimitClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseContext)
}

func (s *SingleUpdateStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *SingleUpdateStatementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *SingleUpdateStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SingleUpdateStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SingleUpdateStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSingleUpdateStatement(s)
	}
}

func (s *SingleUpdateStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSingleUpdateStatement(s)
	}
}

func (p *MySqlParser) SingleUpdateStatement() (localctx ISingleUpdateStatementContext) {
	this := p
	_ = this

	localctx = NewSingleUpdateStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 206, MySqlParserRULE_singleUpdateStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3286)
		p.Match(MySqlParserUPDATE)
	}
	p.SetState(3288)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(3287)

			var _m = p.Match(MySqlParserLOW_PRIORITY)

			localctx.(*SingleUpdateStatementContext).priority = _m
		}

	}
	p.SetState(3291)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(3290)
			p.Match(MySqlParserIGNORE)
		}

	}
	{
		p.SetState(3293)
		p.TableName()
	}
	p.SetState(3298)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-12)&-(0x1f+1)) == 0 && ((1<<uint((_la-12)))&((1<<(MySqlParserAS-12))|(1<<(MySqlParserCURRENT-12))|(1<<(MySqlParserDATABASE-12)))) != 0) || (((_la-46)&-(0x1f+1)) == 0 && ((1<<uint((_la-46)))&((1<<(MySqlParserDIAGNOSTICS-46))|(1<<(MySqlParserEXCEPT-46))|(1<<(MySqlParserGROUP-46)))) != 0) || (((_la-92)&-(0x1f+1)) == 0 && ((1<<uint((_la-92)))&((1<<(MySqlParserLEFT-92))|(1<<(MySqlParserNUMBER-92))|(1<<(MySqlParserORDER-92)))) != 0) || (((_la-140)&-(0x1f+1)) == 0 && ((1<<uint((_la-140)))&((1<<(MySqlParserRIGHT-140))|(1<<(MySqlParserSCHEMA-140))|(1<<(MySqlParserSTACKED-140)))) != 0) || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		p.SetState(3295)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(3294)
				p.Match(MySqlParserAS)
			}

		}
		{
			p.SetState(3297)
			p.Uid()
		}

	}
	{
		p.SetState(3300)
		p.Match(MySqlParserSET)
	}
	{
		p.SetState(3301)
		p.UpdatedElement()
	}
	p.SetState(3306)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3302)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3303)
			p.UpdatedElement()
		}

		p.SetState(3308)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(3311)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3309)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3310)
			p.expression(0)
		}

	}
	p.SetState(3314)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserORDER {
		{
			p.SetState(3313)
			p.OrderByClause()
		}

	}
	p.SetState(3317)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLIMIT {
		{
			p.SetState(3316)
			p.LimitClause()
		}

	}

	return localctx
}

// IMultipleUpdateStatementContext is an interface to support dynamic dispatch.
type IMultipleUpdateStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPriority returns the priority token.
	GetPriority() antlr.Token

	// SetPriority sets the priority token.
	SetPriority(antlr.Token)

	// IsMultipleUpdateStatementContext differentiates from other interfaces.
	IsMultipleUpdateStatementContext()
}

type MultipleUpdateStatementContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	priority antlr.Token
}

func NewEmptyMultipleUpdateStatementContext() *MultipleUpdateStatementContext {
	var p = new(MultipleUpdateStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_multipleUpdateStatement
	return p
}

func (*MultipleUpdateStatementContext) IsMultipleUpdateStatementContext() {}

func NewMultipleUpdateStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MultipleUpdateStatementContext {
	var p = new(MultipleUpdateStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_multipleUpdateStatement

	return p
}

func (s *MultipleUpdateStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *MultipleUpdateStatementContext) GetPriority() antlr.Token { return s.priority }

func (s *MultipleUpdateStatementContext) SetPriority(v antlr.Token) { s.priority = v }

func (s *MultipleUpdateStatementContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *MultipleUpdateStatementContext) TableSources() ITableSourcesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourcesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourcesContext)
}

func (s *MultipleUpdateStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *MultipleUpdateStatementContext) AllUpdatedElement() []IUpdatedElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem())
	var tst = make([]IUpdatedElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUpdatedElementContext)
		}
	}

	return tst
}

func (s *MultipleUpdateStatementContext) UpdatedElement(i int) IUpdatedElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdatedElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUpdatedElementContext)
}

func (s *MultipleUpdateStatementContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *MultipleUpdateStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *MultipleUpdateStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *MultipleUpdateStatementContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *MultipleUpdateStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *MultipleUpdateStatementContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *MultipleUpdateStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MultipleUpdateStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *MultipleUpdateStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMultipleUpdateStatement(s)
	}
}

func (s *MultipleUpdateStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMultipleUpdateStatement(s)
	}
}

func (p *MySqlParser) MultipleUpdateStatement() (localctx IMultipleUpdateStatementContext) {
	this := p
	_ = this

	localctx = NewMultipleUpdateStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 208, MySqlParserRULE_multipleUpdateStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3319)
		p.Match(MySqlParserUPDATE)
	}
	p.SetState(3321)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLOW_PRIORITY {
		{
			p.SetState(3320)

			var _m = p.Match(MySqlParserLOW_PRIORITY)

			localctx.(*MultipleUpdateStatementContext).priority = _m
		}

	}
	p.SetState(3324)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(3323)
			p.Match(MySqlParserIGNORE)
		}

	}
	{
		p.SetState(3326)
		p.TableSources()
	}
	{
		p.SetState(3327)
		p.Match(MySqlParserSET)
	}
	{
		p.SetState(3328)
		p.UpdatedElement()
	}
	p.SetState(3333)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3329)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3330)
			p.UpdatedElement()
		}

		p.SetState(3335)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(3338)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3336)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3337)
			p.expression(0)
		}

	}

	return localctx
}

// IOrderByClauseContext is an interface to support dynamic dispatch.
type IOrderByClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsOrderByClauseContext differentiates from other interfaces.
	IsOrderByClauseContext()
}

type OrderByClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyOrderByClauseContext() *OrderByClauseContext {
	var p = new(OrderByClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_orderByClause
	return p
}

func (*OrderByClauseContext) IsOrderByClauseContext() {}

func NewOrderByClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByClauseContext {
	var p = new(OrderByClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_orderByClause

	return p
}

func (s *OrderByClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *OrderByClauseContext) ORDER() antlr.TerminalNode {
	return s.GetToken(MySqlParserORDER, 0)
}

func (s *OrderByClauseContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *OrderByClauseContext) AllOrderByExpression() []IOrderByExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IOrderByExpressionContext)(nil)).Elem())
	var tst = make([]IOrderByExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IOrderByExpressionContext)
		}
	}

	return tst
}

func (s *OrderByClauseContext) OrderByExpression(i int) IOrderByExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IOrderByExpressionContext)
}

func (s *OrderByClauseContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *OrderByClauseContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *OrderByClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OrderByClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *OrderByClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOrderByClause(s)
	}
}

func (s *OrderByClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOrderByClause(s)
	}
}

func (p *MySqlParser) OrderByClause() (localctx IOrderByClauseContext) {
	this := p
	_ = this

	localctx = NewOrderByClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 210, MySqlParserRULE_orderByClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3340)
		p.Match(MySqlParserORDER)
	}
	{
		p.SetState(3341)
		p.Match(MySqlParserBY)
	}
	{
		p.SetState(3342)
		p.OrderByExpression()
	}
	p.SetState(3347)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3343)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3344)
			p.OrderByExpression()
		}

		p.SetState(3349)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IOrderByExpressionContext is an interface to support dynamic dispatch.
type IOrderByExpressionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOrder returns the order token.
	GetOrder() antlr.Token

	// SetOrder sets the order token.
	SetOrder(antlr.Token)

	// IsOrderByExpressionContext differentiates from other interfaces.
	IsOrderByExpressionContext()
}

type OrderByExpressionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
	order  antlr.Token
}

func NewEmptyOrderByExpressionContext() *OrderByExpressionContext {
	var p = new(OrderByExpressionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_orderByExpression
	return p
}

func (*OrderByExpressionContext) IsOrderByExpressionContext() {}

func NewOrderByExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByExpressionContext {
	var p = new(OrderByExpressionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_orderByExpression

	return p
}

func (s *OrderByExpressionContext) GetParser() antlr.Parser { return s.parser }

func (s *OrderByExpressionContext) GetOrder() antlr.Token { return s.order }

func (s *OrderByExpressionContext) SetOrder(v antlr.Token) { s.order = v }

func (s *OrderByExpressionContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *OrderByExpressionContext) ASC() antlr.TerminalNode {
	return s.GetToken(MySqlParserASC, 0)
}

func (s *OrderByExpressionContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *OrderByExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OrderByExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *OrderByExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOrderByExpression(s)
	}
}

func (s *OrderByExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOrderByExpression(s)
	}
}

func (p *MySqlParser) OrderByExpression() (localctx IOrderByExpressionContext) {
	this := p
	_ = this

	localctx = NewOrderByExpressionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 212, MySqlParserRULE_orderByExpression)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3350)
		p.expression(0)
	}
	p.SetState(3352)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 462, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3351)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*OrderByExpressionContext).order = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserASC || _la == MySqlParserDESC) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*OrderByExpressionContext).order = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// ITableSourcesContext is an interface to support dynamic dispatch.
type ITableSourcesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableSourcesContext differentiates from other interfaces.
	IsTableSourcesContext()
}

type TableSourcesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableSourcesContext() *TableSourcesContext {
	var p = new(TableSourcesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableSources
	return p
}

func (*TableSourcesContext) IsTableSourcesContext() {}

func NewTableSourcesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableSourcesContext {
	var p = new(TableSourcesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableSources

	return p
}

func (s *TableSourcesContext) GetParser() antlr.Parser { return s.parser }

func (s *TableSourcesContext) AllTableSource() []ITableSourceContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableSourceContext)(nil)).Elem())
	var tst = make([]ITableSourceContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableSourceContext)
		}
	}

	return tst
}

func (s *TableSourcesContext) TableSource(i int) ITableSourceContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableSourceContext)
}

func (s *TableSourcesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *TableSourcesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *TableSourcesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourcesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TableSourcesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableSources(s)
	}
}

func (s *TableSourcesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableSources(s)
	}
}

func (p *MySqlParser) TableSources() (localctx ITableSourcesContext) {
	this := p
	_ = this

	localctx = NewTableSourcesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 214, MySqlParserRULE_tableSources)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3354)
		p.TableSource()
	}
	p.SetState(3359)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3355)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3356)
			p.TableSource()
		}

		p.SetState(3361)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ITableSourceContext is an interface to support dynamic dispatch.
type ITableSourceContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableSourceContext differentiates from other interfaces.
	IsTableSourceContext()
}

type TableSourceContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableSourceContext() *TableSourceContext {
	var p = new(TableSourceContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableSource
	return p
}

func (*TableSourceContext) IsTableSourceContext() {}

func NewTableSourceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableSourceContext {
	var p = new(TableSourceContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableSource

	return p
}

func (s *TableSourceContext) GetParser() antlr.Parser { return s.parser }

func (s *TableSourceContext) CopyFrom(ctx *TableSourceContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *TableSourceContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type TableSourceNestedContext struct {
	*TableSourceContext
}

func NewTableSourceNestedContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableSourceNestedContext {
	var p = new(TableSourceNestedContext)

	p.TableSourceContext = NewEmptyTableSourceContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableSourceContext))

	return p
}

func (s *TableSourceNestedContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourceNestedContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TableSourceNestedContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *TableSourceNestedContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TableSourceNestedContext) AllJoinPart() []IJoinPartContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IJoinPartContext)(nil)).Elem())
	var tst = make([]IJoinPartContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IJoinPartContext)
		}
	}

	return tst
}

func (s *TableSourceNestedContext) JoinPart(i int) IJoinPartContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IJoinPartContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IJoinPartContext)
}

func (s *TableSourceNestedContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableSourceNested(s)
	}
}

func (s *TableSourceNestedContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableSourceNested(s)
	}
}

type TableSourceBaseContext struct {
	*TableSourceContext
}

func NewTableSourceBaseContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableSourceBaseContext {
	var p = new(TableSourceBaseContext)

	p.TableSourceContext = NewEmptyTableSourceContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableSourceContext))

	return p
}

func (s *TableSourceBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourceBaseContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *TableSourceBaseContext) AllJoinPart() []IJoinPartContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IJoinPartContext)(nil)).Elem())
	var tst = make([]IJoinPartContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IJoinPartContext)
		}
	}

	return tst
}

func (s *TableSourceBaseContext) JoinPart(i int) IJoinPartContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IJoinPartContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IJoinPartContext)
}

func (s *TableSourceBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableSourceBase(s)
	}
}

func (s *TableSourceBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableSourceBase(s)
	}
}

func (p *MySqlParser) TableSource() (localctx ITableSourceContext) {
	this := p
	_ = this

	localctx = NewTableSourceContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 216, MySqlParserRULE_tableSource)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(3379)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 466, p.GetParserRuleContext()) {
	case 1:
		localctx = NewTableSourceBaseContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3362)
			p.TableSourceItem()
		}
		p.SetState(3366)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 464, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(3363)
					p.JoinPart()
				}

			}
			p.SetState(3368)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 464, p.GetParserRuleContext())
		}

	case 2:
		localctx = NewTableSourceNestedContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3369)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3370)
			p.TableSourceItem()
		}
		p.SetState(3374)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCROSS || (((_la-79)&-(0x1f+1)) == 0 && ((1<<uint((_la-79)))&((1<<(MySqlParserINNER-79))|(1<<(MySqlParserJOIN-79))|(1<<(MySqlParserLEFT-79))|(1<<(MySqlParserNATURAL-79)))) != 0) || _la == MySqlParserRIGHT || _la == MySqlParserSTRAIGHT_JOIN {
			{
				p.SetState(3371)
				p.JoinPart()
			}

			p.SetState(3376)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(3377)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// ITableSourceItemContext is an interface to support dynamic dispatch.
type ITableSourceItemContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableSourceItemContext differentiates from other interfaces.
	IsTableSourceItemContext()
}

type TableSourceItemContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableSourceItemContext() *TableSourceItemContext {
	var p = new(TableSourceItemContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableSourceItem
	return p
}

func (*TableSourceItemContext) IsTableSourceItemContext() {}

func NewTableSourceItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableSourceItemContext {
	var p = new(TableSourceItemContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableSourceItem

	return p
}

func (s *TableSourceItemContext) GetParser() antlr.Parser { return s.parser }

func (s *TableSourceItemContext) CopyFrom(ctx *TableSourceItemContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *TableSourceItemContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourceItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SubqueryTableItemContext struct {
	*TableSourceItemContext
	parenthesisSubquery ISelectStatementContext
	alias               IUidContext
}

func NewSubqueryTableItemContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubqueryTableItemContext {
	var p = new(SubqueryTableItemContext)

	p.TableSourceItemContext = NewEmptyTableSourceItemContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableSourceItemContext))

	return p
}

func (s *SubqueryTableItemContext) GetParenthesisSubquery() ISelectStatementContext {
	return s.parenthesisSubquery
}

func (s *SubqueryTableItemContext) GetAlias() IUidContext { return s.alias }

func (s *SubqueryTableItemContext) SetParenthesisSubquery(v ISelectStatementContext) {
	s.parenthesisSubquery = v
}

func (s *SubqueryTableItemContext) SetAlias(v IUidContext) { s.alias = v }

func (s *SubqueryTableItemContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubqueryTableItemContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SubqueryTableItemContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *SubqueryTableItemContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubqueryTableItemContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubqueryTableItemContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *SubqueryTableItemContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubqueryTableItem(s)
	}
}

func (s *SubqueryTableItemContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubqueryTableItem(s)
	}
}

type AtomTableItemContext struct {
	*TableSourceItemContext
	alias IUidContext
}

func NewAtomTableItemContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AtomTableItemContext {
	var p = new(AtomTableItemContext)

	p.TableSourceItemContext = NewEmptyTableSourceItemContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableSourceItemContext))

	return p
}

func (s *AtomTableItemContext) GetAlias() IUidContext { return s.alias }

func (s *AtomTableItemContext) SetAlias(v IUidContext) { s.alias = v }

func (s *AtomTableItemContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AtomTableItemContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *AtomTableItemContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *AtomTableItemContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AtomTableItemContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *AtomTableItemContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AtomTableItemContext) AllIndexHint() []IIndexHintContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexHintContext)(nil)).Elem())
	var tst = make([]IIndexHintContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexHintContext)
		}
	}

	return tst
}

func (s *AtomTableItemContext) IndexHint(i int) IIndexHintContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexHintContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexHintContext)
}

func (s *AtomTableItemContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AtomTableItemContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *AtomTableItemContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AtomTableItemContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AtomTableItemContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAtomTableItem(s)
	}
}

func (s *AtomTableItemContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAtomTableItem(s)
	}
}

type TableSourcesItemContext struct {
	*TableSourceItemContext
}

func NewTableSourcesItemContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableSourcesItemContext {
	var p = new(TableSourcesItemContext)

	p.TableSourceItemContext = NewEmptyTableSourceItemContext()
	p.parser = parser
	p.CopyFrom(ctx.(*TableSourceItemContext))

	return p
}

func (s *TableSourcesItemContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableSourcesItemContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TableSourcesItemContext) TableSources() ITableSourcesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourcesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourcesContext)
}

func (s *TableSourcesItemContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TableSourcesItemContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableSourcesItem(s)
	}
}

func (s *TableSourcesItemContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableSourcesItem(s)
	}
}

func (p *MySqlParser) TableSourceItem() (localctx ITableSourceItemContext) {
	this := p
	_ = this

	localctx = NewTableSourceItemContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 218, MySqlParserRULE_tableSourceItem)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(3421)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 474, p.GetParserRuleContext()) {
	case 1:
		localctx = NewAtomTableItemContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3381)
			p.TableName()
		}
		p.SetState(3387)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPARTITION {
			{
				p.SetState(3382)
				p.Match(MySqlParserPARTITION)
			}
			{
				p.SetState(3383)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(3384)
				p.UidList()
			}
			{
				p.SetState(3385)
				p.Match(MySqlParserRR_BRACKET)
			}

		}
		p.SetState(3393)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 469, p.GetParserRuleContext()) == 1 {
			p.SetState(3390)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserAS {
				{
					p.SetState(3389)
					p.Match(MySqlParserAS)
				}

			}
			{
				p.SetState(3392)

				var _x = p.Uid()

				localctx.(*AtomTableItemContext).alias = _x
			}

		}
		p.SetState(3403)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 471, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3395)
				p.IndexHint()
			}
			p.SetState(3400)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 470, p.GetParserRuleContext())

			for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
				if _alt == 1 {
					{
						p.SetState(3396)
						p.Match(MySqlParserCOMMA)
					}
					{
						p.SetState(3397)
						p.IndexHint()
					}

				}
				p.SetState(3402)
				p.GetErrorHandler().Sync(p)
				_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 470, p.GetParserRuleContext())
			}

		}

	case 2:
		localctx = NewSubqueryTableItemContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		p.SetState(3410)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 472, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(3405)
				p.SelectStatement()
			}

		case 2:
			{
				p.SetState(3406)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(3407)

				var _x = p.SelectStatement()

				localctx.(*SubqueryTableItemContext).parenthesisSubquery = _x
			}
			{
				p.SetState(3408)
				p.Match(MySqlParserRR_BRACKET)
			}

		}
		p.SetState(3413)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(3412)
				p.Match(MySqlParserAS)
			}

		}
		{
			p.SetState(3415)

			var _x = p.Uid()

			localctx.(*SubqueryTableItemContext).alias = _x
		}

	case 3:
		localctx = NewTableSourcesItemContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3417)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3418)
			p.TableSources()
		}
		{
			p.SetState(3419)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IIndexHintContext is an interface to support dynamic dispatch.
type IIndexHintContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIndexHintAction returns the indexHintAction token.
	GetIndexHintAction() antlr.Token

	// GetKeyFormat returns the keyFormat token.
	GetKeyFormat() antlr.Token

	// SetIndexHintAction sets the indexHintAction token.
	SetIndexHintAction(antlr.Token)

	// SetKeyFormat sets the keyFormat token.
	SetKeyFormat(antlr.Token)

	// IsIndexHintContext differentiates from other interfaces.
	IsIndexHintContext()
}

type IndexHintContext struct {
	*antlr.BaseParserRuleContext
	parser          antlr.Parser
	indexHintAction antlr.Token
	keyFormat       antlr.Token
}

func NewEmptyIndexHintContext() *IndexHintContext {
	var p = new(IndexHintContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexHint
	return p
}

func (*IndexHintContext) IsIndexHintContext() {}

func NewIndexHintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexHintContext {
	var p = new(IndexHintContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexHint

	return p
}

func (s *IndexHintContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexHintContext) GetIndexHintAction() antlr.Token { return s.indexHintAction }

func (s *IndexHintContext) GetKeyFormat() antlr.Token { return s.keyFormat }

func (s *IndexHintContext) SetIndexHintAction(v antlr.Token) { s.indexHintAction = v }

func (s *IndexHintContext) SetKeyFormat(v antlr.Token) { s.keyFormat = v }

func (s *IndexHintContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *IndexHintContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *IndexHintContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *IndexHintContext) USE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSE, 0)
}

func (s *IndexHintContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *IndexHintContext) FORCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFORCE, 0)
}

func (s *IndexHintContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *IndexHintContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *IndexHintContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *IndexHintContext) IndexHintType() IIndexHintTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexHintTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIndexHintTypeContext)
}

func (s *IndexHintContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexHintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexHintContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexHint(s)
	}
}

func (s *IndexHintContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexHint(s)
	}
}

func (p *MySqlParser) IndexHint() (localctx IIndexHintContext) {
	this := p
	_ = this

	localctx = NewIndexHintContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 220, MySqlParserRULE_indexHint)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3423)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*IndexHintContext).indexHintAction = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserFORCE || _la == MySqlParserIGNORE || _la == MySqlParserUSE) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*IndexHintContext).indexHintAction = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(3424)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*IndexHintContext).keyFormat = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*IndexHintContext).keyFormat = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(3427)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFOR {
		{
			p.SetState(3425)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(3426)
			p.IndexHintType()
		}

	}
	{
		p.SetState(3429)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(3430)
		p.UidList()
	}
	{
		p.SetState(3431)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IIndexHintTypeContext is an interface to support dynamic dispatch.
type IIndexHintTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIndexHintTypeContext differentiates from other interfaces.
	IsIndexHintTypeContext()
}

type IndexHintTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIndexHintTypeContext() *IndexHintTypeContext {
	var p = new(IndexHintTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexHintType
	return p
}

func (*IndexHintTypeContext) IsIndexHintTypeContext() {}

func NewIndexHintTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexHintTypeContext {
	var p = new(IndexHintTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexHintType

	return p
}

func (s *IndexHintTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexHintTypeContext) JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserJOIN, 0)
}

func (s *IndexHintTypeContext) ORDER() antlr.TerminalNode {
	return s.GetToken(MySqlParserORDER, 0)
}

func (s *IndexHintTypeContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *IndexHintTypeContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *IndexHintTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexHintTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexHintTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexHintType(s)
	}
}

func (s *IndexHintTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexHintType(s)
	}
}

func (p *MySqlParser) IndexHintType() (localctx IIndexHintTypeContext) {
	this := p
	_ = this

	localctx = NewIndexHintTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 222, MySqlParserRULE_indexHintType)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3438)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserJOIN:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3433)
			p.Match(MySqlParserJOIN)
		}

	case MySqlParserORDER:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3434)
			p.Match(MySqlParserORDER)
		}
		{
			p.SetState(3435)
			p.Match(MySqlParserBY)
		}

	case MySqlParserGROUP:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3436)
			p.Match(MySqlParserGROUP)
		}
		{
			p.SetState(3437)
			p.Match(MySqlParserBY)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IJoinPartContext is an interface to support dynamic dispatch.
type IJoinPartContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsJoinPartContext differentiates from other interfaces.
	IsJoinPartContext()
}

type JoinPartContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyJoinPartContext() *JoinPartContext {
	var p = new(JoinPartContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_joinPart
	return p
}

func (*JoinPartContext) IsJoinPartContext() {}

func NewJoinPartContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *JoinPartContext {
	var p = new(JoinPartContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_joinPart

	return p
}

func (s *JoinPartContext) GetParser() antlr.Parser { return s.parser }

func (s *JoinPartContext) CopyFrom(ctx *JoinPartContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *JoinPartContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *JoinPartContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type InnerJoinContext struct {
	*JoinPartContext
}

func NewInnerJoinContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *InnerJoinContext {
	var p = new(InnerJoinContext)

	p.JoinPartContext = NewEmptyJoinPartContext()
	p.parser = parser
	p.CopyFrom(ctx.(*JoinPartContext))

	return p
}

func (s *InnerJoinContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *InnerJoinContext) JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserJOIN, 0)
}

func (s *InnerJoinContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *InnerJoinContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *InnerJoinContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *InnerJoinContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *InnerJoinContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *InnerJoinContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *InnerJoinContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *InnerJoinContext) INNER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNER, 0)
}

func (s *InnerJoinContext) CROSS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCROSS, 0)
}

func (s *InnerJoinContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterInnerJoin(s)
	}
}

func (s *InnerJoinContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitInnerJoin(s)
	}
}

type NaturalJoinContext struct {
	*JoinPartContext
}

func NewNaturalJoinContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NaturalJoinContext {
	var p = new(NaturalJoinContext)

	p.JoinPartContext = NewEmptyJoinPartContext()
	p.parser = parser
	p.CopyFrom(ctx.(*JoinPartContext))

	return p
}

func (s *NaturalJoinContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NaturalJoinContext) NATURAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNATURAL, 0)
}

func (s *NaturalJoinContext) JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserJOIN, 0)
}

func (s *NaturalJoinContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *NaturalJoinContext) LEFT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEFT, 0)
}

func (s *NaturalJoinContext) RIGHT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRIGHT, 0)
}

func (s *NaturalJoinContext) OUTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserOUTER, 0)
}

func (s *NaturalJoinContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNaturalJoin(s)
	}
}

func (s *NaturalJoinContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNaturalJoin(s)
	}
}

type OuterJoinContext struct {
	*JoinPartContext
}

func NewOuterJoinContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *OuterJoinContext {
	var p = new(OuterJoinContext)

	p.JoinPartContext = NewEmptyJoinPartContext()
	p.parser = parser
	p.CopyFrom(ctx.(*JoinPartContext))

	return p
}

func (s *OuterJoinContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OuterJoinContext) JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserJOIN, 0)
}

func (s *OuterJoinContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *OuterJoinContext) LEFT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEFT, 0)
}

func (s *OuterJoinContext) RIGHT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRIGHT, 0)
}

func (s *OuterJoinContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *OuterJoinContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *OuterJoinContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *OuterJoinContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *OuterJoinContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *OuterJoinContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *OuterJoinContext) OUTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserOUTER, 0)
}

func (s *OuterJoinContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOuterJoin(s)
	}
}

func (s *OuterJoinContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOuterJoin(s)
	}
}

type StraightJoinContext struct {
	*JoinPartContext
}

func NewStraightJoinContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *StraightJoinContext {
	var p = new(StraightJoinContext)

	p.JoinPartContext = NewEmptyJoinPartContext()
	p.parser = parser
	p.CopyFrom(ctx.(*JoinPartContext))

	return p
}

func (s *StraightJoinContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StraightJoinContext) STRAIGHT_JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRAIGHT_JOIN, 0)
}

func (s *StraightJoinContext) TableSourceItem() ITableSourceItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourceItemContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourceItemContext)
}

func (s *StraightJoinContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *StraightJoinContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *StraightJoinContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStraightJoin(s)
	}
}

func (s *StraightJoinContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStraightJoin(s)
	}
}

func (p *MySqlParser) JoinPart() (localctx IJoinPartContext) {
	this := p
	_ = this

	localctx = NewJoinPartContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 224, MySqlParserRULE_joinPart)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3484)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCROSS, MySqlParserINNER, MySqlParserJOIN:
		localctx = NewInnerJoinContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(3441)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCROSS || _la == MySqlParserINNER {
			{
				p.SetState(3440)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserCROSS || _la == MySqlParserINNER) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(3443)
			p.Match(MySqlParserJOIN)
		}
		{
			p.SetState(3444)
			p.TableSourceItem()
		}
		p.SetState(3452)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 478, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3445)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(3446)
				p.expression(0)
			}

		} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 478, p.GetParserRuleContext()) == 2 {
			{
				p.SetState(3447)
				p.Match(MySqlParserUSING)
			}
			{
				p.SetState(3448)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(3449)
				p.UidList()
			}
			{
				p.SetState(3450)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case MySqlParserSTRAIGHT_JOIN:
		localctx = NewStraightJoinContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3454)
			p.Match(MySqlParserSTRAIGHT_JOIN)
		}
		{
			p.SetState(3455)
			p.TableSourceItem()
		}
		p.SetState(3458)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 479, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3456)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(3457)
				p.expression(0)
			}

		}

	case MySqlParserLEFT, MySqlParserRIGHT:
		localctx = NewOuterJoinContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3460)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLEFT || _la == MySqlParserRIGHT) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(3462)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserOUTER {
			{
				p.SetState(3461)
				p.Match(MySqlParserOUTER)
			}

		}
		{
			p.SetState(3464)
			p.Match(MySqlParserJOIN)
		}
		{
			p.SetState(3465)
			p.TableSourceItem()
		}
		p.SetState(3473)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserON:
			{
				p.SetState(3466)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(3467)
				p.expression(0)
			}

		case MySqlParserUSING:
			{
				p.SetState(3468)
				p.Match(MySqlParserUSING)
			}
			{
				p.SetState(3469)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(3470)
				p.UidList()
			}
			{
				p.SetState(3471)
				p.Match(MySqlParserRR_BRACKET)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case MySqlParserNATURAL:
		localctx = NewNaturalJoinContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(3475)
			p.Match(MySqlParserNATURAL)
		}
		p.SetState(3480)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLEFT || _la == MySqlParserRIGHT {
			{
				p.SetState(3476)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserLEFT || _la == MySqlParserRIGHT) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			p.SetState(3478)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserOUTER {
				{
					p.SetState(3477)
					p.Match(MySqlParserOUTER)
				}

			}

		}
		{
			p.SetState(3482)
			p.Match(MySqlParserJOIN)
		}
		{
			p.SetState(3483)
			p.TableSourceItem()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IQueryExpressionContext is an interface to support dynamic dispatch.
type IQueryExpressionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsQueryExpressionContext differentiates from other interfaces.
	IsQueryExpressionContext()
}

type QueryExpressionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyQueryExpressionContext() *QueryExpressionContext {
	var p = new(QueryExpressionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_queryExpression
	return p
}

func (*QueryExpressionContext) IsQueryExpressionContext() {}

func NewQueryExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QueryExpressionContext {
	var p = new(QueryExpressionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_queryExpression

	return p
}

func (s *QueryExpressionContext) GetParser() antlr.Parser { return s.parser }

func (s *QueryExpressionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *QueryExpressionContext) QuerySpecification() IQuerySpecificationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationContext)
}

func (s *QueryExpressionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *QueryExpressionContext) QueryExpression() IQueryExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionContext)
}

func (s *QueryExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *QueryExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *QueryExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterQueryExpression(s)
	}
}

func (s *QueryExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitQueryExpression(s)
	}
}

func (p *MySqlParser) QueryExpression() (localctx IQueryExpressionContext) {
	this := p
	_ = this

	localctx = NewQueryExpressionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 226, MySqlParserRULE_queryExpression)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3494)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 485, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3486)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3487)
			p.QuerySpecification()
		}
		{
			p.SetState(3488)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3490)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3491)
			p.QueryExpression()
		}
		{
			p.SetState(3492)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IQueryExpressionNointoContext is an interface to support dynamic dispatch.
type IQueryExpressionNointoContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsQueryExpressionNointoContext differentiates from other interfaces.
	IsQueryExpressionNointoContext()
}

type QueryExpressionNointoContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyQueryExpressionNointoContext() *QueryExpressionNointoContext {
	var p = new(QueryExpressionNointoContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_queryExpressionNointo
	return p
}

func (*QueryExpressionNointoContext) IsQueryExpressionNointoContext() {}

func NewQueryExpressionNointoContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QueryExpressionNointoContext {
	var p = new(QueryExpressionNointoContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_queryExpressionNointo

	return p
}

func (s *QueryExpressionNointoContext) GetParser() antlr.Parser { return s.parser }

func (s *QueryExpressionNointoContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *QueryExpressionNointoContext) QuerySpecificationNointo() IQuerySpecificationNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationNointoContext)
}

func (s *QueryExpressionNointoContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *QueryExpressionNointoContext) QueryExpressionNointo() IQueryExpressionNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionNointoContext)
}

func (s *QueryExpressionNointoContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *QueryExpressionNointoContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *QueryExpressionNointoContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterQueryExpressionNointo(s)
	}
}

func (s *QueryExpressionNointoContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitQueryExpressionNointo(s)
	}
}

func (p *MySqlParser) QueryExpressionNointo() (localctx IQueryExpressionNointoContext) {
	this := p
	_ = this

	localctx = NewQueryExpressionNointoContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 228, MySqlParserRULE_queryExpressionNointo)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3504)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 486, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3496)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3497)
			p.QuerySpecificationNointo()
		}
		{
			p.SetState(3498)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3500)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3501)
			p.QueryExpressionNointo()
		}
		{
			p.SetState(3502)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IQuerySpecificationContext is an interface to support dynamic dispatch.
type IQuerySpecificationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsQuerySpecificationContext differentiates from other interfaces.
	IsQuerySpecificationContext()
}

type QuerySpecificationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyQuerySpecificationContext() *QuerySpecificationContext {
	var p = new(QuerySpecificationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_querySpecification
	return p
}

func (*QuerySpecificationContext) IsQuerySpecificationContext() {}

func NewQuerySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QuerySpecificationContext {
	var p = new(QuerySpecificationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_querySpecification

	return p
}

func (s *QuerySpecificationContext) GetParser() antlr.Parser { return s.parser }

func (s *QuerySpecificationContext) SELECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSELECT, 0)
}

func (s *QuerySpecificationContext) SelectElements() ISelectElementsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectElementsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectElementsContext)
}

func (s *QuerySpecificationContext) AllSelectSpec() []ISelectSpecContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectSpecContext)(nil)).Elem())
	var tst = make([]ISelectSpecContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectSpecContext)
		}
	}

	return tst
}

func (s *QuerySpecificationContext) SelectSpec(i int) ISelectSpecContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectSpecContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectSpecContext)
}

func (s *QuerySpecificationContext) SelectIntoExpression() ISelectIntoExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectIntoExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectIntoExpressionContext)
}

func (s *QuerySpecificationContext) FromClause() IFromClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFromClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFromClauseContext)
}

func (s *QuerySpecificationContext) GroupByClause() IGroupByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGroupByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IGroupByClauseContext)
}

func (s *QuerySpecificationContext) HavingClause() IHavingClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHavingClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHavingClauseContext)
}

func (s *QuerySpecificationContext) WindowClause() IWindowClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWindowClauseContext)
}

func (s *QuerySpecificationContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *QuerySpecificationContext) LimitClause() ILimitClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseContext)
}

func (s *QuerySpecificationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *QuerySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *QuerySpecificationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterQuerySpecification(s)
	}
}

func (s *QuerySpecificationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitQuerySpecification(s)
	}
}

func (p *MySqlParser) QuerySpecification() (localctx IQuerySpecificationContext) {
	this := p
	_ = this

	localctx = NewQuerySpecificationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 230, MySqlParserRULE_querySpecification)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(3564)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 503, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3506)
			p.Match(MySqlParserSELECT)
		}
		p.SetState(3510)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 487, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(3507)
					p.SelectSpec()
				}

			}
			p.SetState(3512)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 487, p.GetParserRuleContext())
		}
		{
			p.SetState(3513)
			p.SelectElements()
		}
		p.SetState(3515)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINTO {
			{
				p.SetState(3514)
				p.SelectIntoExpression()
			}

		}
		p.SetState(3518)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 489, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3517)
				p.FromClause()
			}

		}
		p.SetState(3521)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 490, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3520)
				p.GroupByClause()
			}

		}
		p.SetState(3524)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserHAVING {
			{
				p.SetState(3523)
				p.HavingClause()
			}

		}
		p.SetState(3527)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWINDOW {
			{
				p.SetState(3526)
				p.WindowClause()
			}

		}
		p.SetState(3530)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 493, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3529)
				p.OrderByClause()
			}

		}
		p.SetState(3533)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 494, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3532)
				p.LimitClause()
			}

		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3535)
			p.Match(MySqlParserSELECT)
		}
		p.SetState(3539)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 495, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(3536)
					p.SelectSpec()
				}

			}
			p.SetState(3541)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 495, p.GetParserRuleContext())
		}
		{
			p.SetState(3542)
			p.SelectElements()
		}
		p.SetState(3544)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 496, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3543)
				p.FromClause()
			}

		}
		p.SetState(3547)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 497, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3546)
				p.GroupByClause()
			}

		}
		p.SetState(3550)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserHAVING {
			{
				p.SetState(3549)
				p.HavingClause()
			}

		}
		p.SetState(3553)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWINDOW {
			{
				p.SetState(3552)
				p.WindowClause()
			}

		}
		p.SetState(3556)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 500, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3555)
				p.OrderByClause()
			}

		}
		p.SetState(3559)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 501, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3558)
				p.LimitClause()
			}

		}
		p.SetState(3562)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINTO {
			{
				p.SetState(3561)
				p.SelectIntoExpression()
			}

		}

	}

	return localctx
}

// IQuerySpecificationNointoContext is an interface to support dynamic dispatch.
type IQuerySpecificationNointoContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsQuerySpecificationNointoContext differentiates from other interfaces.
	IsQuerySpecificationNointoContext()
}

type QuerySpecificationNointoContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyQuerySpecificationNointoContext() *QuerySpecificationNointoContext {
	var p = new(QuerySpecificationNointoContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_querySpecificationNointo
	return p
}

func (*QuerySpecificationNointoContext) IsQuerySpecificationNointoContext() {}

func NewQuerySpecificationNointoContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QuerySpecificationNointoContext {
	var p = new(QuerySpecificationNointoContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_querySpecificationNointo

	return p
}

func (s *QuerySpecificationNointoContext) GetParser() antlr.Parser { return s.parser }

func (s *QuerySpecificationNointoContext) SELECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSELECT, 0)
}

func (s *QuerySpecificationNointoContext) SelectElements() ISelectElementsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectElementsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectElementsContext)
}

func (s *QuerySpecificationNointoContext) AllSelectSpec() []ISelectSpecContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectSpecContext)(nil)).Elem())
	var tst = make([]ISelectSpecContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectSpecContext)
		}
	}

	return tst
}

func (s *QuerySpecificationNointoContext) SelectSpec(i int) ISelectSpecContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectSpecContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectSpecContext)
}

func (s *QuerySpecificationNointoContext) FromClause() IFromClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFromClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFromClauseContext)
}

func (s *QuerySpecificationNointoContext) GroupByClause() IGroupByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGroupByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IGroupByClauseContext)
}

func (s *QuerySpecificationNointoContext) HavingClause() IHavingClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHavingClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHavingClauseContext)
}

func (s *QuerySpecificationNointoContext) WindowClause() IWindowClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWindowClauseContext)
}

func (s *QuerySpecificationNointoContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *QuerySpecificationNointoContext) LimitClause() ILimitClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseContext)
}

func (s *QuerySpecificationNointoContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *QuerySpecificationNointoContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *QuerySpecificationNointoContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterQuerySpecificationNointo(s)
	}
}

func (s *QuerySpecificationNointoContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitQuerySpecificationNointo(s)
	}
}

func (p *MySqlParser) QuerySpecificationNointo() (localctx IQuerySpecificationNointoContext) {
	this := p
	_ = this

	localctx = NewQuerySpecificationNointoContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 232, MySqlParserRULE_querySpecificationNointo)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3566)
		p.Match(MySqlParserSELECT)
	}
	p.SetState(3570)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 504, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(3567)
				p.SelectSpec()
			}

		}
		p.SetState(3572)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 504, p.GetParserRuleContext())
	}
	{
		p.SetState(3573)
		p.SelectElements()
	}
	p.SetState(3575)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 505, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3574)
			p.FromClause()
		}

	}
	p.SetState(3578)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 506, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3577)
			p.GroupByClause()
		}

	}
	p.SetState(3581)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserHAVING {
		{
			p.SetState(3580)
			p.HavingClause()
		}

	}
	p.SetState(3584)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWINDOW {
		{
			p.SetState(3583)
			p.WindowClause()
		}

	}
	p.SetState(3587)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 509, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3586)
			p.OrderByClause()
		}

	}
	p.SetState(3590)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 510, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3589)
			p.LimitClause()
		}

	}

	return localctx
}

// IUnionParenthesisContext is an interface to support dynamic dispatch.
type IUnionParenthesisContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetUnionType returns the unionType token.
	GetUnionType() antlr.Token

	// SetUnionType sets the unionType token.
	SetUnionType(antlr.Token)

	// IsUnionParenthesisContext differentiates from other interfaces.
	IsUnionParenthesisContext()
}

type UnionParenthesisContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	unionType antlr.Token
}

func NewEmptyUnionParenthesisContext() *UnionParenthesisContext {
	var p = new(UnionParenthesisContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_unionParenthesis
	return p
}

func (*UnionParenthesisContext) IsUnionParenthesisContext() {}

func NewUnionParenthesisContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnionParenthesisContext {
	var p = new(UnionParenthesisContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_unionParenthesis

	return p
}

func (s *UnionParenthesisContext) GetParser() antlr.Parser { return s.parser }

func (s *UnionParenthesisContext) GetUnionType() antlr.Token { return s.unionType }

func (s *UnionParenthesisContext) SetUnionType(v antlr.Token) { s.unionType = v }

func (s *UnionParenthesisContext) UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNION, 0)
}

func (s *UnionParenthesisContext) QueryExpressionNointo() IQueryExpressionNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionNointoContext)
}

func (s *UnionParenthesisContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *UnionParenthesisContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *UnionParenthesisContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnionParenthesisContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UnionParenthesisContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnionParenthesis(s)
	}
}

func (s *UnionParenthesisContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnionParenthesis(s)
	}
}

func (p *MySqlParser) UnionParenthesis() (localctx IUnionParenthesisContext) {
	this := p
	_ = this

	localctx = NewUnionParenthesisContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 234, MySqlParserRULE_unionParenthesis)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3592)
		p.Match(MySqlParserUNION)
	}
	p.SetState(3594)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserALL || _la == MySqlParserDISTINCT {
		{
			p.SetState(3593)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*UnionParenthesisContext).unionType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*UnionParenthesisContext).unionType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(3596)
		p.QueryExpressionNointo()
	}

	return localctx
}

// IUnionStatementContext is an interface to support dynamic dispatch.
type IUnionStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetUnionType returns the unionType token.
	GetUnionType() antlr.Token

	// SetUnionType sets the unionType token.
	SetUnionType(antlr.Token)

	// IsUnionStatementContext differentiates from other interfaces.
	IsUnionStatementContext()
}

type UnionStatementContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	unionType antlr.Token
}

func NewEmptyUnionStatementContext() *UnionStatementContext {
	var p = new(UnionStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_unionStatement
	return p
}

func (*UnionStatementContext) IsUnionStatementContext() {}

func NewUnionStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnionStatementContext {
	var p = new(UnionStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_unionStatement

	return p
}

func (s *UnionStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *UnionStatementContext) GetUnionType() antlr.Token { return s.unionType }

func (s *UnionStatementContext) SetUnionType(v antlr.Token) { s.unionType = v }

func (s *UnionStatementContext) UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNION, 0)
}

func (s *UnionStatementContext) QuerySpecificationNointo() IQuerySpecificationNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQuerySpecificationNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQuerySpecificationNointoContext)
}

func (s *UnionStatementContext) QueryExpressionNointo() IQueryExpressionNointoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IQueryExpressionNointoContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IQueryExpressionNointoContext)
}

func (s *UnionStatementContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *UnionStatementContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *UnionStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnionStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UnionStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnionStatement(s)
	}
}

func (s *UnionStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnionStatement(s)
	}
}

func (p *MySqlParser) UnionStatement() (localctx IUnionStatementContext) {
	this := p
	_ = this

	localctx = NewUnionStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 236, MySqlParserRULE_unionStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3598)
		p.Match(MySqlParserUNION)
	}
	p.SetState(3600)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserALL || _la == MySqlParserDISTINCT {
		{
			p.SetState(3599)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*UnionStatementContext).unionType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*UnionStatementContext).unionType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(3604)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSELECT:
		{
			p.SetState(3602)
			p.QuerySpecificationNointo()
		}

	case MySqlParserLR_BRACKET:
		{
			p.SetState(3603)
			p.QueryExpressionNointo()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISelectSpecContext is an interface to support dynamic dispatch.
type ISelectSpecContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSelectSpecContext differentiates from other interfaces.
	IsSelectSpecContext()
}

type SelectSpecContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySelectSpecContext() *SelectSpecContext {
	var p = new(SelectSpecContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectSpec
	return p
}

func (*SelectSpecContext) IsSelectSpecContext() {}

func NewSelectSpecContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectSpecContext {
	var p = new(SelectSpecContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectSpec

	return p
}

func (s *SelectSpecContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectSpecContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *SelectSpecContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *SelectSpecContext) DISTINCTROW() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCTROW, 0)
}

func (s *SelectSpecContext) HIGH_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserHIGH_PRIORITY, 0)
}

func (s *SelectSpecContext) STRAIGHT_JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRAIGHT_JOIN, 0)
}

func (s *SelectSpecContext) SQL_SMALL_RESULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_SMALL_RESULT, 0)
}

func (s *SelectSpecContext) SQL_BIG_RESULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_BIG_RESULT, 0)
}

func (s *SelectSpecContext) SQL_BUFFER_RESULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_BUFFER_RESULT, 0)
}

func (s *SelectSpecContext) SQL_CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_CACHE, 0)
}

func (s *SelectSpecContext) SQL_NO_CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_NO_CACHE, 0)
}

func (s *SelectSpecContext) SQL_CALC_FOUND_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_CALC_FOUND_ROWS, 0)
}

func (s *SelectSpecContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectSpecContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SelectSpecContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectSpec(s)
	}
}

func (s *SelectSpecContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectSpec(s)
	}
}

func (p *MySqlParser) SelectSpec() (localctx ISelectSpecContext) {
	this := p
	_ = this

	localctx = NewSelectSpecContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 238, MySqlParserRULE_selectSpec)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3614)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserALL, MySqlParserDISTINCT, MySqlParserDISTINCTROW:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3606)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT || _la == MySqlParserDISTINCTROW) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserHIGH_PRIORITY:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3607)
			p.Match(MySqlParserHIGH_PRIORITY)
		}

	case MySqlParserSTRAIGHT_JOIN:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3608)
			p.Match(MySqlParserSTRAIGHT_JOIN)
		}

	case MySqlParserSQL_SMALL_RESULT:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(3609)
			p.Match(MySqlParserSQL_SMALL_RESULT)
		}

	case MySqlParserSQL_BIG_RESULT:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(3610)
			p.Match(MySqlParserSQL_BIG_RESULT)
		}

	case MySqlParserSQL_BUFFER_RESULT:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(3611)
			p.Match(MySqlParserSQL_BUFFER_RESULT)
		}

	case MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(3612)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSQL_CACHE || _la == MySqlParserSQL_NO_CACHE) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserSQL_CALC_FOUND_ROWS:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(3613)
			p.Match(MySqlParserSQL_CALC_FOUND_ROWS)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISelectElementsContext is an interface to support dynamic dispatch.
type ISelectElementsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetStar returns the star token.
	GetStar() antlr.Token

	// SetStar sets the star token.
	SetStar(antlr.Token)

	// IsSelectElementsContext differentiates from other interfaces.
	IsSelectElementsContext()
}

type SelectElementsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
	star   antlr.Token
}

func NewEmptySelectElementsContext() *SelectElementsContext {
	var p = new(SelectElementsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectElements
	return p
}

func (*SelectElementsContext) IsSelectElementsContext() {}

func NewSelectElementsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectElementsContext {
	var p = new(SelectElementsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectElements

	return p
}

func (s *SelectElementsContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectElementsContext) GetStar() antlr.Token { return s.star }

func (s *SelectElementsContext) SetStar(v antlr.Token) { s.star = v }

func (s *SelectElementsContext) AllSelectElement() []ISelectElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectElementContext)(nil)).Elem())
	var tst = make([]ISelectElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectElementContext)
		}
	}

	return tst
}

func (s *SelectElementsContext) SelectElement(i int) ISelectElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectElementContext)
}

func (s *SelectElementsContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *SelectElementsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SelectElementsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SelectElementsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectElementsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SelectElementsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectElements(s)
	}
}

func (s *SelectElementsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectElements(s)
	}
}

func (p *MySqlParser) SelectElements() (localctx ISelectElementsContext) {
	this := p
	_ = this

	localctx = NewSelectElementsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 240, MySqlParserRULE_selectElements)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(3618)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 515, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(3616)

			var _m = p.Match(MySqlParserSTAR)

			localctx.(*SelectElementsContext).star = _m
		}

	case 2:
		{
			p.SetState(3617)
			p.SelectElement()
		}

	}
	p.SetState(3624)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3620)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3621)
			p.SelectElement()
		}

		p.SetState(3626)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ISelectElementContext is an interface to support dynamic dispatch.
type ISelectElementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSelectElementContext differentiates from other interfaces.
	IsSelectElementContext()
}

type SelectElementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySelectElementContext() *SelectElementContext {
	var p = new(SelectElementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectElement
	return p
}

func (*SelectElementContext) IsSelectElementContext() {}

func NewSelectElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectElementContext {
	var p = new(SelectElementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectElement

	return p
}

func (s *SelectElementContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectElementContext) CopyFrom(ctx *SelectElementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SelectElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SelectExpressionElementContext struct {
	*SelectElementContext
}

func NewSelectExpressionElementContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectExpressionElementContext {
	var p = new(SelectExpressionElementContext)

	p.SelectElementContext = NewEmptySelectElementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectElementContext))

	return p
}

func (s *SelectExpressionElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectExpressionElementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SelectExpressionElementContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *SelectExpressionElementContext) VAR_ASSIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_ASSIGN, 0)
}

func (s *SelectExpressionElementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SelectExpressionElementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *SelectExpressionElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectExpressionElement(s)
	}
}

func (s *SelectExpressionElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectExpressionElement(s)
	}
}

type SelectFunctionElementContext struct {
	*SelectElementContext
}

func NewSelectFunctionElementContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectFunctionElementContext {
	var p = new(SelectFunctionElementContext)

	p.SelectElementContext = NewEmptySelectElementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectElementContext))

	return p
}

func (s *SelectFunctionElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectFunctionElementContext) FunctionCall() IFunctionCallContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionCallContext)
}

func (s *SelectFunctionElementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SelectFunctionElementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *SelectFunctionElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectFunctionElement(s)
	}
}

func (s *SelectFunctionElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectFunctionElement(s)
	}
}

type SelectStarElementContext struct {
	*SelectElementContext
}

func NewSelectStarElementContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectStarElementContext {
	var p = new(SelectStarElementContext)

	p.SelectElementContext = NewEmptySelectElementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectElementContext))

	return p
}

func (s *SelectStarElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectStarElementContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *SelectStarElementContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *SelectStarElementContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *SelectStarElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectStarElement(s)
	}
}

func (s *SelectStarElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectStarElement(s)
	}
}

type SelectColumnElementContext struct {
	*SelectElementContext
}

func NewSelectColumnElementContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectColumnElementContext {
	var p = new(SelectColumnElementContext)

	p.SelectElementContext = NewEmptySelectElementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectElementContext))

	return p
}

func (s *SelectColumnElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectColumnElementContext) FullColumnName() IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *SelectColumnElementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SelectColumnElementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *SelectColumnElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectColumnElement(s)
	}
}

func (s *SelectColumnElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectColumnElement(s)
	}
}

func (p *MySqlParser) SelectElement() (localctx ISelectElementContext) {
	this := p
	_ = this

	localctx = NewSelectElementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 242, MySqlParserRULE_selectElement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3656)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 524, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSelectStarElementContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3627)
			p.FullId()
		}
		{
			p.SetState(3628)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(3629)
			p.Match(MySqlParserSTAR)
		}

	case 2:
		localctx = NewSelectColumnElementContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3631)
			p.FullColumnName()
		}
		p.SetState(3636)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 518, p.GetParserRuleContext()) == 1 {
			p.SetState(3633)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserAS {
				{
					p.SetState(3632)
					p.Match(MySqlParserAS)
				}

			}
			{
				p.SetState(3635)
				p.Uid()
			}

		}

	case 3:
		localctx = NewSelectFunctionElementContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3638)
			p.FunctionCall()
		}
		p.SetState(3643)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 520, p.GetParserRuleContext()) == 1 {
			p.SetState(3640)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserAS {
				{
					p.SetState(3639)
					p.Match(MySqlParserAS)
				}

			}
			{
				p.SetState(3642)
				p.Uid()
			}

		}

	case 4:
		localctx = NewSelectExpressionElementContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		p.SetState(3647)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 521, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3645)
				p.Match(MySqlParserLOCAL_ID)
			}
			{
				p.SetState(3646)
				p.Match(MySqlParserVAR_ASSIGN)
			}

		}
		{
			p.SetState(3649)
			p.expression(0)
		}
		p.SetState(3654)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 523, p.GetParserRuleContext()) == 1 {
			p.SetState(3651)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserAS {
				{
					p.SetState(3650)
					p.Match(MySqlParserAS)
				}

			}
			{
				p.SetState(3653)
				p.Uid()
			}

		}

	}

	return localctx
}

// ISelectIntoExpressionContext is an interface to support dynamic dispatch.
type ISelectIntoExpressionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSelectIntoExpressionContext differentiates from other interfaces.
	IsSelectIntoExpressionContext()
}

type SelectIntoExpressionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySelectIntoExpressionContext() *SelectIntoExpressionContext {
	var p = new(SelectIntoExpressionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectIntoExpression
	return p
}

func (*SelectIntoExpressionContext) IsSelectIntoExpressionContext() {}

func NewSelectIntoExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectIntoExpressionContext {
	var p = new(SelectIntoExpressionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectIntoExpression

	return p
}

func (s *SelectIntoExpressionContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectIntoExpressionContext) CopyFrom(ctx *SelectIntoExpressionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SelectIntoExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectIntoExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SelectIntoVariablesContext struct {
	*SelectIntoExpressionContext
}

func NewSelectIntoVariablesContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectIntoVariablesContext {
	var p = new(SelectIntoVariablesContext)

	p.SelectIntoExpressionContext = NewEmptySelectIntoExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectIntoExpressionContext))

	return p
}

func (s *SelectIntoVariablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectIntoVariablesContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *SelectIntoVariablesContext) AllAssignmentField() []IAssignmentFieldContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem())
	var tst = make([]IAssignmentFieldContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IAssignmentFieldContext)
		}
	}

	return tst
}

func (s *SelectIntoVariablesContext) AssignmentField(i int) IAssignmentFieldContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAssignmentFieldContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IAssignmentFieldContext)
}

func (s *SelectIntoVariablesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SelectIntoVariablesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SelectIntoVariablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectIntoVariables(s)
	}
}

func (s *SelectIntoVariablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectIntoVariables(s)
	}
}

type SelectIntoTextFileContext struct {
	*SelectIntoExpressionContext
	filename     antlr.Token
	charset      ICharsetNameContext
	fieldsFormat antlr.Token
}

func NewSelectIntoTextFileContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectIntoTextFileContext {
	var p = new(SelectIntoTextFileContext)

	p.SelectIntoExpressionContext = NewEmptySelectIntoExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectIntoExpressionContext))

	return p
}

func (s *SelectIntoTextFileContext) GetFilename() antlr.Token { return s.filename }

func (s *SelectIntoTextFileContext) GetFieldsFormat() antlr.Token { return s.fieldsFormat }

func (s *SelectIntoTextFileContext) SetFilename(v antlr.Token) { s.filename = v }

func (s *SelectIntoTextFileContext) SetFieldsFormat(v antlr.Token) { s.fieldsFormat = v }

func (s *SelectIntoTextFileContext) GetCharset() ICharsetNameContext { return s.charset }

func (s *SelectIntoTextFileContext) SetCharset(v ICharsetNameContext) { s.charset = v }

func (s *SelectIntoTextFileContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectIntoTextFileContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *SelectIntoTextFileContext) OUTFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOUTFILE, 0)
}

func (s *SelectIntoTextFileContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SelectIntoTextFileContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *SelectIntoTextFileContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SelectIntoTextFileContext) LINES() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINES, 0)
}

func (s *SelectIntoTextFileContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *SelectIntoTextFileContext) FIELDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIELDS, 0)
}

func (s *SelectIntoTextFileContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *SelectIntoTextFileContext) AllSelectFieldsInto() []ISelectFieldsIntoContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectFieldsIntoContext)(nil)).Elem())
	var tst = make([]ISelectFieldsIntoContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectFieldsIntoContext)
		}
	}

	return tst
}

func (s *SelectIntoTextFileContext) SelectFieldsInto(i int) ISelectFieldsIntoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectFieldsIntoContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectFieldsIntoContext)
}

func (s *SelectIntoTextFileContext) AllSelectLinesInto() []ISelectLinesIntoContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISelectLinesIntoContext)(nil)).Elem())
	var tst = make([]ISelectLinesIntoContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISelectLinesIntoContext)
		}
	}

	return tst
}

func (s *SelectIntoTextFileContext) SelectLinesInto(i int) ISelectLinesIntoContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectLinesIntoContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISelectLinesIntoContext)
}

func (s *SelectIntoTextFileContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectIntoTextFile(s)
	}
}

func (s *SelectIntoTextFileContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectIntoTextFile(s)
	}
}

type SelectIntoDumpFileContext struct {
	*SelectIntoExpressionContext
}

func NewSelectIntoDumpFileContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectIntoDumpFileContext {
	var p = new(SelectIntoDumpFileContext)

	p.SelectIntoExpressionContext = NewEmptySelectIntoExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SelectIntoExpressionContext))

	return p
}

func (s *SelectIntoDumpFileContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectIntoDumpFileContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *SelectIntoDumpFileContext) DUMPFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDUMPFILE, 0)
}

func (s *SelectIntoDumpFileContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SelectIntoDumpFileContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectIntoDumpFile(s)
	}
}

func (s *SelectIntoDumpFileContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectIntoDumpFile(s)
	}
}

func (p *MySqlParser) SelectIntoExpression() (localctx ISelectIntoExpressionContext) {
	this := p
	_ = this

	localctx = NewSelectIntoExpressionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 244, MySqlParserRULE_selectIntoExpression)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3694)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 531, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSelectIntoVariablesContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3658)
			p.Match(MySqlParserINTO)
		}
		{
			p.SetState(3659)
			p.AssignmentField()
		}
		p.SetState(3664)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3660)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3661)
				p.AssignmentField()
			}

			p.SetState(3666)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewSelectIntoDumpFileContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3667)
			p.Match(MySqlParserINTO)
		}
		{
			p.SetState(3668)
			p.Match(MySqlParserDUMPFILE)
		}
		{
			p.SetState(3669)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 3:
		localctx = NewSelectIntoTextFileContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3670)
			p.Match(MySqlParserINTO)
		}
		{
			p.SetState(3671)
			p.Match(MySqlParserOUTFILE)
		}
		{
			p.SetState(3672)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectIntoTextFileContext).filename = _m
		}
		p.SetState(3676)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCHARACTER {
			{
				p.SetState(3673)
				p.Match(MySqlParserCHARACTER)
			}
			{
				p.SetState(3674)
				p.Match(MySqlParserSET)
			}
			{
				p.SetState(3675)

				var _x = p.CharsetName()

				localctx.(*SelectIntoTextFileContext).charset = _x
			}

		}
		p.SetState(3684)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 528, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3678)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*SelectIntoTextFileContext).fieldsFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserCOLUMNS || _la == MySqlParserFIELDS) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*SelectIntoTextFileContext).fieldsFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			p.SetState(3680)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for ok := true; ok; ok = _la == MySqlParserENCLOSED || _la == MySqlParserESCAPED || _la == MySqlParserOPTIONALLY || _la == MySqlParserTERMINATED {
				{
					p.SetState(3679)
					p.SelectFieldsInto()
				}

				p.SetState(3682)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(3692)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLINES {
			{
				p.SetState(3686)
				p.Match(MySqlParserLINES)
			}
			p.SetState(3688)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for ok := true; ok; ok = _la == MySqlParserSTARTING || _la == MySqlParserTERMINATED {
				{
					p.SetState(3687)
					p.SelectLinesInto()
				}

				p.SetState(3690)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}

	}

	return localctx
}

// ISelectFieldsIntoContext is an interface to support dynamic dispatch.
type ISelectFieldsIntoContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetTerminationField returns the terminationField token.
	GetTerminationField() antlr.Token

	// GetEnclosion returns the enclosion token.
	GetEnclosion() antlr.Token

	// GetEscaping returns the escaping token.
	GetEscaping() antlr.Token

	// SetTerminationField sets the terminationField token.
	SetTerminationField(antlr.Token)

	// SetEnclosion sets the enclosion token.
	SetEnclosion(antlr.Token)

	// SetEscaping sets the escaping token.
	SetEscaping(antlr.Token)

	// IsSelectFieldsIntoContext differentiates from other interfaces.
	IsSelectFieldsIntoContext()
}

type SelectFieldsIntoContext struct {
	*antlr.BaseParserRuleContext
	parser           antlr.Parser
	terminationField antlr.Token
	enclosion        antlr.Token
	escaping         antlr.Token
}

func NewEmptySelectFieldsIntoContext() *SelectFieldsIntoContext {
	var p = new(SelectFieldsIntoContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectFieldsInto
	return p
}

func (*SelectFieldsIntoContext) IsSelectFieldsIntoContext() {}

func NewSelectFieldsIntoContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectFieldsIntoContext {
	var p = new(SelectFieldsIntoContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectFieldsInto

	return p
}

func (s *SelectFieldsIntoContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectFieldsIntoContext) GetTerminationField() antlr.Token { return s.terminationField }

func (s *SelectFieldsIntoContext) GetEnclosion() antlr.Token { return s.enclosion }

func (s *SelectFieldsIntoContext) GetEscaping() antlr.Token { return s.escaping }

func (s *SelectFieldsIntoContext) SetTerminationField(v antlr.Token) { s.terminationField = v }

func (s *SelectFieldsIntoContext) SetEnclosion(v antlr.Token) { s.enclosion = v }

func (s *SelectFieldsIntoContext) SetEscaping(v antlr.Token) { s.escaping = v }

func (s *SelectFieldsIntoContext) TERMINATED() antlr.TerminalNode {
	return s.GetToken(MySqlParserTERMINATED, 0)
}

func (s *SelectFieldsIntoContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *SelectFieldsIntoContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SelectFieldsIntoContext) ENCLOSED() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCLOSED, 0)
}

func (s *SelectFieldsIntoContext) OPTIONALLY() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIONALLY, 0)
}

func (s *SelectFieldsIntoContext) ESCAPED() antlr.TerminalNode {
	return s.GetToken(MySqlParserESCAPED, 0)
}

func (s *SelectFieldsIntoContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectFieldsIntoContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SelectFieldsIntoContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectFieldsInto(s)
	}
}

func (s *SelectFieldsIntoContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectFieldsInto(s)
	}
}

func (p *MySqlParser) SelectFieldsInto() (localctx ISelectFieldsIntoContext) {
	this := p
	_ = this

	localctx = NewSelectFieldsIntoContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 246, MySqlParserRULE_selectFieldsInto)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3708)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserTERMINATED:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3696)
			p.Match(MySqlParserTERMINATED)
		}
		{
			p.SetState(3697)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(3698)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectFieldsIntoContext).terminationField = _m
		}

	case MySqlParserENCLOSED, MySqlParserOPTIONALLY:
		p.EnterOuterAlt(localctx, 2)
		p.SetState(3700)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserOPTIONALLY {
			{
				p.SetState(3699)
				p.Match(MySqlParserOPTIONALLY)
			}

		}
		{
			p.SetState(3702)
			p.Match(MySqlParserENCLOSED)
		}
		{
			p.SetState(3703)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(3704)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectFieldsIntoContext).enclosion = _m
		}

	case MySqlParserESCAPED:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3705)
			p.Match(MySqlParserESCAPED)
		}
		{
			p.SetState(3706)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(3707)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectFieldsIntoContext).escaping = _m
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ISelectLinesIntoContext is an interface to support dynamic dispatch.
type ISelectLinesIntoContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetStarting returns the starting token.
	GetStarting() antlr.Token

	// GetTerminationLine returns the terminationLine token.
	GetTerminationLine() antlr.Token

	// SetStarting sets the starting token.
	SetStarting(antlr.Token)

	// SetTerminationLine sets the terminationLine token.
	SetTerminationLine(antlr.Token)

	// IsSelectLinesIntoContext differentiates from other interfaces.
	IsSelectLinesIntoContext()
}

type SelectLinesIntoContext struct {
	*antlr.BaseParserRuleContext
	parser          antlr.Parser
	starting        antlr.Token
	terminationLine antlr.Token
}

func NewEmptySelectLinesIntoContext() *SelectLinesIntoContext {
	var p = new(SelectLinesIntoContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_selectLinesInto
	return p
}

func (*SelectLinesIntoContext) IsSelectLinesIntoContext() {}

func NewSelectLinesIntoContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectLinesIntoContext {
	var p = new(SelectLinesIntoContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_selectLinesInto

	return p
}

func (s *SelectLinesIntoContext) GetParser() antlr.Parser { return s.parser }

func (s *SelectLinesIntoContext) GetStarting() antlr.Token { return s.starting }

func (s *SelectLinesIntoContext) GetTerminationLine() antlr.Token { return s.terminationLine }

func (s *SelectLinesIntoContext) SetStarting(v antlr.Token) { s.starting = v }

func (s *SelectLinesIntoContext) SetTerminationLine(v antlr.Token) { s.terminationLine = v }

func (s *SelectLinesIntoContext) STARTING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTARTING, 0)
}

func (s *SelectLinesIntoContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *SelectLinesIntoContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SelectLinesIntoContext) TERMINATED() antlr.TerminalNode {
	return s.GetToken(MySqlParserTERMINATED, 0)
}

func (s *SelectLinesIntoContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SelectLinesIntoContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SelectLinesIntoContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSelectLinesInto(s)
	}
}

func (s *SelectLinesIntoContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSelectLinesInto(s)
	}
}

func (p *MySqlParser) SelectLinesInto() (localctx ISelectLinesIntoContext) {
	this := p
	_ = this

	localctx = NewSelectLinesIntoContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 248, MySqlParserRULE_selectLinesInto)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3716)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSTARTING:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3710)
			p.Match(MySqlParserSTARTING)
		}
		{
			p.SetState(3711)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(3712)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectLinesIntoContext).starting = _m
		}

	case MySqlParserTERMINATED:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3713)
			p.Match(MySqlParserTERMINATED)
		}
		{
			p.SetState(3714)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(3715)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SelectLinesIntoContext).terminationLine = _m
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IFromClauseContext is an interface to support dynamic dispatch.
type IFromClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetWhereExpr returns the whereExpr rule contexts.
	GetWhereExpr() IExpressionContext

	// SetWhereExpr sets the whereExpr rule contexts.
	SetWhereExpr(IExpressionContext)

	// IsFromClauseContext differentiates from other interfaces.
	IsFromClauseContext()
}

type FromClauseContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	whereExpr IExpressionContext
}

func NewEmptyFromClauseContext() *FromClauseContext {
	var p = new(FromClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_fromClause
	return p
}

func (*FromClauseContext) IsFromClauseContext() {}

func NewFromClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FromClauseContext {
	var p = new(FromClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_fromClause

	return p
}

func (s *FromClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *FromClauseContext) GetWhereExpr() IExpressionContext { return s.whereExpr }

func (s *FromClauseContext) SetWhereExpr(v IExpressionContext) { s.whereExpr = v }

func (s *FromClauseContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *FromClauseContext) TableSources() ITableSourcesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableSourcesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableSourcesContext)
}

func (s *FromClauseContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *FromClauseContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *FromClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FromClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FromClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFromClause(s)
	}
}

func (s *FromClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFromClause(s)
	}
}

func (p *MySqlParser) FromClause() (localctx IFromClauseContext) {
	this := p
	_ = this

	localctx = NewFromClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 250, MySqlParserRULE_fromClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(3720)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFROM {
		{
			p.SetState(3718)
			p.Match(MySqlParserFROM)
		}
		{
			p.SetState(3719)
			p.TableSources()
		}

	}
	p.SetState(3724)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWHERE {
		{
			p.SetState(3722)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(3723)

			var _x = p.expression(0)

			localctx.(*FromClauseContext).whereExpr = _x
		}

	}

	return localctx
}

// IGroupByClauseContext is an interface to support dynamic dispatch.
type IGroupByClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsGroupByClauseContext differentiates from other interfaces.
	IsGroupByClauseContext()
}

type GroupByClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyGroupByClauseContext() *GroupByClauseContext {
	var p = new(GroupByClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_groupByClause
	return p
}

func (*GroupByClauseContext) IsGroupByClauseContext() {}

func NewGroupByClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByClauseContext {
	var p = new(GroupByClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_groupByClause

	return p
}

func (s *GroupByClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *GroupByClauseContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *GroupByClauseContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *GroupByClauseContext) AllGroupByItem() []IGroupByItemContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IGroupByItemContext)(nil)).Elem())
	var tst = make([]IGroupByItemContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IGroupByItemContext)
		}
	}

	return tst
}

func (s *GroupByClauseContext) GroupByItem(i int) IGroupByItemContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGroupByItemContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IGroupByItemContext)
}

func (s *GroupByClauseContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *GroupByClauseContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *GroupByClauseContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *GroupByClauseContext) ROLLUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLUP, 0)
}

func (s *GroupByClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GroupByClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *GroupByClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGroupByClause(s)
	}
}

func (s *GroupByClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGroupByClause(s)
	}
}

func (p *MySqlParser) GroupByClause() (localctx IGroupByClauseContext) {
	this := p
	_ = this

	localctx = NewGroupByClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 252, MySqlParserRULE_groupByClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3726)
		p.Match(MySqlParserGROUP)
	}
	{
		p.SetState(3727)
		p.Match(MySqlParserBY)
	}
	{
		p.SetState(3728)
		p.GroupByItem()
	}
	p.SetState(3733)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3729)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3730)
			p.GroupByItem()
		}

		p.SetState(3735)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(3738)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 538, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3736)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(3737)
			p.Match(MySqlParserROLLUP)
		}

	}

	return localctx
}

// IHavingClauseContext is an interface to support dynamic dispatch.
type IHavingClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetHavingExpr returns the havingExpr rule contexts.
	GetHavingExpr() IExpressionContext

	// SetHavingExpr sets the havingExpr rule contexts.
	SetHavingExpr(IExpressionContext)

	// IsHavingClauseContext differentiates from other interfaces.
	IsHavingClauseContext()
}

type HavingClauseContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	havingExpr IExpressionContext
}

func NewEmptyHavingClauseContext() *HavingClauseContext {
	var p = new(HavingClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_havingClause
	return p
}

func (*HavingClauseContext) IsHavingClauseContext() {}

func NewHavingClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HavingClauseContext {
	var p = new(HavingClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_havingClause

	return p
}

func (s *HavingClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *HavingClauseContext) GetHavingExpr() IExpressionContext { return s.havingExpr }

func (s *HavingClauseContext) SetHavingExpr(v IExpressionContext) { s.havingExpr = v }

func (s *HavingClauseContext) HAVING() antlr.TerminalNode {
	return s.GetToken(MySqlParserHAVING, 0)
}

func (s *HavingClauseContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *HavingClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HavingClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HavingClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHavingClause(s)
	}
}

func (s *HavingClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHavingClause(s)
	}
}

func (p *MySqlParser) HavingClause() (localctx IHavingClauseContext) {
	this := p
	_ = this

	localctx = NewHavingClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 254, MySqlParserRULE_havingClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3740)
		p.Match(MySqlParserHAVING)
	}
	{
		p.SetState(3741)

		var _x = p.expression(0)

		localctx.(*HavingClauseContext).havingExpr = _x
	}

	return localctx
}

// IWindowClauseContext is an interface to support dynamic dispatch.
type IWindowClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsWindowClauseContext differentiates from other interfaces.
	IsWindowClauseContext()
}

type WindowClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyWindowClauseContext() *WindowClauseContext {
	var p = new(WindowClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_windowClause
	return p
}

func (*WindowClauseContext) IsWindowClauseContext() {}

func NewWindowClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WindowClauseContext {
	var p = new(WindowClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_windowClause

	return p
}

func (s *WindowClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *WindowClauseContext) WINDOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserWINDOW, 0)
}

func (s *WindowClauseContext) AllWindowName() []IWindowNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IWindowNameContext)(nil)).Elem())
	var tst = make([]IWindowNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IWindowNameContext)
		}
	}

	return tst
}

func (s *WindowClauseContext) WindowName(i int) IWindowNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IWindowNameContext)
}

func (s *WindowClauseContext) AllAS() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserAS)
}

func (s *WindowClauseContext) AS(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, i)
}

func (s *WindowClauseContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *WindowClauseContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *WindowClauseContext) AllWindowSpec() []IWindowSpecContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IWindowSpecContext)(nil)).Elem())
	var tst = make([]IWindowSpecContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IWindowSpecContext)
		}
	}

	return tst
}

func (s *WindowClauseContext) WindowSpec(i int) IWindowSpecContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowSpecContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IWindowSpecContext)
}

func (s *WindowClauseContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *WindowClauseContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *WindowClauseContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *WindowClauseContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *WindowClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WindowClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *WindowClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWindowClause(s)
	}
}

func (s *WindowClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWindowClause(s)
	}
}

func (p *MySqlParser) WindowClause() (localctx IWindowClauseContext) {
	this := p
	_ = this

	localctx = NewWindowClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 256, MySqlParserRULE_windowClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3743)
		p.Match(MySqlParserWINDOW)
	}
	{
		p.SetState(3744)
		p.WindowName()
	}
	{
		p.SetState(3745)
		p.Match(MySqlParserAS)
	}
	{
		p.SetState(3746)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(3747)
		p.WindowSpec()
	}
	{
		p.SetState(3748)
		p.Match(MySqlParserRR_BRACKET)
	}
	p.SetState(3758)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3749)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3750)
			p.WindowName()
		}
		{
			p.SetState(3751)
			p.Match(MySqlParserAS)
		}
		{
			p.SetState(3752)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(3753)
			p.WindowSpec()
		}
		{
			p.SetState(3754)
			p.Match(MySqlParserRR_BRACKET)
		}

		p.SetState(3760)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IGroupByItemContext is an interface to support dynamic dispatch.
type IGroupByItemContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOrder returns the order token.
	GetOrder() antlr.Token

	// SetOrder sets the order token.
	SetOrder(antlr.Token)

	// IsGroupByItemContext differentiates from other interfaces.
	IsGroupByItemContext()
}

type GroupByItemContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
	order  antlr.Token
}

func NewEmptyGroupByItemContext() *GroupByItemContext {
	var p = new(GroupByItemContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_groupByItem
	return p
}

func (*GroupByItemContext) IsGroupByItemContext() {}

func NewGroupByItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByItemContext {
	var p = new(GroupByItemContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_groupByItem

	return p
}

func (s *GroupByItemContext) GetParser() antlr.Parser { return s.parser }

func (s *GroupByItemContext) GetOrder() antlr.Token { return s.order }

func (s *GroupByItemContext) SetOrder(v antlr.Token) { s.order = v }

func (s *GroupByItemContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *GroupByItemContext) ASC() antlr.TerminalNode {
	return s.GetToken(MySqlParserASC, 0)
}

func (s *GroupByItemContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *GroupByItemContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GroupByItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *GroupByItemContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGroupByItem(s)
	}
}

func (s *GroupByItemContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGroupByItem(s)
	}
}

func (p *MySqlParser) GroupByItem() (localctx IGroupByItemContext) {
	this := p
	_ = this

	localctx = NewGroupByItemContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 258, MySqlParserRULE_groupByItem)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3761)
		p.expression(0)
	}
	p.SetState(3763)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 540, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3762)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*GroupByItemContext).order = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserASC || _la == MySqlParserDESC) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*GroupByItemContext).order = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// ILimitClauseContext is an interface to support dynamic dispatch.
type ILimitClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOffset returns the offset rule contexts.
	GetOffset() ILimitClauseAtomContext

	// GetLimit returns the limit rule contexts.
	GetLimit() ILimitClauseAtomContext

	// SetOffset sets the offset rule contexts.
	SetOffset(ILimitClauseAtomContext)

	// SetLimit sets the limit rule contexts.
	SetLimit(ILimitClauseAtomContext)

	// IsLimitClauseContext differentiates from other interfaces.
	IsLimitClauseContext()
}

type LimitClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
	offset ILimitClauseAtomContext
	limit  ILimitClauseAtomContext
}

func NewEmptyLimitClauseContext() *LimitClauseContext {
	var p = new(LimitClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_limitClause
	return p
}

func (*LimitClauseContext) IsLimitClauseContext() {}

func NewLimitClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LimitClauseContext {
	var p = new(LimitClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_limitClause

	return p
}

func (s *LimitClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *LimitClauseContext) GetOffset() ILimitClauseAtomContext { return s.offset }

func (s *LimitClauseContext) GetLimit() ILimitClauseAtomContext { return s.limit }

func (s *LimitClauseContext) SetOffset(v ILimitClauseAtomContext) { s.offset = v }

func (s *LimitClauseContext) SetLimit(v ILimitClauseAtomContext) { s.limit = v }

func (s *LimitClauseContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *LimitClauseContext) OFFSET() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFSET, 0)
}

func (s *LimitClauseContext) AllLimitClauseAtom() []ILimitClauseAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ILimitClauseAtomContext)(nil)).Elem())
	var tst = make([]ILimitClauseAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ILimitClauseAtomContext)
		}
	}

	return tst
}

func (s *LimitClauseContext) LimitClauseAtom(i int) ILimitClauseAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ILimitClauseAtomContext)
}

func (s *LimitClauseContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *LimitClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LimitClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LimitClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLimitClause(s)
	}
}

func (s *LimitClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLimitClause(s)
	}
}

func (p *MySqlParser) LimitClause() (localctx ILimitClauseContext) {
	this := p
	_ = this

	localctx = NewLimitClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 260, MySqlParserRULE_limitClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3765)
		p.Match(MySqlParserLIMIT)
	}
	p.SetState(3776)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 542, p.GetParserRuleContext()) {
	case 1:
		p.SetState(3769)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 541, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(3766)

				var _x = p.LimitClauseAtom()

				localctx.(*LimitClauseContext).offset = _x
			}
			{
				p.SetState(3767)
				p.Match(MySqlParserCOMMA)
			}

		}
		{
			p.SetState(3771)

			var _x = p.LimitClauseAtom()

			localctx.(*LimitClauseContext).limit = _x
		}

	case 2:
		{
			p.SetState(3772)

			var _x = p.LimitClauseAtom()

			localctx.(*LimitClauseContext).limit = _x
		}
		{
			p.SetState(3773)
			p.Match(MySqlParserOFFSET)
		}
		{
			p.SetState(3774)

			var _x = p.LimitClauseAtom()

			localctx.(*LimitClauseContext).offset = _x
		}

	}

	return localctx
}

// ILimitClauseAtomContext is an interface to support dynamic dispatch.
type ILimitClauseAtomContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLimitClauseAtomContext differentiates from other interfaces.
	IsLimitClauseAtomContext()
}

type LimitClauseAtomContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLimitClauseAtomContext() *LimitClauseAtomContext {
	var p = new(LimitClauseAtomContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_limitClauseAtom
	return p
}

func (*LimitClauseAtomContext) IsLimitClauseAtomContext() {}

func NewLimitClauseAtomContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LimitClauseAtomContext {
	var p = new(LimitClauseAtomContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_limitClauseAtom

	return p
}

func (s *LimitClauseAtomContext) GetParser() antlr.Parser { return s.parser }

func (s *LimitClauseAtomContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LimitClauseAtomContext) MysqlVariable() IMysqlVariableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMysqlVariableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMysqlVariableContext)
}

func (s *LimitClauseAtomContext) SimpleId() ISimpleIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleIdContext)
}

func (s *LimitClauseAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LimitClauseAtomContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LimitClauseAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLimitClauseAtom(s)
	}
}

func (s *LimitClauseAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLimitClauseAtom(s)
	}
}

func (p *MySqlParser) LimitClauseAtom() (localctx ILimitClauseAtomContext) {
	this := p
	_ = this

	localctx = NewLimitClauseAtomContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 262, MySqlParserRULE_limitClauseAtom)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3781)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3778)
			p.DecimalLiteral()
		}

	case MySqlParserLOCAL_ID, MySqlParserGLOBAL_ID:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3779)
			p.MysqlVariable()
		}

	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3780)
			p.SimpleId()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IStartTransactionContext is an interface to support dynamic dispatch.
type IStartTransactionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStartTransactionContext differentiates from other interfaces.
	IsStartTransactionContext()
}

type StartTransactionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStartTransactionContext() *StartTransactionContext {
	var p = new(StartTransactionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_startTransaction
	return p
}

func (*StartTransactionContext) IsStartTransactionContext() {}

func NewStartTransactionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StartTransactionContext {
	var p = new(StartTransactionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_startTransaction

	return p
}

func (s *StartTransactionContext) GetParser() antlr.Parser { return s.parser }

func (s *StartTransactionContext) START() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART, 0)
}

func (s *StartTransactionContext) TRANSACTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRANSACTION, 0)
}

func (s *StartTransactionContext) AllTransactionMode() []ITransactionModeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITransactionModeContext)(nil)).Elem())
	var tst = make([]ITransactionModeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITransactionModeContext)
		}
	}

	return tst
}

func (s *StartTransactionContext) TransactionMode(i int) ITransactionModeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITransactionModeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITransactionModeContext)
}

func (s *StartTransactionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *StartTransactionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *StartTransactionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StartTransactionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StartTransactionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStartTransaction(s)
	}
}

func (s *StartTransactionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStartTransaction(s)
	}
}

func (p *MySqlParser) StartTransaction() (localctx IStartTransactionContext) {
	this := p
	_ = this

	localctx = NewStartTransactionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 264, MySqlParserRULE_startTransaction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3783)
		p.Match(MySqlParserSTART)
	}
	{
		p.SetState(3784)
		p.Match(MySqlParserTRANSACTION)
	}
	p.SetState(3793)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserREAD || _la == MySqlParserWITH {
		{
			p.SetState(3785)
			p.TransactionMode()
		}
		p.SetState(3790)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3786)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3787)
				p.TransactionMode()
			}

			p.SetState(3792)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IBeginWorkContext is an interface to support dynamic dispatch.
type IBeginWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBeginWorkContext differentiates from other interfaces.
	IsBeginWorkContext()
}

type BeginWorkContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBeginWorkContext() *BeginWorkContext {
	var p = new(BeginWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_beginWork
	return p
}

func (*BeginWorkContext) IsBeginWorkContext() {}

func NewBeginWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BeginWorkContext {
	var p = new(BeginWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_beginWork

	return p
}

func (s *BeginWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *BeginWorkContext) BEGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEGIN, 0)
}

func (s *BeginWorkContext) WORK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWORK, 0)
}

func (s *BeginWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BeginWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BeginWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBeginWork(s)
	}
}

func (s *BeginWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBeginWork(s)
	}
}

func (p *MySqlParser) BeginWork() (localctx IBeginWorkContext) {
	this := p
	_ = this

	localctx = NewBeginWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 266, MySqlParserRULE_beginWork)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3795)
		p.Match(MySqlParserBEGIN)
	}
	p.SetState(3797)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWORK {
		{
			p.SetState(3796)
			p.Match(MySqlParserWORK)
		}

	}

	return localctx
}

// ICommitWorkContext is an interface to support dynamic dispatch.
type ICommitWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetNochain returns the nochain token.
	GetNochain() antlr.Token

	// GetNorelease returns the norelease token.
	GetNorelease() antlr.Token

	// SetNochain sets the nochain token.
	SetNochain(antlr.Token)

	// SetNorelease sets the norelease token.
	SetNorelease(antlr.Token)

	// IsCommitWorkContext differentiates from other interfaces.
	IsCommitWorkContext()
}

type CommitWorkContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	nochain   antlr.Token
	norelease antlr.Token
}

func NewEmptyCommitWorkContext() *CommitWorkContext {
	var p = new(CommitWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_commitWork
	return p
}

func (*CommitWorkContext) IsCommitWorkContext() {}

func NewCommitWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CommitWorkContext {
	var p = new(CommitWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_commitWork

	return p
}

func (s *CommitWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *CommitWorkContext) GetNochain() antlr.Token { return s.nochain }

func (s *CommitWorkContext) GetNorelease() antlr.Token { return s.norelease }

func (s *CommitWorkContext) SetNochain(v antlr.Token) { s.nochain = v }

func (s *CommitWorkContext) SetNorelease(v antlr.Token) { s.norelease = v }

func (s *CommitWorkContext) COMMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMIT, 0)
}

func (s *CommitWorkContext) WORK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWORK, 0)
}

func (s *CommitWorkContext) AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, 0)
}

func (s *CommitWorkContext) CHAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAIN, 0)
}

func (s *CommitWorkContext) RELEASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELEASE, 0)
}

func (s *CommitWorkContext) AllNO() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNO)
}

func (s *CommitWorkContext) NO(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, i)
}

func (s *CommitWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CommitWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CommitWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCommitWork(s)
	}
}

func (s *CommitWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCommitWork(s)
	}
}

func (p *MySqlParser) CommitWork() (localctx ICommitWorkContext) {
	this := p
	_ = this

	localctx = NewCommitWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 268, MySqlParserRULE_commitWork)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3799)
		p.Match(MySqlParserCOMMIT)
	}
	p.SetState(3801)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWORK {
		{
			p.SetState(3800)
			p.Match(MySqlParserWORK)
		}

	}
	p.SetState(3808)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserAND {
		{
			p.SetState(3803)
			p.Match(MySqlParserAND)
		}
		p.SetState(3805)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNO {
			{
				p.SetState(3804)

				var _m = p.Match(MySqlParserNO)

				localctx.(*CommitWorkContext).nochain = _m
			}

		}
		{
			p.SetState(3807)
			p.Match(MySqlParserCHAIN)
		}

	}
	p.SetState(3814)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 551, p.GetParserRuleContext()) == 1 {
		p.SetState(3811)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNO {
			{
				p.SetState(3810)

				var _m = p.Match(MySqlParserNO)

				localctx.(*CommitWorkContext).norelease = _m
			}

		}
		{
			p.SetState(3813)
			p.Match(MySqlParserRELEASE)
		}

	}

	return localctx
}

// IRollbackWorkContext is an interface to support dynamic dispatch.
type IRollbackWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetNochain returns the nochain token.
	GetNochain() antlr.Token

	// GetNorelease returns the norelease token.
	GetNorelease() antlr.Token

	// SetNochain sets the nochain token.
	SetNochain(antlr.Token)

	// SetNorelease sets the norelease token.
	SetNorelease(antlr.Token)

	// IsRollbackWorkContext differentiates from other interfaces.
	IsRollbackWorkContext()
}

type RollbackWorkContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	nochain   antlr.Token
	norelease antlr.Token
}

func NewEmptyRollbackWorkContext() *RollbackWorkContext {
	var p = new(RollbackWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_rollbackWork
	return p
}

func (*RollbackWorkContext) IsRollbackWorkContext() {}

func NewRollbackWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RollbackWorkContext {
	var p = new(RollbackWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_rollbackWork

	return p
}

func (s *RollbackWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *RollbackWorkContext) GetNochain() antlr.Token { return s.nochain }

func (s *RollbackWorkContext) GetNorelease() antlr.Token { return s.norelease }

func (s *RollbackWorkContext) SetNochain(v antlr.Token) { s.nochain = v }

func (s *RollbackWorkContext) SetNorelease(v antlr.Token) { s.norelease = v }

func (s *RollbackWorkContext) ROLLBACK() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLBACK, 0)
}

func (s *RollbackWorkContext) WORK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWORK, 0)
}

func (s *RollbackWorkContext) AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, 0)
}

func (s *RollbackWorkContext) CHAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAIN, 0)
}

func (s *RollbackWorkContext) RELEASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELEASE, 0)
}

func (s *RollbackWorkContext) AllNO() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNO)
}

func (s *RollbackWorkContext) NO(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, i)
}

func (s *RollbackWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RollbackWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RollbackWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRollbackWork(s)
	}
}

func (s *RollbackWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRollbackWork(s)
	}
}

func (p *MySqlParser) RollbackWork() (localctx IRollbackWorkContext) {
	this := p
	_ = this

	localctx = NewRollbackWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 270, MySqlParserRULE_rollbackWork)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3816)
		p.Match(MySqlParserROLLBACK)
	}
	p.SetState(3818)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWORK {
		{
			p.SetState(3817)
			p.Match(MySqlParserWORK)
		}

	}
	p.SetState(3825)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserAND {
		{
			p.SetState(3820)
			p.Match(MySqlParserAND)
		}
		p.SetState(3822)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNO {
			{
				p.SetState(3821)

				var _m = p.Match(MySqlParserNO)

				localctx.(*RollbackWorkContext).nochain = _m
			}

		}
		{
			p.SetState(3824)
			p.Match(MySqlParserCHAIN)
		}

	}
	p.SetState(3831)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 556, p.GetParserRuleContext()) == 1 {
		p.SetState(3828)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNO {
			{
				p.SetState(3827)

				var _m = p.Match(MySqlParserNO)

				localctx.(*RollbackWorkContext).norelease = _m
			}

		}
		{
			p.SetState(3830)
			p.Match(MySqlParserRELEASE)
		}

	}

	return localctx
}

// ISavepointStatementContext is an interface to support dynamic dispatch.
type ISavepointStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSavepointStatementContext differentiates from other interfaces.
	IsSavepointStatementContext()
}

type SavepointStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySavepointStatementContext() *SavepointStatementContext {
	var p = new(SavepointStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_savepointStatement
	return p
}

func (*SavepointStatementContext) IsSavepointStatementContext() {}

func NewSavepointStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SavepointStatementContext {
	var p = new(SavepointStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_savepointStatement

	return p
}

func (s *SavepointStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SavepointStatementContext) SAVEPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSAVEPOINT, 0)
}

func (s *SavepointStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SavepointStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SavepointStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SavepointStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSavepointStatement(s)
	}
}

func (s *SavepointStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSavepointStatement(s)
	}
}

func (p *MySqlParser) SavepointStatement() (localctx ISavepointStatementContext) {
	this := p
	_ = this

	localctx = NewSavepointStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 272, MySqlParserRULE_savepointStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3833)
		p.Match(MySqlParserSAVEPOINT)
	}
	{
		p.SetState(3834)
		p.Uid()
	}

	return localctx
}

// IRollbackStatementContext is an interface to support dynamic dispatch.
type IRollbackStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRollbackStatementContext differentiates from other interfaces.
	IsRollbackStatementContext()
}

type RollbackStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRollbackStatementContext() *RollbackStatementContext {
	var p = new(RollbackStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_rollbackStatement
	return p
}

func (*RollbackStatementContext) IsRollbackStatementContext() {}

func NewRollbackStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RollbackStatementContext {
	var p = new(RollbackStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_rollbackStatement

	return p
}

func (s *RollbackStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *RollbackStatementContext) ROLLBACK() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLBACK, 0)
}

func (s *RollbackStatementContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *RollbackStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *RollbackStatementContext) WORK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWORK, 0)
}

func (s *RollbackStatementContext) SAVEPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSAVEPOINT, 0)
}

func (s *RollbackStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RollbackStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RollbackStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRollbackStatement(s)
	}
}

func (s *RollbackStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRollbackStatement(s)
	}
}

func (p *MySqlParser) RollbackStatement() (localctx IRollbackStatementContext) {
	this := p
	_ = this

	localctx = NewRollbackStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 274, MySqlParserRULE_rollbackStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3836)
		p.Match(MySqlParserROLLBACK)
	}
	p.SetState(3838)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWORK {
		{
			p.SetState(3837)
			p.Match(MySqlParserWORK)
		}

	}
	{
		p.SetState(3840)
		p.Match(MySqlParserTO)
	}
	p.SetState(3842)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 558, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(3841)
			p.Match(MySqlParserSAVEPOINT)
		}

	}
	{
		p.SetState(3844)
		p.Uid()
	}

	return localctx
}

// IReleaseStatementContext is an interface to support dynamic dispatch.
type IReleaseStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsReleaseStatementContext differentiates from other interfaces.
	IsReleaseStatementContext()
}

type ReleaseStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyReleaseStatementContext() *ReleaseStatementContext {
	var p = new(ReleaseStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_releaseStatement
	return p
}

func (*ReleaseStatementContext) IsReleaseStatementContext() {}

func NewReleaseStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReleaseStatementContext {
	var p = new(ReleaseStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_releaseStatement

	return p
}

func (s *ReleaseStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ReleaseStatementContext) RELEASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELEASE, 0)
}

func (s *ReleaseStatementContext) SAVEPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSAVEPOINT, 0)
}

func (s *ReleaseStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ReleaseStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReleaseStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReleaseStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReleaseStatement(s)
	}
}

func (s *ReleaseStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReleaseStatement(s)
	}
}

func (p *MySqlParser) ReleaseStatement() (localctx IReleaseStatementContext) {
	this := p
	_ = this

	localctx = NewReleaseStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 276, MySqlParserRULE_releaseStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3846)
		p.Match(MySqlParserRELEASE)
	}
	{
		p.SetState(3847)
		p.Match(MySqlParserSAVEPOINT)
	}
	{
		p.SetState(3848)
		p.Uid()
	}

	return localctx
}

// ILockTablesContext is an interface to support dynamic dispatch.
type ILockTablesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLockTablesContext differentiates from other interfaces.
	IsLockTablesContext()
}

type LockTablesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLockTablesContext() *LockTablesContext {
	var p = new(LockTablesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lockTables
	return p
}

func (*LockTablesContext) IsLockTablesContext() {}

func NewLockTablesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LockTablesContext {
	var p = new(LockTablesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lockTables

	return p
}

func (s *LockTablesContext) GetParser() antlr.Parser { return s.parser }

func (s *LockTablesContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *LockTablesContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *LockTablesContext) AllLockTableElement() []ILockTableElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ILockTableElementContext)(nil)).Elem())
	var tst = make([]ILockTableElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ILockTableElementContext)
		}
	}

	return tst
}

func (s *LockTablesContext) LockTableElement(i int) ILockTableElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockTableElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ILockTableElementContext)
}

func (s *LockTablesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *LockTablesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *LockTablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LockTablesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LockTablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLockTables(s)
	}
}

func (s *LockTablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLockTables(s)
	}
}

func (p *MySqlParser) LockTables() (localctx ILockTablesContext) {
	this := p
	_ = this

	localctx = NewLockTablesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 278, MySqlParserRULE_lockTables)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3850)
		p.Match(MySqlParserLOCK)
	}
	{
		p.SetState(3851)
		p.Match(MySqlParserTABLES)
	}
	{
		p.SetState(3852)
		p.LockTableElement()
	}
	p.SetState(3857)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3853)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3854)
			p.LockTableElement()
		}

		p.SetState(3859)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IUnlockTablesContext is an interface to support dynamic dispatch.
type IUnlockTablesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUnlockTablesContext differentiates from other interfaces.
	IsUnlockTablesContext()
}

type UnlockTablesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUnlockTablesContext() *UnlockTablesContext {
	var p = new(UnlockTablesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_unlockTables
	return p
}

func (*UnlockTablesContext) IsUnlockTablesContext() {}

func NewUnlockTablesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnlockTablesContext {
	var p = new(UnlockTablesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_unlockTables

	return p
}

func (s *UnlockTablesContext) GetParser() antlr.Parser { return s.parser }

func (s *UnlockTablesContext) UNLOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNLOCK, 0)
}

func (s *UnlockTablesContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *UnlockTablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnlockTablesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UnlockTablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnlockTables(s)
	}
}

func (s *UnlockTablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnlockTables(s)
	}
}

func (p *MySqlParser) UnlockTables() (localctx IUnlockTablesContext) {
	this := p
	_ = this

	localctx = NewUnlockTablesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 280, MySqlParserRULE_unlockTables)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3860)
		p.Match(MySqlParserUNLOCK)
	}
	{
		p.SetState(3861)
		p.Match(MySqlParserTABLES)
	}

	return localctx
}

// ISetAutocommitStatementContext is an interface to support dynamic dispatch.
type ISetAutocommitStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetAutocommitValue returns the autocommitValue token.
	GetAutocommitValue() antlr.Token

	// SetAutocommitValue sets the autocommitValue token.
	SetAutocommitValue(antlr.Token)

	// IsSetAutocommitStatementContext differentiates from other interfaces.
	IsSetAutocommitStatementContext()
}

type SetAutocommitStatementContext struct {
	*antlr.BaseParserRuleContext
	parser          antlr.Parser
	autocommitValue antlr.Token
}

func NewEmptySetAutocommitStatementContext() *SetAutocommitStatementContext {
	var p = new(SetAutocommitStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_setAutocommitStatement
	return p
}

func (*SetAutocommitStatementContext) IsSetAutocommitStatementContext() {}

func NewSetAutocommitStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetAutocommitStatementContext {
	var p = new(SetAutocommitStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_setAutocommitStatement

	return p
}

func (s *SetAutocommitStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SetAutocommitStatementContext) GetAutocommitValue() antlr.Token { return s.autocommitValue }

func (s *SetAutocommitStatementContext) SetAutocommitValue(v antlr.Token) { s.autocommitValue = v }

func (s *SetAutocommitStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetAutocommitStatementContext) AUTOCOMMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTOCOMMIT, 0)
}

func (s *SetAutocommitStatementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *SetAutocommitStatementContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *SetAutocommitStatementContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *SetAutocommitStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetAutocommitStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SetAutocommitStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetAutocommitStatement(s)
	}
}

func (s *SetAutocommitStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetAutocommitStatement(s)
	}
}

func (p *MySqlParser) SetAutocommitStatement() (localctx ISetAutocommitStatementContext) {
	this := p
	_ = this

	localctx = NewSetAutocommitStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 282, MySqlParserRULE_setAutocommitStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3863)
		p.Match(MySqlParserSET)
	}
	{
		p.SetState(3864)
		p.Match(MySqlParserAUTOCOMMIT)
	}
	{
		p.SetState(3865)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	{
		p.SetState(3866)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*SetAutocommitStatementContext).autocommitValue = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*SetAutocommitStatementContext).autocommitValue = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// ISetTransactionStatementContext is an interface to support dynamic dispatch.
type ISetTransactionStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetTransactionContext returns the transactionContext token.
	GetTransactionContext() antlr.Token

	// SetTransactionContext sets the transactionContext token.
	SetTransactionContext(antlr.Token)

	// IsSetTransactionStatementContext differentiates from other interfaces.
	IsSetTransactionStatementContext()
}

type SetTransactionStatementContext struct {
	*antlr.BaseParserRuleContext
	parser             antlr.Parser
	transactionContext antlr.Token
}

func NewEmptySetTransactionStatementContext() *SetTransactionStatementContext {
	var p = new(SetTransactionStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_setTransactionStatement
	return p
}

func (*SetTransactionStatementContext) IsSetTransactionStatementContext() {}

func NewSetTransactionStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetTransactionStatementContext {
	var p = new(SetTransactionStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_setTransactionStatement

	return p
}

func (s *SetTransactionStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SetTransactionStatementContext) GetTransactionContext() antlr.Token {
	return s.transactionContext
}

func (s *SetTransactionStatementContext) SetTransactionContext(v antlr.Token) {
	s.transactionContext = v
}

func (s *SetTransactionStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetTransactionStatementContext) TRANSACTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRANSACTION, 0)
}

func (s *SetTransactionStatementContext) AllTransactionOption() []ITransactionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITransactionOptionContext)(nil)).Elem())
	var tst = make([]ITransactionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITransactionOptionContext)
		}
	}

	return tst
}

func (s *SetTransactionStatementContext) TransactionOption(i int) ITransactionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITransactionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITransactionOptionContext)
}

func (s *SetTransactionStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SetTransactionStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SetTransactionStatementContext) GLOBAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL, 0)
}

func (s *SetTransactionStatementContext) SESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION, 0)
}

func (s *SetTransactionStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetTransactionStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SetTransactionStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetTransactionStatement(s)
	}
}

func (s *SetTransactionStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetTransactionStatement(s)
	}
}

func (p *MySqlParser) SetTransactionStatement() (localctx ISetTransactionStatementContext) {
	this := p
	_ = this

	localctx = NewSetTransactionStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 284, MySqlParserRULE_setTransactionStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3868)
		p.Match(MySqlParserSET)
	}
	p.SetState(3870)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserGLOBAL || _la == MySqlParserSESSION {
		{
			p.SetState(3869)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*SetTransactionStatementContext).transactionContext = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserGLOBAL || _la == MySqlParserSESSION) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*SetTransactionStatementContext).transactionContext = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(3872)
		p.Match(MySqlParserTRANSACTION)
	}
	{
		p.SetState(3873)
		p.TransactionOption()
	}
	p.SetState(3878)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3874)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3875)
			p.TransactionOption()
		}

		p.SetState(3880)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ITransactionModeContext is an interface to support dynamic dispatch.
type ITransactionModeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTransactionModeContext differentiates from other interfaces.
	IsTransactionModeContext()
}

type TransactionModeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTransactionModeContext() *TransactionModeContext {
	var p = new(TransactionModeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_transactionMode
	return p
}

func (*TransactionModeContext) IsTransactionModeContext() {}

func NewTransactionModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionModeContext {
	var p = new(TransactionModeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_transactionMode

	return p
}

func (s *TransactionModeContext) GetParser() antlr.Parser { return s.parser }

func (s *TransactionModeContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *TransactionModeContext) CONSISTENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSISTENT, 0)
}

func (s *TransactionModeContext) SNAPSHOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSNAPSHOT, 0)
}

func (s *TransactionModeContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *TransactionModeContext) WRITE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWRITE, 0)
}

func (s *TransactionModeContext) ONLY() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLY, 0)
}

func (s *TransactionModeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TransactionModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TransactionModeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTransactionMode(s)
	}
}

func (s *TransactionModeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTransactionMode(s)
	}
}

func (p *MySqlParser) TransactionMode() (localctx ITransactionModeContext) {
	this := p
	_ = this

	localctx = NewTransactionModeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 286, MySqlParserRULE_transactionMode)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3888)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 562, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3881)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(3882)
			p.Match(MySqlParserCONSISTENT)
		}
		{
			p.SetState(3883)
			p.Match(MySqlParserSNAPSHOT)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3884)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3885)
			p.Match(MySqlParserWRITE)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3886)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3887)
			p.Match(MySqlParserONLY)
		}

	}

	return localctx
}

// ILockTableElementContext is an interface to support dynamic dispatch.
type ILockTableElementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLockTableElementContext differentiates from other interfaces.
	IsLockTableElementContext()
}

type LockTableElementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLockTableElementContext() *LockTableElementContext {
	var p = new(LockTableElementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lockTableElement
	return p
}

func (*LockTableElementContext) IsLockTableElementContext() {}

func NewLockTableElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LockTableElementContext {
	var p = new(LockTableElementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lockTableElement

	return p
}

func (s *LockTableElementContext) GetParser() antlr.Parser { return s.parser }

func (s *LockTableElementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *LockTableElementContext) LockAction() ILockActionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILockActionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILockActionContext)
}

func (s *LockTableElementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *LockTableElementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *LockTableElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LockTableElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LockTableElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLockTableElement(s)
	}
}

func (s *LockTableElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLockTableElement(s)
	}
}

func (p *MySqlParser) LockTableElement() (localctx ILockTableElementContext) {
	this := p
	_ = this

	localctx = NewLockTableElementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 288, MySqlParserRULE_lockTableElement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3890)
		p.TableName()
	}
	p.SetState(3895)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-12)&-(0x1f+1)) == 0 && ((1<<uint((_la-12)))&((1<<(MySqlParserAS-12))|(1<<(MySqlParserCURRENT-12))|(1<<(MySqlParserDATABASE-12)))) != 0) || (((_la-46)&-(0x1f+1)) == 0 && ((1<<uint((_la-46)))&((1<<(MySqlParserDIAGNOSTICS-46))|(1<<(MySqlParserEXCEPT-46))|(1<<(MySqlParserGROUP-46)))) != 0) || (((_la-92)&-(0x1f+1)) == 0 && ((1<<uint((_la-92)))&((1<<(MySqlParserLEFT-92))|(1<<(MySqlParserNUMBER-92))|(1<<(MySqlParserORDER-92)))) != 0) || (((_la-140)&-(0x1f+1)) == 0 && ((1<<uint((_la-140)))&((1<<(MySqlParserRIGHT-140))|(1<<(MySqlParserSCHEMA-140))|(1<<(MySqlParserSTACKED-140)))) != 0) || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		p.SetState(3892)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(3891)
				p.Match(MySqlParserAS)
			}

		}
		{
			p.SetState(3894)
			p.Uid()
		}

	}
	{
		p.SetState(3897)
		p.LockAction()
	}

	return localctx
}

// ILockActionContext is an interface to support dynamic dispatch.
type ILockActionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLockActionContext differentiates from other interfaces.
	IsLockActionContext()
}

type LockActionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLockActionContext() *LockActionContext {
	var p = new(LockActionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lockAction
	return p
}

func (*LockActionContext) IsLockActionContext() {}

func NewLockActionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LockActionContext {
	var p = new(LockActionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lockAction

	return p
}

func (s *LockActionContext) GetParser() antlr.Parser { return s.parser }

func (s *LockActionContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *LockActionContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *LockActionContext) WRITE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWRITE, 0)
}

func (s *LockActionContext) LOW_PRIORITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOW_PRIORITY, 0)
}

func (s *LockActionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LockActionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LockActionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLockAction(s)
	}
}

func (s *LockActionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLockAction(s)
	}
}

func (p *MySqlParser) LockAction() (localctx ILockActionContext) {
	this := p
	_ = this

	localctx = NewLockActionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 290, MySqlParserRULE_lockAction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3907)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserREAD:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3899)
			p.Match(MySqlParserREAD)
		}
		p.SetState(3901)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLOCAL {
			{
				p.SetState(3900)
				p.Match(MySqlParserLOCAL)
			}

		}

	case MySqlParserLOW_PRIORITY, MySqlParserWRITE:
		p.EnterOuterAlt(localctx, 2)
		p.SetState(3904)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLOW_PRIORITY {
			{
				p.SetState(3903)
				p.Match(MySqlParserLOW_PRIORITY)
			}

		}
		{
			p.SetState(3906)
			p.Match(MySqlParserWRITE)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ITransactionOptionContext is an interface to support dynamic dispatch.
type ITransactionOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTransactionOptionContext differentiates from other interfaces.
	IsTransactionOptionContext()
}

type TransactionOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTransactionOptionContext() *TransactionOptionContext {
	var p = new(TransactionOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_transactionOption
	return p
}

func (*TransactionOptionContext) IsTransactionOptionContext() {}

func NewTransactionOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionOptionContext {
	var p = new(TransactionOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_transactionOption

	return p
}

func (s *TransactionOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *TransactionOptionContext) ISOLATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserISOLATION, 0)
}

func (s *TransactionOptionContext) LEVEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEVEL, 0)
}

func (s *TransactionOptionContext) TransactionLevel() ITransactionLevelContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITransactionLevelContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITransactionLevelContext)
}

func (s *TransactionOptionContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *TransactionOptionContext) WRITE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWRITE, 0)
}

func (s *TransactionOptionContext) ONLY() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLY, 0)
}

func (s *TransactionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TransactionOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TransactionOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTransactionOption(s)
	}
}

func (s *TransactionOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTransactionOption(s)
	}
}

func (p *MySqlParser) TransactionOption() (localctx ITransactionOptionContext) {
	this := p
	_ = this

	localctx = NewTransactionOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 292, MySqlParserRULE_transactionOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3916)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 568, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3909)
			p.Match(MySqlParserISOLATION)
		}
		{
			p.SetState(3910)
			p.Match(MySqlParserLEVEL)
		}
		{
			p.SetState(3911)
			p.TransactionLevel()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3912)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3913)
			p.Match(MySqlParserWRITE)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3914)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3915)
			p.Match(MySqlParserONLY)
		}

	}

	return localctx
}

// ITransactionLevelContext is an interface to support dynamic dispatch.
type ITransactionLevelContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTransactionLevelContext differentiates from other interfaces.
	IsTransactionLevelContext()
}

type TransactionLevelContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTransactionLevelContext() *TransactionLevelContext {
	var p = new(TransactionLevelContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_transactionLevel
	return p
}

func (*TransactionLevelContext) IsTransactionLevelContext() {}

func NewTransactionLevelContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionLevelContext {
	var p = new(TransactionLevelContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_transactionLevel

	return p
}

func (s *TransactionLevelContext) GetParser() antlr.Parser { return s.parser }

func (s *TransactionLevelContext) REPEATABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPEATABLE, 0)
}

func (s *TransactionLevelContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *TransactionLevelContext) COMMITTED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMITTED, 0)
}

func (s *TransactionLevelContext) UNCOMMITTED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNCOMMITTED, 0)
}

func (s *TransactionLevelContext) SERIALIZABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERIALIZABLE, 0)
}

func (s *TransactionLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TransactionLevelContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TransactionLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTransactionLevel(s)
	}
}

func (s *TransactionLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTransactionLevel(s)
	}
}

func (p *MySqlParser) TransactionLevel() (localctx ITransactionLevelContext) {
	this := p
	_ = this

	localctx = NewTransactionLevelContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 294, MySqlParserRULE_transactionLevel)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(3925)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 569, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(3918)
			p.Match(MySqlParserREPEATABLE)
		}
		{
			p.SetState(3919)
			p.Match(MySqlParserREAD)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(3920)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3921)
			p.Match(MySqlParserCOMMITTED)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(3922)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(3923)
			p.Match(MySqlParserUNCOMMITTED)
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(3924)
			p.Match(MySqlParserSERIALIZABLE)
		}

	}

	return localctx
}

// IChangeMasterContext is an interface to support dynamic dispatch.
type IChangeMasterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsChangeMasterContext differentiates from other interfaces.
	IsChangeMasterContext()
}

type ChangeMasterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyChangeMasterContext() *ChangeMasterContext {
	var p = new(ChangeMasterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_changeMaster
	return p
}

func (*ChangeMasterContext) IsChangeMasterContext() {}

func NewChangeMasterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ChangeMasterContext {
	var p = new(ChangeMasterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_changeMaster

	return p
}

func (s *ChangeMasterContext) GetParser() antlr.Parser { return s.parser }

func (s *ChangeMasterContext) CHANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANGE, 0)
}

func (s *ChangeMasterContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *ChangeMasterContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *ChangeMasterContext) AllMasterOption() []IMasterOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IMasterOptionContext)(nil)).Elem())
	var tst = make([]IMasterOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IMasterOptionContext)
		}
	}

	return tst
}

func (s *ChangeMasterContext) MasterOption(i int) IMasterOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMasterOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IMasterOptionContext)
}

func (s *ChangeMasterContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ChangeMasterContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ChangeMasterContext) ChannelOption() IChannelOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChannelOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChannelOptionContext)
}

func (s *ChangeMasterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ChangeMasterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ChangeMasterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterChangeMaster(s)
	}
}

func (s *ChangeMasterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitChangeMaster(s)
	}
}

func (p *MySqlParser) ChangeMaster() (localctx IChangeMasterContext) {
	this := p
	_ = this

	localctx = NewChangeMasterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 296, MySqlParserRULE_changeMaster)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3927)
		p.Match(MySqlParserCHANGE)
	}
	{
		p.SetState(3928)
		p.Match(MySqlParserMASTER)
	}
	{
		p.SetState(3929)
		p.Match(MySqlParserTO)
	}
	{
		p.SetState(3930)
		p.MasterOption()
	}
	p.SetState(3935)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3931)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3932)
			p.MasterOption()
		}

		p.SetState(3937)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(3939)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFOR {
		{
			p.SetState(3938)
			p.ChannelOption()
		}

	}

	return localctx
}

// IChangeReplicationFilterContext is an interface to support dynamic dispatch.
type IChangeReplicationFilterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsChangeReplicationFilterContext differentiates from other interfaces.
	IsChangeReplicationFilterContext()
}

type ChangeReplicationFilterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyChangeReplicationFilterContext() *ChangeReplicationFilterContext {
	var p = new(ChangeReplicationFilterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_changeReplicationFilter
	return p
}

func (*ChangeReplicationFilterContext) IsChangeReplicationFilterContext() {}

func NewChangeReplicationFilterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ChangeReplicationFilterContext {
	var p = new(ChangeReplicationFilterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_changeReplicationFilter

	return p
}

func (s *ChangeReplicationFilterContext) GetParser() antlr.Parser { return s.parser }

func (s *ChangeReplicationFilterContext) CHANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANGE, 0)
}

func (s *ChangeReplicationFilterContext) REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION, 0)
}

func (s *ChangeReplicationFilterContext) FILTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILTER, 0)
}

func (s *ChangeReplicationFilterContext) AllReplicationFilter() []IReplicationFilterContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IReplicationFilterContext)(nil)).Elem())
	var tst = make([]IReplicationFilterContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IReplicationFilterContext)
		}
	}

	return tst
}

func (s *ChangeReplicationFilterContext) ReplicationFilter(i int) IReplicationFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReplicationFilterContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IReplicationFilterContext)
}

func (s *ChangeReplicationFilterContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ChangeReplicationFilterContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ChangeReplicationFilterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ChangeReplicationFilterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ChangeReplicationFilterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterChangeReplicationFilter(s)
	}
}

func (s *ChangeReplicationFilterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitChangeReplicationFilter(s)
	}
}

func (p *MySqlParser) ChangeReplicationFilter() (localctx IChangeReplicationFilterContext) {
	this := p
	_ = this

	localctx = NewChangeReplicationFilterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 298, MySqlParserRULE_changeReplicationFilter)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3941)
		p.Match(MySqlParserCHANGE)
	}
	{
		p.SetState(3942)
		p.Match(MySqlParserREPLICATION)
	}
	{
		p.SetState(3943)
		p.Match(MySqlParserFILTER)
	}
	{
		p.SetState(3944)
		p.ReplicationFilter()
	}
	p.SetState(3949)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(3945)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(3946)
			p.ReplicationFilter()
		}

		p.SetState(3951)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IPurgeBinaryLogsContext is an interface to support dynamic dispatch.
type IPurgeBinaryLogsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPurgeFormat returns the purgeFormat token.
	GetPurgeFormat() antlr.Token

	// GetFileName returns the fileName token.
	GetFileName() antlr.Token

	// GetTimeValue returns the timeValue token.
	GetTimeValue() antlr.Token

	// SetPurgeFormat sets the purgeFormat token.
	SetPurgeFormat(antlr.Token)

	// SetFileName sets the fileName token.
	SetFileName(antlr.Token)

	// SetTimeValue sets the timeValue token.
	SetTimeValue(antlr.Token)

	// IsPurgeBinaryLogsContext differentiates from other interfaces.
	IsPurgeBinaryLogsContext()
}

type PurgeBinaryLogsContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	purgeFormat antlr.Token
	fileName    antlr.Token
	timeValue   antlr.Token
}

func NewEmptyPurgeBinaryLogsContext() *PurgeBinaryLogsContext {
	var p = new(PurgeBinaryLogsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_purgeBinaryLogs
	return p
}

func (*PurgeBinaryLogsContext) IsPurgeBinaryLogsContext() {}

func NewPurgeBinaryLogsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PurgeBinaryLogsContext {
	var p = new(PurgeBinaryLogsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_purgeBinaryLogs

	return p
}

func (s *PurgeBinaryLogsContext) GetParser() antlr.Parser { return s.parser }

func (s *PurgeBinaryLogsContext) GetPurgeFormat() antlr.Token { return s.purgeFormat }

func (s *PurgeBinaryLogsContext) GetFileName() antlr.Token { return s.fileName }

func (s *PurgeBinaryLogsContext) GetTimeValue() antlr.Token { return s.timeValue }

func (s *PurgeBinaryLogsContext) SetPurgeFormat(v antlr.Token) { s.purgeFormat = v }

func (s *PurgeBinaryLogsContext) SetFileName(v antlr.Token) { s.fileName = v }

func (s *PurgeBinaryLogsContext) SetTimeValue(v antlr.Token) { s.timeValue = v }

func (s *PurgeBinaryLogsContext) PURGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPURGE, 0)
}

func (s *PurgeBinaryLogsContext) LOGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGS, 0)
}

func (s *PurgeBinaryLogsContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *PurgeBinaryLogsContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *PurgeBinaryLogsContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *PurgeBinaryLogsContext) BEFORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEFORE, 0)
}

func (s *PurgeBinaryLogsContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PurgeBinaryLogsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PurgeBinaryLogsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PurgeBinaryLogsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPurgeBinaryLogs(s)
	}
}

func (s *PurgeBinaryLogsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPurgeBinaryLogs(s)
	}
}

func (p *MySqlParser) PurgeBinaryLogs() (localctx IPurgeBinaryLogsContext) {
	this := p
	_ = this

	localctx = NewPurgeBinaryLogsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 300, MySqlParserRULE_purgeBinaryLogs)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3952)
		p.Match(MySqlParserPURGE)
	}
	{
		p.SetState(3953)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*PurgeBinaryLogsContext).purgeFormat = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserBINARY || _la == MySqlParserMASTER) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*PurgeBinaryLogsContext).purgeFormat = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(3954)
		p.Match(MySqlParserLOGS)
	}
	p.SetState(3959)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserTO:
		{
			p.SetState(3955)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(3956)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PurgeBinaryLogsContext).fileName = _m
		}

	case MySqlParserBEFORE:
		{
			p.SetState(3957)
			p.Match(MySqlParserBEFORE)
		}
		{
			p.SetState(3958)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PurgeBinaryLogsContext).timeValue = _m
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IResetMasterContext is an interface to support dynamic dispatch.
type IResetMasterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsResetMasterContext differentiates from other interfaces.
	IsResetMasterContext()
}

type ResetMasterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyResetMasterContext() *ResetMasterContext {
	var p = new(ResetMasterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_resetMaster
	return p
}

func (*ResetMasterContext) IsResetMasterContext() {}

func NewResetMasterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResetMasterContext {
	var p = new(ResetMasterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_resetMaster

	return p
}

func (s *ResetMasterContext) GetParser() antlr.Parser { return s.parser }

func (s *ResetMasterContext) RESET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESET, 0)
}

func (s *ResetMasterContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *ResetMasterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ResetMasterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ResetMasterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterResetMaster(s)
	}
}

func (s *ResetMasterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitResetMaster(s)
	}
}

func (p *MySqlParser) ResetMaster() (localctx IResetMasterContext) {
	this := p
	_ = this

	localctx = NewResetMasterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 302, MySqlParserRULE_resetMaster)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3961)
		p.Match(MySqlParserRESET)
	}
	{
		p.SetState(3962)
		p.Match(MySqlParserMASTER)
	}

	return localctx
}

// IResetSlaveContext is an interface to support dynamic dispatch.
type IResetSlaveContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsResetSlaveContext differentiates from other interfaces.
	IsResetSlaveContext()
}

type ResetSlaveContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyResetSlaveContext() *ResetSlaveContext {
	var p = new(ResetSlaveContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_resetSlave
	return p
}

func (*ResetSlaveContext) IsResetSlaveContext() {}

func NewResetSlaveContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResetSlaveContext {
	var p = new(ResetSlaveContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_resetSlave

	return p
}

func (s *ResetSlaveContext) GetParser() antlr.Parser { return s.parser }

func (s *ResetSlaveContext) RESET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESET, 0)
}

func (s *ResetSlaveContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *ResetSlaveContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *ResetSlaveContext) ChannelOption() IChannelOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChannelOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChannelOptionContext)
}

func (s *ResetSlaveContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ResetSlaveContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ResetSlaveContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterResetSlave(s)
	}
}

func (s *ResetSlaveContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitResetSlave(s)
	}
}

func (p *MySqlParser) ResetSlave() (localctx IResetSlaveContext) {
	this := p
	_ = this

	localctx = NewResetSlaveContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 304, MySqlParserRULE_resetSlave)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3964)
		p.Match(MySqlParserRESET)
	}
	{
		p.SetState(3965)
		p.Match(MySqlParserSLAVE)
	}
	p.SetState(3967)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserALL {
		{
			p.SetState(3966)
			p.Match(MySqlParserALL)
		}

	}
	p.SetState(3970)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFOR {
		{
			p.SetState(3969)
			p.ChannelOption()
		}

	}

	return localctx
}

// IStartSlaveContext is an interface to support dynamic dispatch.
type IStartSlaveContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStartSlaveContext differentiates from other interfaces.
	IsStartSlaveContext()
}

type StartSlaveContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStartSlaveContext() *StartSlaveContext {
	var p = new(StartSlaveContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_startSlave
	return p
}

func (*StartSlaveContext) IsStartSlaveContext() {}

func NewStartSlaveContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StartSlaveContext {
	var p = new(StartSlaveContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_startSlave

	return p
}

func (s *StartSlaveContext) GetParser() antlr.Parser { return s.parser }

func (s *StartSlaveContext) START() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART, 0)
}

func (s *StartSlaveContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *StartSlaveContext) AllThreadType() []IThreadTypeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IThreadTypeContext)(nil)).Elem())
	var tst = make([]IThreadTypeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IThreadTypeContext)
		}
	}

	return tst
}

func (s *StartSlaveContext) ThreadType(i int) IThreadTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IThreadTypeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IThreadTypeContext)
}

func (s *StartSlaveContext) UNTIL() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNTIL, 0)
}

func (s *StartSlaveContext) UntilOption() IUntilOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUntilOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUntilOptionContext)
}

func (s *StartSlaveContext) AllConnectionOption() []IConnectionOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IConnectionOptionContext)(nil)).Elem())
	var tst = make([]IConnectionOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IConnectionOptionContext)
		}
	}

	return tst
}

func (s *StartSlaveContext) ConnectionOption(i int) IConnectionOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConnectionOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IConnectionOptionContext)
}

func (s *StartSlaveContext) ChannelOption() IChannelOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChannelOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChannelOptionContext)
}

func (s *StartSlaveContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *StartSlaveContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *StartSlaveContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StartSlaveContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StartSlaveContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStartSlave(s)
	}
}

func (s *StartSlaveContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStartSlave(s)
	}
}

func (p *MySqlParser) StartSlave() (localctx IStartSlaveContext) {
	this := p
	_ = this

	localctx = NewStartSlaveContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 306, MySqlParserRULE_startSlave)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3972)
		p.Match(MySqlParserSTART)
	}
	{
		p.SetState(3973)
		p.Match(MySqlParserSLAVE)
	}
	p.SetState(3982)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIO_THREAD || _la == MySqlParserSQL_THREAD {
		{
			p.SetState(3974)
			p.ThreadType()
		}
		p.SetState(3979)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(3975)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(3976)
				p.ThreadType()
			}

			p.SetState(3981)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}
	p.SetState(3986)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserUNTIL {
		{
			p.SetState(3984)
			p.Match(MySqlParserUNTIL)
		}
		{
			p.SetState(3985)
			p.UntilOption()
		}

	}
	p.SetState(3991)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserDEFAULT_AUTH || _la == MySqlParserPASSWORD || _la == MySqlParserPLUGIN_DIR || _la == MySqlParserUSER {
		{
			p.SetState(3988)
			p.ConnectionOption()
		}

		p.SetState(3993)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(3995)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFOR {
		{
			p.SetState(3994)
			p.ChannelOption()
		}

	}

	return localctx
}

// IStopSlaveContext is an interface to support dynamic dispatch.
type IStopSlaveContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStopSlaveContext differentiates from other interfaces.
	IsStopSlaveContext()
}

type StopSlaveContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStopSlaveContext() *StopSlaveContext {
	var p = new(StopSlaveContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_stopSlave
	return p
}

func (*StopSlaveContext) IsStopSlaveContext() {}

func NewStopSlaveContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StopSlaveContext {
	var p = new(StopSlaveContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_stopSlave

	return p
}

func (s *StopSlaveContext) GetParser() antlr.Parser { return s.parser }

func (s *StopSlaveContext) STOP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTOP, 0)
}

func (s *StopSlaveContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *StopSlaveContext) AllThreadType() []IThreadTypeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IThreadTypeContext)(nil)).Elem())
	var tst = make([]IThreadTypeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IThreadTypeContext)
		}
	}

	return tst
}

func (s *StopSlaveContext) ThreadType(i int) IThreadTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IThreadTypeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IThreadTypeContext)
}

func (s *StopSlaveContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *StopSlaveContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *StopSlaveContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StopSlaveContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StopSlaveContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStopSlave(s)
	}
}

func (s *StopSlaveContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStopSlave(s)
	}
}

func (p *MySqlParser) StopSlave() (localctx IStopSlaveContext) {
	this := p
	_ = this

	localctx = NewStopSlaveContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 308, MySqlParserRULE_stopSlave)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(3997)
		p.Match(MySqlParserSTOP)
	}
	{
		p.SetState(3998)
		p.Match(MySqlParserSLAVE)
	}
	p.SetState(4007)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIO_THREAD || _la == MySqlParserSQL_THREAD {
		{
			p.SetState(3999)
			p.ThreadType()
		}
		p.SetState(4004)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4000)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4001)
				p.ThreadType()
			}

			p.SetState(4006)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IStartGroupReplicationContext is an interface to support dynamic dispatch.
type IStartGroupReplicationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStartGroupReplicationContext differentiates from other interfaces.
	IsStartGroupReplicationContext()
}

type StartGroupReplicationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStartGroupReplicationContext() *StartGroupReplicationContext {
	var p = new(StartGroupReplicationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_startGroupReplication
	return p
}

func (*StartGroupReplicationContext) IsStartGroupReplicationContext() {}

func NewStartGroupReplicationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StartGroupReplicationContext {
	var p = new(StartGroupReplicationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_startGroupReplication

	return p
}

func (s *StartGroupReplicationContext) GetParser() antlr.Parser { return s.parser }

func (s *StartGroupReplicationContext) START() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART, 0)
}

func (s *StartGroupReplicationContext) GROUP_REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_REPLICATION, 0)
}

func (s *StartGroupReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StartGroupReplicationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StartGroupReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStartGroupReplication(s)
	}
}

func (s *StartGroupReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStartGroupReplication(s)
	}
}

func (p *MySqlParser) StartGroupReplication() (localctx IStartGroupReplicationContext) {
	this := p
	_ = this

	localctx = NewStartGroupReplicationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 310, MySqlParserRULE_startGroupReplication)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4009)
		p.Match(MySqlParserSTART)
	}
	{
		p.SetState(4010)
		p.Match(MySqlParserGROUP_REPLICATION)
	}

	return localctx
}

// IStopGroupReplicationContext is an interface to support dynamic dispatch.
type IStopGroupReplicationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStopGroupReplicationContext differentiates from other interfaces.
	IsStopGroupReplicationContext()
}

type StopGroupReplicationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStopGroupReplicationContext() *StopGroupReplicationContext {
	var p = new(StopGroupReplicationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_stopGroupReplication
	return p
}

func (*StopGroupReplicationContext) IsStopGroupReplicationContext() {}

func NewStopGroupReplicationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StopGroupReplicationContext {
	var p = new(StopGroupReplicationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_stopGroupReplication

	return p
}

func (s *StopGroupReplicationContext) GetParser() antlr.Parser { return s.parser }

func (s *StopGroupReplicationContext) STOP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTOP, 0)
}

func (s *StopGroupReplicationContext) GROUP_REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_REPLICATION, 0)
}

func (s *StopGroupReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StopGroupReplicationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StopGroupReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStopGroupReplication(s)
	}
}

func (s *StopGroupReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStopGroupReplication(s)
	}
}

func (p *MySqlParser) StopGroupReplication() (localctx IStopGroupReplicationContext) {
	this := p
	_ = this

	localctx = NewStopGroupReplicationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 312, MySqlParserRULE_stopGroupReplication)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4012)
		p.Match(MySqlParserSTOP)
	}
	{
		p.SetState(4013)
		p.Match(MySqlParserGROUP_REPLICATION)
	}

	return localctx
}

// IMasterOptionContext is an interface to support dynamic dispatch.
type IMasterOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsMasterOptionContext differentiates from other interfaces.
	IsMasterOptionContext()
}

type MasterOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyMasterOptionContext() *MasterOptionContext {
	var p = new(MasterOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_masterOption
	return p
}

func (*MasterOptionContext) IsMasterOptionContext() {}

func NewMasterOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MasterOptionContext {
	var p = new(MasterOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_masterOption

	return p
}

func (s *MasterOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *MasterOptionContext) CopyFrom(ctx *MasterOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *MasterOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type MasterStringOptionContext struct {
	*MasterOptionContext
}

func NewMasterStringOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterStringOptionContext {
	var p = new(MasterStringOptionContext)

	p.MasterOptionContext = NewEmptyMasterOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*MasterOptionContext))

	return p
}

func (s *MasterStringOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterStringOptionContext) StringMasterOption() IStringMasterOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringMasterOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringMasterOptionContext)
}

func (s *MasterStringOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *MasterStringOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *MasterStringOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterStringOption(s)
	}
}

func (s *MasterStringOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterStringOption(s)
	}
}

type MasterRealOptionContext struct {
	*MasterOptionContext
}

func NewMasterRealOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterRealOptionContext {
	var p = new(MasterRealOptionContext)

	p.MasterOptionContext = NewEmptyMasterOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*MasterOptionContext))

	return p
}

func (s *MasterRealOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterRealOptionContext) MASTER_HEARTBEAT_PERIOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_HEARTBEAT_PERIOD, 0)
}

func (s *MasterRealOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *MasterRealOptionContext) REAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAL_LITERAL, 0)
}

func (s *MasterRealOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterRealOption(s)
	}
}

func (s *MasterRealOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterRealOption(s)
	}
}

type MasterBoolOptionContext struct {
	*MasterOptionContext
	boolVal antlr.Token
}

func NewMasterBoolOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterBoolOptionContext {
	var p = new(MasterBoolOptionContext)

	p.MasterOptionContext = NewEmptyMasterOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*MasterOptionContext))

	return p
}

func (s *MasterBoolOptionContext) GetBoolVal() antlr.Token { return s.boolVal }

func (s *MasterBoolOptionContext) SetBoolVal(v antlr.Token) { s.boolVal = v }

func (s *MasterBoolOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterBoolOptionContext) BoolMasterOption() IBoolMasterOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBoolMasterOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBoolMasterOptionContext)
}

func (s *MasterBoolOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *MasterBoolOptionContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *MasterBoolOptionContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *MasterBoolOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterBoolOption(s)
	}
}

func (s *MasterBoolOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterBoolOption(s)
	}
}

type MasterUidListOptionContext struct {
	*MasterOptionContext
}

func NewMasterUidListOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterUidListOptionContext {
	var p = new(MasterUidListOptionContext)

	p.MasterOptionContext = NewEmptyMasterOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*MasterOptionContext))

	return p
}

func (s *MasterUidListOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterUidListOptionContext) IGNORE_SERVER_IDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE_SERVER_IDS, 0)
}

func (s *MasterUidListOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *MasterUidListOptionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *MasterUidListOptionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *MasterUidListOptionContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *MasterUidListOptionContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *MasterUidListOptionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *MasterUidListOptionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *MasterUidListOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterUidListOption(s)
	}
}

func (s *MasterUidListOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterUidListOption(s)
	}
}

type MasterDecimalOptionContext struct {
	*MasterOptionContext
}

func NewMasterDecimalOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterDecimalOptionContext {
	var p = new(MasterDecimalOptionContext)

	p.MasterOptionContext = NewEmptyMasterOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*MasterOptionContext))

	return p
}

func (s *MasterDecimalOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterDecimalOptionContext) DecimalMasterOption() IDecimalMasterOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalMasterOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalMasterOptionContext)
}

func (s *MasterDecimalOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *MasterDecimalOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *MasterDecimalOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterDecimalOption(s)
	}
}

func (s *MasterDecimalOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterDecimalOption(s)
	}
}

func (p *MySqlParser) MasterOption() (localctx IMasterOptionContext) {
	this := p
	_ = this

	localctx = NewMasterOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 314, MySqlParserRULE_masterOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4044)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserMASTER_BIND, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserRELAY_LOG_FILE:
		localctx = NewMasterStringOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4015)
			p.StringMasterOption()
		}
		{
			p.SetState(4016)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4017)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserRELAY_LOG_POS:
		localctx = NewMasterDecimalOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4019)
			p.DecimalMasterOption()
		}
		{
			p.SetState(4020)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4021)
			p.DecimalLiteral()
		}

	case MySqlParserMASTER_SSL_VERIFY_SERVER_CERT, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_SSL:
		localctx = NewMasterBoolOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4023)
			p.BoolMasterOption()
		}
		{
			p.SetState(4024)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4025)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*MasterBoolOptionContext).boolVal = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserZERO_DECIMAL || _la == MySqlParserONE_DECIMAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*MasterBoolOptionContext).boolVal = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserMASTER_HEARTBEAT_PERIOD:
		localctx = NewMasterRealOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4027)
			p.Match(MySqlParserMASTER_HEARTBEAT_PERIOD)
		}
		{
			p.SetState(4028)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4029)
			p.Match(MySqlParserREAL_LITERAL)
		}

	case MySqlParserIGNORE_SERVER_IDS:
		localctx = NewMasterUidListOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4030)
			p.Match(MySqlParserIGNORE_SERVER_IDS)
		}
		{
			p.SetState(4031)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4032)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(4041)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
			{
				p.SetState(4033)
				p.Uid()
			}
			p.SetState(4038)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(4034)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(4035)
					p.Uid()
				}

				p.SetState(4040)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		{
			p.SetState(4043)
			p.Match(MySqlParserRR_BRACKET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IStringMasterOptionContext is an interface to support dynamic dispatch.
type IStringMasterOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStringMasterOptionContext differentiates from other interfaces.
	IsStringMasterOptionContext()
}

type StringMasterOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStringMasterOptionContext() *StringMasterOptionContext {
	var p = new(StringMasterOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_stringMasterOption
	return p
}

func (*StringMasterOptionContext) IsStringMasterOptionContext() {}

func NewStringMasterOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StringMasterOptionContext {
	var p = new(StringMasterOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_stringMasterOption

	return p
}

func (s *StringMasterOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *StringMasterOptionContext) MASTER_BIND() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_BIND, 0)
}

func (s *StringMasterOptionContext) MASTER_HOST() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_HOST, 0)
}

func (s *StringMasterOptionContext) MASTER_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_USER, 0)
}

func (s *StringMasterOptionContext) MASTER_PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_PASSWORD, 0)
}

func (s *StringMasterOptionContext) MASTER_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_FILE, 0)
}

func (s *StringMasterOptionContext) RELAY_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_FILE, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CA() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CA, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CAPATH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CAPATH, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CERT, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CRL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CRL, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CRLPATH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CRLPATH, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_KEY, 0)
}

func (s *StringMasterOptionContext) MASTER_SSL_CIPHER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CIPHER, 0)
}

func (s *StringMasterOptionContext) MASTER_TLS_VERSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_TLS_VERSION, 0)
}

func (s *StringMasterOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StringMasterOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StringMasterOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStringMasterOption(s)
	}
}

func (s *StringMasterOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStringMasterOption(s)
	}
}

func (p *MySqlParser) StringMasterOption() (localctx IStringMasterOptionContext) {
	this := p
	_ = this

	localctx = NewStringMasterOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 316, MySqlParserRULE_stringMasterOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4046)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserMASTER_BIND || (((_la-460)&-(0x1f+1)) == 0 && ((1<<uint((_la-460)))&((1<<(MySqlParserMASTER_HOST-460))|(1<<(MySqlParserMASTER_LOG_FILE-460))|(1<<(MySqlParserMASTER_PASSWORD-460))|(1<<(MySqlParserMASTER_SSL_CA-460))|(1<<(MySqlParserMASTER_SSL_CAPATH-460))|(1<<(MySqlParserMASTER_SSL_CERT-460))|(1<<(MySqlParserMASTER_SSL_CIPHER-460))|(1<<(MySqlParserMASTER_SSL_CRL-460))|(1<<(MySqlParserMASTER_SSL_CRLPATH-460))|(1<<(MySqlParserMASTER_SSL_KEY-460))|(1<<(MySqlParserMASTER_TLS_VERSION-460))|(1<<(MySqlParserMASTER_USER-460)))) != 0) || _la == MySqlParserRELAY_LOG_FILE) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IDecimalMasterOptionContext is an interface to support dynamic dispatch.
type IDecimalMasterOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDecimalMasterOptionContext differentiates from other interfaces.
	IsDecimalMasterOptionContext()
}

type DecimalMasterOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDecimalMasterOptionContext() *DecimalMasterOptionContext {
	var p = new(DecimalMasterOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_decimalMasterOption
	return p
}

func (*DecimalMasterOptionContext) IsDecimalMasterOptionContext() {}

func NewDecimalMasterOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DecimalMasterOptionContext {
	var p = new(DecimalMasterOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_decimalMasterOption

	return p
}

func (s *DecimalMasterOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *DecimalMasterOptionContext) MASTER_PORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_PORT, 0)
}

func (s *DecimalMasterOptionContext) MASTER_CONNECT_RETRY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_CONNECT_RETRY, 0)
}

func (s *DecimalMasterOptionContext) MASTER_RETRY_COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_RETRY_COUNT, 0)
}

func (s *DecimalMasterOptionContext) MASTER_DELAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_DELAY, 0)
}

func (s *DecimalMasterOptionContext) MASTER_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_POS, 0)
}

func (s *DecimalMasterOptionContext) RELAY_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_POS, 0)
}

func (s *DecimalMasterOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DecimalMasterOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DecimalMasterOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDecimalMasterOption(s)
	}
}

func (s *DecimalMasterOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDecimalMasterOption(s)
	}
}

func (p *MySqlParser) DecimalMasterOption() (localctx IDecimalMasterOptionContext) {
	this := p
	_ = this

	localctx = NewDecimalMasterOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 318, MySqlParserRULE_decimalMasterOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4048)
		_la = p.GetTokenStream().LA(1)

		if !((((_la-457)&-(0x1f+1)) == 0 && ((1<<uint((_la-457)))&((1<<(MySqlParserMASTER_CONNECT_RETRY-457))|(1<<(MySqlParserMASTER_DELAY-457))|(1<<(MySqlParserMASTER_LOG_POS-457))|(1<<(MySqlParserMASTER_PORT-457))|(1<<(MySqlParserMASTER_RETRY_COUNT-457)))) != 0) || _la == MySqlParserRELAY_LOG_POS) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IBoolMasterOptionContext is an interface to support dynamic dispatch.
type IBoolMasterOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBoolMasterOptionContext differentiates from other interfaces.
	IsBoolMasterOptionContext()
}

type BoolMasterOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBoolMasterOptionContext() *BoolMasterOptionContext {
	var p = new(BoolMasterOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_boolMasterOption
	return p
}

func (*BoolMasterOptionContext) IsBoolMasterOptionContext() {}

func NewBoolMasterOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BoolMasterOptionContext {
	var p = new(BoolMasterOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_boolMasterOption

	return p
}

func (s *BoolMasterOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *BoolMasterOptionContext) MASTER_AUTO_POSITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_AUTO_POSITION, 0)
}

func (s *BoolMasterOptionContext) MASTER_SSL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL, 0)
}

func (s *BoolMasterOptionContext) MASTER_SSL_VERIFY_SERVER_CERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_VERIFY_SERVER_CERT, 0)
}

func (s *BoolMasterOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BoolMasterOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BoolMasterOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBoolMasterOption(s)
	}
}

func (s *BoolMasterOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBoolMasterOption(s)
	}
}

func (p *MySqlParser) BoolMasterOption() (localctx IBoolMasterOptionContext) {
	this := p
	_ = this

	localctx = NewBoolMasterOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 320, MySqlParserRULE_boolMasterOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4050)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserMASTER_SSL_VERIFY_SERVER_CERT || _la == MySqlParserMASTER_AUTO_POSITION || _la == MySqlParserMASTER_SSL) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IChannelOptionContext is an interface to support dynamic dispatch.
type IChannelOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsChannelOptionContext differentiates from other interfaces.
	IsChannelOptionContext()
}

type ChannelOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyChannelOptionContext() *ChannelOptionContext {
	var p = new(ChannelOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_channelOption
	return p
}

func (*ChannelOptionContext) IsChannelOptionContext() {}

func NewChannelOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ChannelOptionContext {
	var p = new(ChannelOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_channelOption

	return p
}

func (s *ChannelOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *ChannelOptionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *ChannelOptionContext) CHANNEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANNEL, 0)
}

func (s *ChannelOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *ChannelOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ChannelOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ChannelOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterChannelOption(s)
	}
}

func (s *ChannelOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitChannelOption(s)
	}
}

func (p *MySqlParser) ChannelOption() (localctx IChannelOptionContext) {
	this := p
	_ = this

	localctx = NewChannelOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 322, MySqlParserRULE_channelOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4052)
		p.Match(MySqlParserFOR)
	}
	{
		p.SetState(4053)
		p.Match(MySqlParserCHANNEL)
	}
	{
		p.SetState(4054)
		p.Match(MySqlParserSTRING_LITERAL)
	}

	return localctx
}

// IReplicationFilterContext is an interface to support dynamic dispatch.
type IReplicationFilterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsReplicationFilterContext differentiates from other interfaces.
	IsReplicationFilterContext()
}

type ReplicationFilterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyReplicationFilterContext() *ReplicationFilterContext {
	var p = new(ReplicationFilterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_replicationFilter
	return p
}

func (*ReplicationFilterContext) IsReplicationFilterContext() {}

func NewReplicationFilterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReplicationFilterContext {
	var p = new(ReplicationFilterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_replicationFilter

	return p
}

func (s *ReplicationFilterContext) GetParser() antlr.Parser { return s.parser }

func (s *ReplicationFilterContext) CopyFrom(ctx *ReplicationFilterContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ReplicationFilterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReplicationFilterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type WildIgnoreTableReplicationContext struct {
	*ReplicationFilterContext
}

func NewWildIgnoreTableReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *WildIgnoreTableReplicationContext {
	var p = new(WildIgnoreTableReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *WildIgnoreTableReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WildIgnoreTableReplicationContext) REPLICATE_WILD_IGNORE_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_WILD_IGNORE_TABLE, 0)
}

func (s *WildIgnoreTableReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *WildIgnoreTableReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *WildIgnoreTableReplicationContext) SimpleStrings() ISimpleStringsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleStringsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleStringsContext)
}

func (s *WildIgnoreTableReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *WildIgnoreTableReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWildIgnoreTableReplication(s)
	}
}

func (s *WildIgnoreTableReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWildIgnoreTableReplication(s)
	}
}

type DoTableReplicationContext struct {
	*ReplicationFilterContext
}

func NewDoTableReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DoTableReplicationContext {
	var p = new(DoTableReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *DoTableReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DoTableReplicationContext) REPLICATE_DO_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_DO_TABLE, 0)
}

func (s *DoTableReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *DoTableReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *DoTableReplicationContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *DoTableReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *DoTableReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDoTableReplication(s)
	}
}

func (s *DoTableReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDoTableReplication(s)
	}
}

type IgnoreTableReplicationContext struct {
	*ReplicationFilterContext
}

func NewIgnoreTableReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IgnoreTableReplicationContext {
	var p = new(IgnoreTableReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *IgnoreTableReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IgnoreTableReplicationContext) REPLICATE_IGNORE_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_IGNORE_TABLE, 0)
}

func (s *IgnoreTableReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *IgnoreTableReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *IgnoreTableReplicationContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *IgnoreTableReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *IgnoreTableReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIgnoreTableReplication(s)
	}
}

func (s *IgnoreTableReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIgnoreTableReplication(s)
	}
}

type RewriteDbReplicationContext struct {
	*ReplicationFilterContext
}

func NewRewriteDbReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RewriteDbReplicationContext {
	var p = new(RewriteDbReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *RewriteDbReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RewriteDbReplicationContext) REPLICATE_REWRITE_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_REWRITE_DB, 0)
}

func (s *RewriteDbReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *RewriteDbReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *RewriteDbReplicationContext) AllTablePair() []ITablePairContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITablePairContext)(nil)).Elem())
	var tst = make([]ITablePairContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITablePairContext)
		}
	}

	return tst
}

func (s *RewriteDbReplicationContext) TablePair(i int) ITablePairContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablePairContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITablePairContext)
}

func (s *RewriteDbReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *RewriteDbReplicationContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RewriteDbReplicationContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RewriteDbReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRewriteDbReplication(s)
	}
}

func (s *RewriteDbReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRewriteDbReplication(s)
	}
}

type DoDbReplicationContext struct {
	*ReplicationFilterContext
}

func NewDoDbReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DoDbReplicationContext {
	var p = new(DoDbReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *DoDbReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DoDbReplicationContext) REPLICATE_DO_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_DO_DB, 0)
}

func (s *DoDbReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *DoDbReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *DoDbReplicationContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *DoDbReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *DoDbReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDoDbReplication(s)
	}
}

func (s *DoDbReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDoDbReplication(s)
	}
}

type IgnoreDbReplicationContext struct {
	*ReplicationFilterContext
}

func NewIgnoreDbReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IgnoreDbReplicationContext {
	var p = new(IgnoreDbReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *IgnoreDbReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IgnoreDbReplicationContext) REPLICATE_IGNORE_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_IGNORE_DB, 0)
}

func (s *IgnoreDbReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *IgnoreDbReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *IgnoreDbReplicationContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *IgnoreDbReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *IgnoreDbReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIgnoreDbReplication(s)
	}
}

func (s *IgnoreDbReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIgnoreDbReplication(s)
	}
}

type WildDoTableReplicationContext struct {
	*ReplicationFilterContext
}

func NewWildDoTableReplicationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *WildDoTableReplicationContext {
	var p = new(WildDoTableReplicationContext)

	p.ReplicationFilterContext = NewEmptyReplicationFilterContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ReplicationFilterContext))

	return p
}

func (s *WildDoTableReplicationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WildDoTableReplicationContext) REPLICATE_WILD_DO_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_WILD_DO_TABLE, 0)
}

func (s *WildDoTableReplicationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *WildDoTableReplicationContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *WildDoTableReplicationContext) SimpleStrings() ISimpleStringsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleStringsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleStringsContext)
}

func (s *WildDoTableReplicationContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *WildDoTableReplicationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWildDoTableReplication(s)
	}
}

func (s *WildDoTableReplicationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWildDoTableReplication(s)
	}
}

func (p *MySqlParser) ReplicationFilter() (localctx IReplicationFilterContext) {
	this := p
	_ = this

	localctx = NewReplicationFilterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 324, MySqlParserRULE_replicationFilter)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4105)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserREPLICATE_DO_DB:
		localctx = NewDoDbReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4056)
			p.Match(MySqlParserREPLICATE_DO_DB)
		}
		{
			p.SetState(4057)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4058)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4059)
			p.UidList()
		}
		{
			p.SetState(4060)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_IGNORE_DB:
		localctx = NewIgnoreDbReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4062)
			p.Match(MySqlParserREPLICATE_IGNORE_DB)
		}
		{
			p.SetState(4063)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4064)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4065)
			p.UidList()
		}
		{
			p.SetState(4066)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_DO_TABLE:
		localctx = NewDoTableReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4068)
			p.Match(MySqlParserREPLICATE_DO_TABLE)
		}
		{
			p.SetState(4069)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4070)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4071)
			p.Tables()
		}
		{
			p.SetState(4072)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_IGNORE_TABLE:
		localctx = NewIgnoreTableReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4074)
			p.Match(MySqlParserREPLICATE_IGNORE_TABLE)
		}
		{
			p.SetState(4075)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4076)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4077)
			p.Tables()
		}
		{
			p.SetState(4078)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_WILD_DO_TABLE:
		localctx = NewWildDoTableReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4080)
			p.Match(MySqlParserREPLICATE_WILD_DO_TABLE)
		}
		{
			p.SetState(4081)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4082)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4083)
			p.SimpleStrings()
		}
		{
			p.SetState(4084)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_WILD_IGNORE_TABLE:
		localctx = NewWildIgnoreTableReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(4086)
			p.Match(MySqlParserREPLICATE_WILD_IGNORE_TABLE)
		}
		{
			p.SetState(4087)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4088)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4089)
			p.SimpleStrings()
		}
		{
			p.SetState(4090)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserREPLICATE_REWRITE_DB:
		localctx = NewRewriteDbReplicationContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(4092)
			p.Match(MySqlParserREPLICATE_REWRITE_DB)
		}
		{
			p.SetState(4093)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4094)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4095)
			p.TablePair()
		}
		p.SetState(4100)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4096)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4097)
				p.TablePair()
			}

			p.SetState(4102)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(4103)
			p.Match(MySqlParserRR_BRACKET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ITablePairContext is an interface to support dynamic dispatch.
type ITablePairContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetFirstTable returns the firstTable rule contexts.
	GetFirstTable() ITableNameContext

	// GetSecondTable returns the secondTable rule contexts.
	GetSecondTable() ITableNameContext

	// SetFirstTable sets the firstTable rule contexts.
	SetFirstTable(ITableNameContext)

	// SetSecondTable sets the secondTable rule contexts.
	SetSecondTable(ITableNameContext)

	// IsTablePairContext differentiates from other interfaces.
	IsTablePairContext()
}

type TablePairContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	firstTable  ITableNameContext
	secondTable ITableNameContext
}

func NewEmptyTablePairContext() *TablePairContext {
	var p = new(TablePairContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tablePair
	return p
}

func (*TablePairContext) IsTablePairContext() {}

func NewTablePairContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TablePairContext {
	var p = new(TablePairContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tablePair

	return p
}

func (s *TablePairContext) GetParser() antlr.Parser { return s.parser }

func (s *TablePairContext) GetFirstTable() ITableNameContext { return s.firstTable }

func (s *TablePairContext) GetSecondTable() ITableNameContext { return s.secondTable }

func (s *TablePairContext) SetFirstTable(v ITableNameContext) { s.firstTable = v }

func (s *TablePairContext) SetSecondTable(v ITableNameContext) { s.secondTable = v }

func (s *TablePairContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TablePairContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *TablePairContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TablePairContext) AllTableName() []ITableNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableNameContext)(nil)).Elem())
	var tst = make([]ITableNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableNameContext)
		}
	}

	return tst
}

func (s *TablePairContext) TableName(i int) ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *TablePairContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TablePairContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TablePairContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTablePair(s)
	}
}

func (s *TablePairContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTablePair(s)
	}
}

func (p *MySqlParser) TablePair() (localctx ITablePairContext) {
	this := p
	_ = this

	localctx = NewTablePairContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 326, MySqlParserRULE_tablePair)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4107)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(4108)

		var _x = p.TableName()

		localctx.(*TablePairContext).firstTable = _x
	}
	{
		p.SetState(4109)
		p.Match(MySqlParserCOMMA)
	}
	{
		p.SetState(4110)

		var _x = p.TableName()

		localctx.(*TablePairContext).secondTable = _x
	}
	{
		p.SetState(4111)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IThreadTypeContext is an interface to support dynamic dispatch.
type IThreadTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsThreadTypeContext differentiates from other interfaces.
	IsThreadTypeContext()
}

type ThreadTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyThreadTypeContext() *ThreadTypeContext {
	var p = new(ThreadTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_threadType
	return p
}

func (*ThreadTypeContext) IsThreadTypeContext() {}

func NewThreadTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ThreadTypeContext {
	var p = new(ThreadTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_threadType

	return p
}

func (s *ThreadTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *ThreadTypeContext) IO_THREAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserIO_THREAD, 0)
}

func (s *ThreadTypeContext) SQL_THREAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_THREAD, 0)
}

func (s *ThreadTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ThreadTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ThreadTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterThreadType(s)
	}
}

func (s *ThreadTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitThreadType(s)
	}
}

func (p *MySqlParser) ThreadType() (localctx IThreadTypeContext) {
	this := p
	_ = this

	localctx = NewThreadTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 328, MySqlParserRULE_threadType)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4113)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserIO_THREAD || _la == MySqlParserSQL_THREAD) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IUntilOptionContext is an interface to support dynamic dispatch.
type IUntilOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUntilOptionContext differentiates from other interfaces.
	IsUntilOptionContext()
}

type UntilOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUntilOptionContext() *UntilOptionContext {
	var p = new(UntilOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_untilOption
	return p
}

func (*UntilOptionContext) IsUntilOptionContext() {}

func NewUntilOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UntilOptionContext {
	var p = new(UntilOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_untilOption

	return p
}

func (s *UntilOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *UntilOptionContext) CopyFrom(ctx *UntilOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *UntilOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UntilOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type GtidsUntilOptionContext struct {
	*UntilOptionContext
	gtids antlr.Token
}

func NewGtidsUntilOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *GtidsUntilOptionContext {
	var p = new(GtidsUntilOptionContext)

	p.UntilOptionContext = NewEmptyUntilOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UntilOptionContext))

	return p
}

func (s *GtidsUntilOptionContext) GetGtids() antlr.Token { return s.gtids }

func (s *GtidsUntilOptionContext) SetGtids(v antlr.Token) { s.gtids = v }

func (s *GtidsUntilOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GtidsUntilOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *GtidsUntilOptionContext) GtuidSet() IGtuidSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IGtuidSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IGtuidSetContext)
}

func (s *GtidsUntilOptionContext) SQL_BEFORE_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_BEFORE_GTIDS, 0)
}

func (s *GtidsUntilOptionContext) SQL_AFTER_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_AFTER_GTIDS, 0)
}

func (s *GtidsUntilOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGtidsUntilOption(s)
	}
}

func (s *GtidsUntilOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGtidsUntilOption(s)
	}
}

type SqlGapsUntilOptionContext struct {
	*UntilOptionContext
}

func NewSqlGapsUntilOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SqlGapsUntilOptionContext {
	var p = new(SqlGapsUntilOptionContext)

	p.UntilOptionContext = NewEmptyUntilOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UntilOptionContext))

	return p
}

func (s *SqlGapsUntilOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SqlGapsUntilOptionContext) SQL_AFTER_MTS_GAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_AFTER_MTS_GAPS, 0)
}

func (s *SqlGapsUntilOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSqlGapsUntilOption(s)
	}
}

func (s *SqlGapsUntilOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSqlGapsUntilOption(s)
	}
}

type MasterLogUntilOptionContext struct {
	*UntilOptionContext
}

func NewMasterLogUntilOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MasterLogUntilOptionContext {
	var p = new(MasterLogUntilOptionContext)

	p.UntilOptionContext = NewEmptyUntilOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UntilOptionContext))

	return p
}

func (s *MasterLogUntilOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MasterLogUntilOptionContext) MASTER_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_FILE, 0)
}

func (s *MasterLogUntilOptionContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *MasterLogUntilOptionContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *MasterLogUntilOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *MasterLogUntilOptionContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *MasterLogUntilOptionContext) MASTER_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_POS, 0)
}

func (s *MasterLogUntilOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *MasterLogUntilOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMasterLogUntilOption(s)
	}
}

func (s *MasterLogUntilOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMasterLogUntilOption(s)
	}
}

type RelayLogUntilOptionContext struct {
	*UntilOptionContext
}

func NewRelayLogUntilOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RelayLogUntilOptionContext {
	var p = new(RelayLogUntilOptionContext)

	p.UntilOptionContext = NewEmptyUntilOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UntilOptionContext))

	return p
}

func (s *RelayLogUntilOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RelayLogUntilOptionContext) RELAY_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_FILE, 0)
}

func (s *RelayLogUntilOptionContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *RelayLogUntilOptionContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *RelayLogUntilOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *RelayLogUntilOptionContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *RelayLogUntilOptionContext) RELAY_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_POS, 0)
}

func (s *RelayLogUntilOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *RelayLogUntilOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRelayLogUntilOption(s)
	}
}

func (s *RelayLogUntilOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRelayLogUntilOption(s)
	}
}

func (p *MySqlParser) UntilOption() (localctx IUntilOptionContext) {
	this := p
	_ = this

	localctx = NewUntilOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 330, MySqlParserRULE_untilOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4133)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_BEFORE_GTIDS:
		localctx = NewGtidsUntilOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4115)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*GtidsUntilOptionContext).gtids = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSQL_AFTER_GTIDS || _la == MySqlParserSQL_BEFORE_GTIDS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*GtidsUntilOptionContext).gtids = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(4116)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4117)
			p.GtuidSet()
		}

	case MySqlParserMASTER_LOG_FILE:
		localctx = NewMasterLogUntilOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4118)
			p.Match(MySqlParserMASTER_LOG_FILE)
		}
		{
			p.SetState(4119)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4120)
			p.Match(MySqlParserSTRING_LITERAL)
		}
		{
			p.SetState(4121)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4122)
			p.Match(MySqlParserMASTER_LOG_POS)
		}
		{
			p.SetState(4123)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4124)
			p.DecimalLiteral()
		}

	case MySqlParserRELAY_LOG_FILE:
		localctx = NewRelayLogUntilOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4125)
			p.Match(MySqlParserRELAY_LOG_FILE)
		}
		{
			p.SetState(4126)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4127)
			p.Match(MySqlParserSTRING_LITERAL)
		}
		{
			p.SetState(4128)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4129)
			p.Match(MySqlParserRELAY_LOG_POS)
		}
		{
			p.SetState(4130)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4131)
			p.DecimalLiteral()
		}

	case MySqlParserSQL_AFTER_MTS_GAPS:
		localctx = NewSqlGapsUntilOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4132)
			p.Match(MySqlParserSQL_AFTER_MTS_GAPS)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IConnectionOptionContext is an interface to support dynamic dispatch.
type IConnectionOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsConnectionOptionContext differentiates from other interfaces.
	IsConnectionOptionContext()
}

type ConnectionOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyConnectionOptionContext() *ConnectionOptionContext {
	var p = new(ConnectionOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_connectionOption
	return p
}

func (*ConnectionOptionContext) IsConnectionOptionContext() {}

func NewConnectionOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConnectionOptionContext {
	var p = new(ConnectionOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_connectionOption

	return p
}

func (s *ConnectionOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *ConnectionOptionContext) CopyFrom(ctx *ConnectionOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ConnectionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConnectionOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PluginDirConnectionOptionContext struct {
	*ConnectionOptionContext
	conOptPluginDir antlr.Token
}

func NewPluginDirConnectionOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PluginDirConnectionOptionContext {
	var p = new(PluginDirConnectionOptionContext)

	p.ConnectionOptionContext = NewEmptyConnectionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ConnectionOptionContext))

	return p
}

func (s *PluginDirConnectionOptionContext) GetConOptPluginDir() antlr.Token { return s.conOptPluginDir }

func (s *PluginDirConnectionOptionContext) SetConOptPluginDir(v antlr.Token) { s.conOptPluginDir = v }

func (s *PluginDirConnectionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PluginDirConnectionOptionContext) PLUGIN_DIR() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGIN_DIR, 0)
}

func (s *PluginDirConnectionOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PluginDirConnectionOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PluginDirConnectionOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPluginDirConnectionOption(s)
	}
}

func (s *PluginDirConnectionOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPluginDirConnectionOption(s)
	}
}

type UserConnectionOptionContext struct {
	*ConnectionOptionContext
	conOptUser antlr.Token
}

func NewUserConnectionOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UserConnectionOptionContext {
	var p = new(UserConnectionOptionContext)

	p.ConnectionOptionContext = NewEmptyConnectionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ConnectionOptionContext))

	return p
}

func (s *UserConnectionOptionContext) GetConOptUser() antlr.Token { return s.conOptUser }

func (s *UserConnectionOptionContext) SetConOptUser(v antlr.Token) { s.conOptUser = v }

func (s *UserConnectionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserConnectionOptionContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *UserConnectionOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *UserConnectionOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *UserConnectionOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserConnectionOption(s)
	}
}

func (s *UserConnectionOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserConnectionOption(s)
	}
}

type DefaultAuthConnectionOptionContext struct {
	*ConnectionOptionContext
	conOptDefAuth antlr.Token
}

func NewDefaultAuthConnectionOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefaultAuthConnectionOptionContext {
	var p = new(DefaultAuthConnectionOptionContext)

	p.ConnectionOptionContext = NewEmptyConnectionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ConnectionOptionContext))

	return p
}

func (s *DefaultAuthConnectionOptionContext) GetConOptDefAuth() antlr.Token { return s.conOptDefAuth }

func (s *DefaultAuthConnectionOptionContext) SetConOptDefAuth(v antlr.Token) { s.conOptDefAuth = v }

func (s *DefaultAuthConnectionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefaultAuthConnectionOptionContext) DEFAULT_AUTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT_AUTH, 0)
}

func (s *DefaultAuthConnectionOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *DefaultAuthConnectionOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *DefaultAuthConnectionOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefaultAuthConnectionOption(s)
	}
}

func (s *DefaultAuthConnectionOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefaultAuthConnectionOption(s)
	}
}

type PasswordConnectionOptionContext struct {
	*ConnectionOptionContext
	conOptPassword antlr.Token
}

func NewPasswordConnectionOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PasswordConnectionOptionContext {
	var p = new(PasswordConnectionOptionContext)

	p.ConnectionOptionContext = NewEmptyConnectionOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ConnectionOptionContext))

	return p
}

func (s *PasswordConnectionOptionContext) GetConOptPassword() antlr.Token { return s.conOptPassword }

func (s *PasswordConnectionOptionContext) SetConOptPassword(v antlr.Token) { s.conOptPassword = v }

func (s *PasswordConnectionOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PasswordConnectionOptionContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *PasswordConnectionOptionContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *PasswordConnectionOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PasswordConnectionOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPasswordConnectionOption(s)
	}
}

func (s *PasswordConnectionOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPasswordConnectionOption(s)
	}
}

func (p *MySqlParser) ConnectionOption() (localctx IConnectionOptionContext) {
	this := p
	_ = this

	localctx = NewConnectionOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 332, MySqlParserRULE_connectionOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4147)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserUSER:
		localctx = NewUserConnectionOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4135)
			p.Match(MySqlParserUSER)
		}
		{
			p.SetState(4136)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4137)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*UserConnectionOptionContext).conOptUser = _m
		}

	case MySqlParserPASSWORD:
		localctx = NewPasswordConnectionOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4138)
			p.Match(MySqlParserPASSWORD)
		}
		{
			p.SetState(4139)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4140)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PasswordConnectionOptionContext).conOptPassword = _m
		}

	case MySqlParserDEFAULT_AUTH:
		localctx = NewDefaultAuthConnectionOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4141)
			p.Match(MySqlParserDEFAULT_AUTH)
		}
		{
			p.SetState(4142)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4143)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*DefaultAuthConnectionOptionContext).conOptDefAuth = _m
		}

	case MySqlParserPLUGIN_DIR:
		localctx = NewPluginDirConnectionOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4144)
			p.Match(MySqlParserPLUGIN_DIR)
		}
		{
			p.SetState(4145)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(4146)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PluginDirConnectionOptionContext).conOptPluginDir = _m
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IGtuidSetContext is an interface to support dynamic dispatch.
type IGtuidSetContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsGtuidSetContext differentiates from other interfaces.
	IsGtuidSetContext()
}

type GtuidSetContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyGtuidSetContext() *GtuidSetContext {
	var p = new(GtuidSetContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_gtuidSet
	return p
}

func (*GtuidSetContext) IsGtuidSetContext() {}

func NewGtuidSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GtuidSetContext {
	var p = new(GtuidSetContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_gtuidSet

	return p
}

func (s *GtuidSetContext) GetParser() antlr.Parser { return s.parser }

func (s *GtuidSetContext) AllUuidSet() []IUuidSetContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUuidSetContext)(nil)).Elem())
	var tst = make([]IUuidSetContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUuidSetContext)
		}
	}

	return tst
}

func (s *GtuidSetContext) UuidSet(i int) IUuidSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUuidSetContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUuidSetContext)
}

func (s *GtuidSetContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *GtuidSetContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *GtuidSetContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *GtuidSetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GtuidSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *GtuidSetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGtuidSet(s)
	}
}

func (s *GtuidSetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGtuidSet(s)
	}
}

func (p *MySqlParser) GtuidSet() (localctx IGtuidSetContext) {
	this := p
	_ = this

	localctx = NewGtuidSetContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 334, MySqlParserRULE_gtuidSet)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4158)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4149)
			p.UuidSet()
		}
		p.SetState(4154)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4150)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4151)
				p.UuidSet()
			}

			p.SetState(4156)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case MySqlParserSTRING_LITERAL:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4157)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IXaStartTransactionContext is an interface to support dynamic dispatch.
type IXaStartTransactionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetXaStart returns the xaStart token.
	GetXaStart() antlr.Token

	// GetXaAction returns the xaAction token.
	GetXaAction() antlr.Token

	// SetXaStart sets the xaStart token.
	SetXaStart(antlr.Token)

	// SetXaAction sets the xaAction token.
	SetXaAction(antlr.Token)

	// IsXaStartTransactionContext differentiates from other interfaces.
	IsXaStartTransactionContext()
}

type XaStartTransactionContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	xaStart  antlr.Token
	xaAction antlr.Token
}

func NewEmptyXaStartTransactionContext() *XaStartTransactionContext {
	var p = new(XaStartTransactionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaStartTransaction
	return p
}

func (*XaStartTransactionContext) IsXaStartTransactionContext() {}

func NewXaStartTransactionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaStartTransactionContext {
	var p = new(XaStartTransactionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaStartTransaction

	return p
}

func (s *XaStartTransactionContext) GetParser() antlr.Parser { return s.parser }

func (s *XaStartTransactionContext) GetXaStart() antlr.Token { return s.xaStart }

func (s *XaStartTransactionContext) GetXaAction() antlr.Token { return s.xaAction }

func (s *XaStartTransactionContext) SetXaStart(v antlr.Token) { s.xaStart = v }

func (s *XaStartTransactionContext) SetXaAction(v antlr.Token) { s.xaAction = v }

func (s *XaStartTransactionContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaStartTransactionContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaStartTransactionContext) START() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART, 0)
}

func (s *XaStartTransactionContext) BEGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEGIN, 0)
}

func (s *XaStartTransactionContext) JOIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserJOIN, 0)
}

func (s *XaStartTransactionContext) RESUME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESUME, 0)
}

func (s *XaStartTransactionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaStartTransactionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaStartTransactionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaStartTransaction(s)
	}
}

func (s *XaStartTransactionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaStartTransaction(s)
	}
}

func (p *MySqlParser) XaStartTransaction() (localctx IXaStartTransactionContext) {
	this := p
	_ = this

	localctx = NewXaStartTransactionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 336, MySqlParserRULE_xaStartTransaction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4160)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4161)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*XaStartTransactionContext).xaStart = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserBEGIN || _la == MySqlParserSTART) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*XaStartTransactionContext).xaStart = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(4162)
		p.Xid()
	}
	p.SetState(4164)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserJOIN || _la == MySqlParserRESUME {
		{
			p.SetState(4163)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*XaStartTransactionContext).xaAction = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserJOIN || _la == MySqlParserRESUME) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*XaStartTransactionContext).xaAction = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IXaEndTransactionContext is an interface to support dynamic dispatch.
type IXaEndTransactionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXaEndTransactionContext differentiates from other interfaces.
	IsXaEndTransactionContext()
}

type XaEndTransactionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXaEndTransactionContext() *XaEndTransactionContext {
	var p = new(XaEndTransactionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaEndTransaction
	return p
}

func (*XaEndTransactionContext) IsXaEndTransactionContext() {}

func NewXaEndTransactionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaEndTransactionContext {
	var p = new(XaEndTransactionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaEndTransaction

	return p
}

func (s *XaEndTransactionContext) GetParser() antlr.Parser { return s.parser }

func (s *XaEndTransactionContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaEndTransactionContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *XaEndTransactionContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaEndTransactionContext) SUSPEND() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUSPEND, 0)
}

func (s *XaEndTransactionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *XaEndTransactionContext) MIGRATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIGRATE, 0)
}

func (s *XaEndTransactionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaEndTransactionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaEndTransactionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaEndTransaction(s)
	}
}

func (s *XaEndTransactionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaEndTransaction(s)
	}
}

func (p *MySqlParser) XaEndTransaction() (localctx IXaEndTransactionContext) {
	this := p
	_ = this

	localctx = NewXaEndTransactionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 338, MySqlParserRULE_xaEndTransaction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4166)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4167)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4168)
		p.Xid()
	}
	p.SetState(4174)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserSUSPEND {
		{
			p.SetState(4169)
			p.Match(MySqlParserSUSPEND)
		}
		p.SetState(4172)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(4170)
				p.Match(MySqlParserFOR)
			}
			{
				p.SetState(4171)
				p.Match(MySqlParserMIGRATE)
			}

		}

	}

	return localctx
}

// IXaPrepareStatementContext is an interface to support dynamic dispatch.
type IXaPrepareStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXaPrepareStatementContext differentiates from other interfaces.
	IsXaPrepareStatementContext()
}

type XaPrepareStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXaPrepareStatementContext() *XaPrepareStatementContext {
	var p = new(XaPrepareStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaPrepareStatement
	return p
}

func (*XaPrepareStatementContext) IsXaPrepareStatementContext() {}

func NewXaPrepareStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaPrepareStatementContext {
	var p = new(XaPrepareStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaPrepareStatement

	return p
}

func (s *XaPrepareStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *XaPrepareStatementContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaPrepareStatementContext) PREPARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREPARE, 0)
}

func (s *XaPrepareStatementContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaPrepareStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaPrepareStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaPrepareStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaPrepareStatement(s)
	}
}

func (s *XaPrepareStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaPrepareStatement(s)
	}
}

func (p *MySqlParser) XaPrepareStatement() (localctx IXaPrepareStatementContext) {
	this := p
	_ = this

	localctx = NewXaPrepareStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 340, MySqlParserRULE_xaPrepareStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4176)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4177)
		p.Match(MySqlParserPREPARE)
	}
	{
		p.SetState(4178)
		p.Xid()
	}

	return localctx
}

// IXaCommitWorkContext is an interface to support dynamic dispatch.
type IXaCommitWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXaCommitWorkContext differentiates from other interfaces.
	IsXaCommitWorkContext()
}

type XaCommitWorkContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXaCommitWorkContext() *XaCommitWorkContext {
	var p = new(XaCommitWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaCommitWork
	return p
}

func (*XaCommitWorkContext) IsXaCommitWorkContext() {}

func NewXaCommitWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaCommitWorkContext {
	var p = new(XaCommitWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaCommitWork

	return p
}

func (s *XaCommitWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *XaCommitWorkContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaCommitWorkContext) COMMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMIT, 0)
}

func (s *XaCommitWorkContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaCommitWorkContext) ONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE, 0)
}

func (s *XaCommitWorkContext) PHASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPHASE, 0)
}

func (s *XaCommitWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaCommitWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaCommitWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaCommitWork(s)
	}
}

func (s *XaCommitWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaCommitWork(s)
	}
}

func (p *MySqlParser) XaCommitWork() (localctx IXaCommitWorkContext) {
	this := p
	_ = this

	localctx = NewXaCommitWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 342, MySqlParserRULE_xaCommitWork)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4180)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4181)
		p.Match(MySqlParserCOMMIT)
	}
	{
		p.SetState(4182)
		p.Xid()
	}
	p.SetState(4185)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserONE {
		{
			p.SetState(4183)
			p.Match(MySqlParserONE)
		}
		{
			p.SetState(4184)
			p.Match(MySqlParserPHASE)
		}

	}

	return localctx
}

// IXaRollbackWorkContext is an interface to support dynamic dispatch.
type IXaRollbackWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXaRollbackWorkContext differentiates from other interfaces.
	IsXaRollbackWorkContext()
}

type XaRollbackWorkContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXaRollbackWorkContext() *XaRollbackWorkContext {
	var p = new(XaRollbackWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaRollbackWork
	return p
}

func (*XaRollbackWorkContext) IsXaRollbackWorkContext() {}

func NewXaRollbackWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaRollbackWorkContext {
	var p = new(XaRollbackWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaRollbackWork

	return p
}

func (s *XaRollbackWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *XaRollbackWorkContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaRollbackWorkContext) ROLLBACK() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLBACK, 0)
}

func (s *XaRollbackWorkContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaRollbackWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaRollbackWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaRollbackWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaRollbackWork(s)
	}
}

func (s *XaRollbackWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaRollbackWork(s)
	}
}

func (p *MySqlParser) XaRollbackWork() (localctx IXaRollbackWorkContext) {
	this := p
	_ = this

	localctx = NewXaRollbackWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 344, MySqlParserRULE_xaRollbackWork)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4187)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4188)
		p.Match(MySqlParserROLLBACK)
	}
	{
		p.SetState(4189)
		p.Xid()
	}

	return localctx
}

// IXaRecoverWorkContext is an interface to support dynamic dispatch.
type IXaRecoverWorkContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXaRecoverWorkContext differentiates from other interfaces.
	IsXaRecoverWorkContext()
}

type XaRecoverWorkContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXaRecoverWorkContext() *XaRecoverWorkContext {
	var p = new(XaRecoverWorkContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xaRecoverWork
	return p
}

func (*XaRecoverWorkContext) IsXaRecoverWorkContext() {}

func NewXaRecoverWorkContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XaRecoverWorkContext {
	var p = new(XaRecoverWorkContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xaRecoverWork

	return p
}

func (s *XaRecoverWorkContext) GetParser() antlr.Parser { return s.parser }

func (s *XaRecoverWorkContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *XaRecoverWorkContext) RECOVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserRECOVER, 0)
}

func (s *XaRecoverWorkContext) CONVERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONVERT, 0)
}

func (s *XaRecoverWorkContext) Xid() IXidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IXidContext)
}

func (s *XaRecoverWorkContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XaRecoverWorkContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XaRecoverWorkContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXaRecoverWork(s)
	}
}

func (s *XaRecoverWorkContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXaRecoverWork(s)
	}
}

func (p *MySqlParser) XaRecoverWork() (localctx IXaRecoverWorkContext) {
	this := p
	_ = this

	localctx = NewXaRecoverWorkContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 346, MySqlParserRULE_xaRecoverWork)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4191)
		p.Match(MySqlParserXA)
	}
	{
		p.SetState(4192)
		p.Match(MySqlParserRECOVER)
	}
	p.SetState(4195)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCONVERT {
		{
			p.SetState(4193)
			p.Match(MySqlParserCONVERT)
		}
		{
			p.SetState(4194)
			p.Xid()
		}

	}

	return localctx
}

// IPrepareStatementContext is an interface to support dynamic dispatch.
type IPrepareStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetQuery returns the query token.
	GetQuery() antlr.Token

	// GetVariable returns the variable token.
	GetVariable() antlr.Token

	// SetQuery sets the query token.
	SetQuery(antlr.Token)

	// SetVariable sets the variable token.
	SetVariable(antlr.Token)

	// IsPrepareStatementContext differentiates from other interfaces.
	IsPrepareStatementContext()
}

type PrepareStatementContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	query    antlr.Token
	variable antlr.Token
}

func NewEmptyPrepareStatementContext() *PrepareStatementContext {
	var p = new(PrepareStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_prepareStatement
	return p
}

func (*PrepareStatementContext) IsPrepareStatementContext() {}

func NewPrepareStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrepareStatementContext {
	var p = new(PrepareStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_prepareStatement

	return p
}

func (s *PrepareStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *PrepareStatementContext) GetQuery() antlr.Token { return s.query }

func (s *PrepareStatementContext) GetVariable() antlr.Token { return s.variable }

func (s *PrepareStatementContext) SetQuery(v antlr.Token) { s.query = v }

func (s *PrepareStatementContext) SetVariable(v antlr.Token) { s.variable = v }

func (s *PrepareStatementContext) PREPARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREPARE, 0)
}

func (s *PrepareStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *PrepareStatementContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *PrepareStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PrepareStatementContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *PrepareStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrepareStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PrepareStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrepareStatement(s)
	}
}

func (s *PrepareStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrepareStatement(s)
	}
}

func (p *MySqlParser) PrepareStatement() (localctx IPrepareStatementContext) {
	this := p
	_ = this

	localctx = NewPrepareStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 348, MySqlParserRULE_prepareStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4197)
		p.Match(MySqlParserPREPARE)
	}
	{
		p.SetState(4198)
		p.Uid()
	}
	{
		p.SetState(4199)
		p.Match(MySqlParserFROM)
	}
	p.SetState(4202)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSTRING_LITERAL:
		{
			p.SetState(4200)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PrepareStatementContext).query = _m
		}

	case MySqlParserLOCAL_ID:
		{
			p.SetState(4201)

			var _m = p.Match(MySqlParserLOCAL_ID)

			localctx.(*PrepareStatementContext).variable = _m
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IExecuteStatementContext is an interface to support dynamic dispatch.
type IExecuteStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExecuteStatementContext differentiates from other interfaces.
	IsExecuteStatementContext()
}

type ExecuteStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExecuteStatementContext() *ExecuteStatementContext {
	var p = new(ExecuteStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_executeStatement
	return p
}

func (*ExecuteStatementContext) IsExecuteStatementContext() {}

func NewExecuteStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExecuteStatementContext {
	var p = new(ExecuteStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_executeStatement

	return p
}

func (s *ExecuteStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ExecuteStatementContext) EXECUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXECUTE, 0)
}

func (s *ExecuteStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ExecuteStatementContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *ExecuteStatementContext) UserVariables() IUserVariablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserVariablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserVariablesContext)
}

func (s *ExecuteStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExecuteStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ExecuteStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExecuteStatement(s)
	}
}

func (s *ExecuteStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExecuteStatement(s)
	}
}

func (p *MySqlParser) ExecuteStatement() (localctx IExecuteStatementContext) {
	this := p
	_ = this

	localctx = NewExecuteStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 350, MySqlParserRULE_executeStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4204)
		p.Match(MySqlParserEXECUTE)
	}
	{
		p.SetState(4205)
		p.Uid()
	}
	p.SetState(4208)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserUSING {
		{
			p.SetState(4206)
			p.Match(MySqlParserUSING)
		}
		{
			p.SetState(4207)
			p.UserVariables()
		}

	}

	return localctx
}

// IDeallocatePrepareContext is an interface to support dynamic dispatch.
type IDeallocatePrepareContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetDropFormat returns the dropFormat token.
	GetDropFormat() antlr.Token

	// SetDropFormat sets the dropFormat token.
	SetDropFormat(antlr.Token)

	// IsDeallocatePrepareContext differentiates from other interfaces.
	IsDeallocatePrepareContext()
}

type DeallocatePrepareContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	dropFormat antlr.Token
}

func NewEmptyDeallocatePrepareContext() *DeallocatePrepareContext {
	var p = new(DeallocatePrepareContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_deallocatePrepare
	return p
}

func (*DeallocatePrepareContext) IsDeallocatePrepareContext() {}

func NewDeallocatePrepareContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeallocatePrepareContext {
	var p = new(DeallocatePrepareContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_deallocatePrepare

	return p
}

func (s *DeallocatePrepareContext) GetParser() antlr.Parser { return s.parser }

func (s *DeallocatePrepareContext) GetDropFormat() antlr.Token { return s.dropFormat }

func (s *DeallocatePrepareContext) SetDropFormat(v antlr.Token) { s.dropFormat = v }

func (s *DeallocatePrepareContext) PREPARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREPARE, 0)
}

func (s *DeallocatePrepareContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DeallocatePrepareContext) DEALLOCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEALLOCATE, 0)
}

func (s *DeallocatePrepareContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DeallocatePrepareContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeallocatePrepareContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeallocatePrepareContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeallocatePrepare(s)
	}
}

func (s *DeallocatePrepareContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeallocatePrepare(s)
	}
}

func (p *MySqlParser) DeallocatePrepare() (localctx IDeallocatePrepareContext) {
	this := p
	_ = this

	localctx = NewDeallocatePrepareContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 352, MySqlParserRULE_deallocatePrepare)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4210)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*DeallocatePrepareContext).dropFormat = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDROP || _la == MySqlParserDEALLOCATE) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*DeallocatePrepareContext).dropFormat = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(4211)
		p.Match(MySqlParserPREPARE)
	}
	{
		p.SetState(4212)
		p.Uid()
	}

	return localctx
}

// IRoutineBodyContext is an interface to support dynamic dispatch.
type IRoutineBodyContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRoutineBodyContext differentiates from other interfaces.
	IsRoutineBodyContext()
}

type RoutineBodyContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRoutineBodyContext() *RoutineBodyContext {
	var p = new(RoutineBodyContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_routineBody
	return p
}

func (*RoutineBodyContext) IsRoutineBodyContext() {}

func NewRoutineBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RoutineBodyContext {
	var p = new(RoutineBodyContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_routineBody

	return p
}

func (s *RoutineBodyContext) GetParser() antlr.Parser { return s.parser }

func (s *RoutineBodyContext) BlockStatement() IBlockStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBlockStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBlockStatementContext)
}

func (s *RoutineBodyContext) SqlStatement() ISqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISqlStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISqlStatementContext)
}

func (s *RoutineBodyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoutineBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RoutineBodyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoutineBody(s)
	}
}

func (s *RoutineBodyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoutineBody(s)
	}
}

func (p *MySqlParser) RoutineBody() (localctx IRoutineBodyContext) {
	this := p
	_ = this

	localctx = NewRoutineBodyContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 354, MySqlParserRULE_routineBody)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4216)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 599, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4214)
			p.BlockStatement()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4215)
			p.SqlStatement()
		}

	}

	return localctx
}

// IBlockStatementContext is an interface to support dynamic dispatch.
type IBlockStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBlockStatementContext differentiates from other interfaces.
	IsBlockStatementContext()
}

type BlockStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBlockStatementContext() *BlockStatementContext {
	var p = new(BlockStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_blockStatement
	return p
}

func (*BlockStatementContext) IsBlockStatementContext() {}

func NewBlockStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BlockStatementContext {
	var p = new(BlockStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_blockStatement

	return p
}

func (s *BlockStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *BlockStatementContext) BEGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEGIN, 0)
}

func (s *BlockStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *BlockStatementContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *BlockStatementContext) COLON_SYMB() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLON_SYMB, 0)
}

func (s *BlockStatementContext) AllDeclareVariable() []IDeclareVariableContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDeclareVariableContext)(nil)).Elem())
	var tst = make([]IDeclareVariableContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDeclareVariableContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) DeclareVariable(i int) IDeclareVariableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeclareVariableContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDeclareVariableContext)
}

func (s *BlockStatementContext) AllSEMI() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSEMI)
}

func (s *BlockStatementContext) SEMI(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSEMI, i)
}

func (s *BlockStatementContext) AllDeclareCondition() []IDeclareConditionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDeclareConditionContext)(nil)).Elem())
	var tst = make([]IDeclareConditionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDeclareConditionContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) DeclareCondition(i int) IDeclareConditionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeclareConditionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDeclareConditionContext)
}

func (s *BlockStatementContext) AllDeclareCursor() []IDeclareCursorContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDeclareCursorContext)(nil)).Elem())
	var tst = make([]IDeclareCursorContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDeclareCursorContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) DeclareCursor(i int) IDeclareCursorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeclareCursorContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDeclareCursorContext)
}

func (s *BlockStatementContext) AllDeclareHandler() []IDeclareHandlerContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDeclareHandlerContext)(nil)).Elem())
	var tst = make([]IDeclareHandlerContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDeclareHandlerContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) DeclareHandler(i int) IDeclareHandlerContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeclareHandlerContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDeclareHandlerContext)
}

func (s *BlockStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *BlockStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *BlockStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BlockStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BlockStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBlockStatement(s)
	}
}

func (s *BlockStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBlockStatement(s)
	}
}

func (p *MySqlParser) BlockStatement() (localctx IBlockStatementContext) {
	this := p
	_ = this

	localctx = NewBlockStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 356, MySqlParserRULE_blockStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(4221)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 600, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(4218)
			p.Uid()
		}
		{
			p.SetState(4219)
			p.Match(MySqlParserCOLON_SYMB)
		}

	}
	{
		p.SetState(4223)
		p.Match(MySqlParserBEGIN)
	}
	p.SetState(4262)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 606, p.GetParserRuleContext()) == 1 {
		p.SetState(4229)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 601, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(4224)
					p.DeclareVariable()
				}
				{
					p.SetState(4225)
					p.Match(MySqlParserSEMI)
				}

			}
			p.SetState(4231)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 601, p.GetParserRuleContext())
		}
		p.SetState(4237)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 602, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(4232)
					p.DeclareCondition()
				}
				{
					p.SetState(4233)
					p.Match(MySqlParserSEMI)
				}

			}
			p.SetState(4239)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 602, p.GetParserRuleContext())
		}
		p.SetState(4245)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 603, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(4240)
					p.DeclareCursor()
				}
				{
					p.SetState(4241)
					p.Match(MySqlParserSEMI)
				}

			}
			p.SetState(4247)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 603, p.GetParserRuleContext())
		}
		p.SetState(4253)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserDECLARE {
			{
				p.SetState(4248)
				p.DeclareHandler()
			}
			{
				p.SetState(4249)
				p.Match(MySqlParserSEMI)
			}

			p.SetState(4255)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(4259)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 605, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(4256)
					p.ProcedureSqlStatement()
				}

			}
			p.SetState(4261)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 605, p.GetParserRuleContext())
		}

	}
	{
		p.SetState(4264)
		p.Match(MySqlParserEND)
	}
	p.SetState(4266)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 607, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(4265)
			p.Uid()
		}

	}

	return localctx
}

// ICaseStatementContext is an interface to support dynamic dispatch.
type ICaseStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCaseStatementContext differentiates from other interfaces.
	IsCaseStatementContext()
}

type CaseStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCaseStatementContext() *CaseStatementContext {
	var p = new(CaseStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_caseStatement
	return p
}

func (*CaseStatementContext) IsCaseStatementContext() {}

func NewCaseStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseStatementContext {
	var p = new(CaseStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_caseStatement

	return p
}

func (s *CaseStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *CaseStatementContext) AllCASE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCASE)
}

func (s *CaseStatementContext) CASE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCASE, i)
}

func (s *CaseStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *CaseStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CaseStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *CaseStatementContext) AllCaseAlternative() []ICaseAlternativeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICaseAlternativeContext)(nil)).Elem())
	var tst = make([]ICaseAlternativeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICaseAlternativeContext)
		}
	}

	return tst
}

func (s *CaseStatementContext) CaseAlternative(i int) ICaseAlternativeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICaseAlternativeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICaseAlternativeContext)
}

func (s *CaseStatementContext) ELSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserELSE, 0)
}

func (s *CaseStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *CaseStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *CaseStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CaseStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CaseStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCaseStatement(s)
	}
}

func (s *CaseStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCaseStatement(s)
	}
}

func (p *MySqlParser) CaseStatement() (localctx ICaseStatementContext) {
	this := p
	_ = this

	localctx = NewCaseStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 358, MySqlParserRULE_caseStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4268)
		p.Match(MySqlParserCASE)
	}
	p.SetState(4271)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 608, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(4269)
			p.Uid()
		}

	} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 608, p.GetParserRuleContext()) == 2 {
		{
			p.SetState(4270)
			p.expression(0)
		}

	}
	p.SetState(4274)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for ok := true; ok; ok = _la == MySqlParserWHEN {
		{
			p.SetState(4273)
			p.CaseAlternative()
		}

		p.SetState(4276)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(4284)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserELSE {
		{
			p.SetState(4278)
			p.Match(MySqlParserELSE)
		}
		p.SetState(4280)
		p.GetErrorHandler().Sync(p)
		_alt = 1
		for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			switch _alt {
			case 1:
				{
					p.SetState(4279)
					p.ProcedureSqlStatement()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(4282)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 610, p.GetParserRuleContext())
		}

	}
	{
		p.SetState(4286)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4287)
		p.Match(MySqlParserCASE)
	}

	return localctx
}

// IIfStatementContext is an interface to support dynamic dispatch.
type IIfStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// Get_procedureSqlStatement returns the _procedureSqlStatement rule contexts.
	Get_procedureSqlStatement() IProcedureSqlStatementContext

	// Set_procedureSqlStatement sets the _procedureSqlStatement rule contexts.
	Set_procedureSqlStatement(IProcedureSqlStatementContext)

	// GetThenStatements returns the thenStatements rule context list.
	GetThenStatements() []IProcedureSqlStatementContext

	// GetElseStatements returns the elseStatements rule context list.
	GetElseStatements() []IProcedureSqlStatementContext

	// SetThenStatements sets the thenStatements rule context list.
	SetThenStatements([]IProcedureSqlStatementContext)

	// SetElseStatements sets the elseStatements rule context list.
	SetElseStatements([]IProcedureSqlStatementContext)

	// IsIfStatementContext differentiates from other interfaces.
	IsIfStatementContext()
}

type IfStatementContext struct {
	*antlr.BaseParserRuleContext
	parser                 antlr.Parser
	_procedureSqlStatement IProcedureSqlStatementContext
	thenStatements         []IProcedureSqlStatementContext
	elseStatements         []IProcedureSqlStatementContext
}

func NewEmptyIfStatementContext() *IfStatementContext {
	var p = new(IfStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_ifStatement
	return p
}

func (*IfStatementContext) IsIfStatementContext() {}

func NewIfStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IfStatementContext {
	var p = new(IfStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_ifStatement

	return p
}

func (s *IfStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *IfStatementContext) Get_procedureSqlStatement() IProcedureSqlStatementContext {
	return s._procedureSqlStatement
}

func (s *IfStatementContext) Set_procedureSqlStatement(v IProcedureSqlStatementContext) {
	s._procedureSqlStatement = v
}

func (s *IfStatementContext) GetThenStatements() []IProcedureSqlStatementContext {
	return s.thenStatements
}

func (s *IfStatementContext) GetElseStatements() []IProcedureSqlStatementContext {
	return s.elseStatements
}

func (s *IfStatementContext) SetThenStatements(v []IProcedureSqlStatementContext) {
	s.thenStatements = v
}

func (s *IfStatementContext) SetElseStatements(v []IProcedureSqlStatementContext) {
	s.elseStatements = v
}

func (s *IfStatementContext) AllIF() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserIF)
}

func (s *IfStatementContext) IF(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserIF, i)
}

func (s *IfStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *IfStatementContext) THEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHEN, 0)
}

func (s *IfStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *IfStatementContext) AllElifAlternative() []IElifAlternativeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IElifAlternativeContext)(nil)).Elem())
	var tst = make([]IElifAlternativeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IElifAlternativeContext)
		}
	}

	return tst
}

func (s *IfStatementContext) ElifAlternative(i int) IElifAlternativeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IElifAlternativeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IElifAlternativeContext)
}

func (s *IfStatementContext) ELSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserELSE, 0)
}

func (s *IfStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *IfStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *IfStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IfStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IfStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIfStatement(s)
	}
}

func (s *IfStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIfStatement(s)
	}
}

func (p *MySqlParser) IfStatement() (localctx IIfStatementContext) {
	this := p
	_ = this

	localctx = NewIfStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 360, MySqlParserRULE_ifStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4289)
		p.Match(MySqlParserIF)
	}
	{
		p.SetState(4290)
		p.expression(0)
	}
	{
		p.SetState(4291)
		p.Match(MySqlParserTHEN)
	}
	p.SetState(4293)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4292)

				var _x = p.ProcedureSqlStatement()

				localctx.(*IfStatementContext)._procedureSqlStatement = _x
			}
			localctx.(*IfStatementContext).thenStatements = append(localctx.(*IfStatementContext).thenStatements, localctx.(*IfStatementContext)._procedureSqlStatement)

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4295)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 612, p.GetParserRuleContext())
	}
	p.SetState(4300)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserELSEIF {
		{
			p.SetState(4297)
			p.ElifAlternative()
		}

		p.SetState(4302)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(4309)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserELSE {
		{
			p.SetState(4303)
			p.Match(MySqlParserELSE)
		}
		p.SetState(4305)
		p.GetErrorHandler().Sync(p)
		_alt = 1
		for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			switch _alt {
			case 1:
				{
					p.SetState(4304)

					var _x = p.ProcedureSqlStatement()

					localctx.(*IfStatementContext)._procedureSqlStatement = _x
				}
				localctx.(*IfStatementContext).elseStatements = append(localctx.(*IfStatementContext).elseStatements, localctx.(*IfStatementContext)._procedureSqlStatement)

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(4307)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 614, p.GetParserRuleContext())
		}

	}
	{
		p.SetState(4311)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4312)
		p.Match(MySqlParserIF)
	}

	return localctx
}

// IIterateStatementContext is an interface to support dynamic dispatch.
type IIterateStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIterateStatementContext differentiates from other interfaces.
	IsIterateStatementContext()
}

type IterateStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIterateStatementContext() *IterateStatementContext {
	var p = new(IterateStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_iterateStatement
	return p
}

func (*IterateStatementContext) IsIterateStatementContext() {}

func NewIterateStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IterateStatementContext {
	var p = new(IterateStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_iterateStatement

	return p
}

func (s *IterateStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *IterateStatementContext) ITERATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserITERATE, 0)
}

func (s *IterateStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *IterateStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IterateStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IterateStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIterateStatement(s)
	}
}

func (s *IterateStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIterateStatement(s)
	}
}

func (p *MySqlParser) IterateStatement() (localctx IIterateStatementContext) {
	this := p
	_ = this

	localctx = NewIterateStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 362, MySqlParserRULE_iterateStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4314)
		p.Match(MySqlParserITERATE)
	}
	{
		p.SetState(4315)
		p.Uid()
	}

	return localctx
}

// ILeaveStatementContext is an interface to support dynamic dispatch.
type ILeaveStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLeaveStatementContext differentiates from other interfaces.
	IsLeaveStatementContext()
}

type LeaveStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLeaveStatementContext() *LeaveStatementContext {
	var p = new(LeaveStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_leaveStatement
	return p
}

func (*LeaveStatementContext) IsLeaveStatementContext() {}

func NewLeaveStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LeaveStatementContext {
	var p = new(LeaveStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_leaveStatement

	return p
}

func (s *LeaveStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *LeaveStatementContext) LEAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEAVE, 0)
}

func (s *LeaveStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *LeaveStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LeaveStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LeaveStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLeaveStatement(s)
	}
}

func (s *LeaveStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLeaveStatement(s)
	}
}

func (p *MySqlParser) LeaveStatement() (localctx ILeaveStatementContext) {
	this := p
	_ = this

	localctx = NewLeaveStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 364, MySqlParserRULE_leaveStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4317)
		p.Match(MySqlParserLEAVE)
	}
	{
		p.SetState(4318)
		p.Uid()
	}

	return localctx
}

// ILoopStatementContext is an interface to support dynamic dispatch.
type ILoopStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLoopStatementContext differentiates from other interfaces.
	IsLoopStatementContext()
}

type LoopStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLoopStatementContext() *LoopStatementContext {
	var p = new(LoopStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_loopStatement
	return p
}

func (*LoopStatementContext) IsLoopStatementContext() {}

func NewLoopStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LoopStatementContext {
	var p = new(LoopStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_loopStatement

	return p
}

func (s *LoopStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *LoopStatementContext) AllLOOP() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLOOP)
}

func (s *LoopStatementContext) LOOP(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLOOP, i)
}

func (s *LoopStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *LoopStatementContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *LoopStatementContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *LoopStatementContext) COLON_SYMB() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLON_SYMB, 0)
}

func (s *LoopStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *LoopStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *LoopStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LoopStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LoopStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLoopStatement(s)
	}
}

func (s *LoopStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLoopStatement(s)
	}
}

func (p *MySqlParser) LoopStatement() (localctx ILoopStatementContext) {
	this := p
	_ = this

	localctx = NewLoopStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 366, MySqlParserRULE_loopStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(4323)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4320)
			p.Uid()
		}
		{
			p.SetState(4321)
			p.Match(MySqlParserCOLON_SYMB)
		}

	}
	{
		p.SetState(4325)
		p.Match(MySqlParserLOOP)
	}
	p.SetState(4327)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4326)
				p.ProcedureSqlStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4329)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 617, p.GetParserRuleContext())
	}
	{
		p.SetState(4331)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4332)
		p.Match(MySqlParserLOOP)
	}
	p.SetState(4334)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4333)
			p.Uid()
		}

	}

	return localctx
}

// IRepeatStatementContext is an interface to support dynamic dispatch.
type IRepeatStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRepeatStatementContext differentiates from other interfaces.
	IsRepeatStatementContext()
}

type RepeatStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRepeatStatementContext() *RepeatStatementContext {
	var p = new(RepeatStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_repeatStatement
	return p
}

func (*RepeatStatementContext) IsRepeatStatementContext() {}

func NewRepeatStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RepeatStatementContext {
	var p = new(RepeatStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_repeatStatement

	return p
}

func (s *RepeatStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *RepeatStatementContext) AllREPEAT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserREPEAT)
}

func (s *RepeatStatementContext) REPEAT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserREPEAT, i)
}

func (s *RepeatStatementContext) UNTIL() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNTIL, 0)
}

func (s *RepeatStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *RepeatStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *RepeatStatementContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *RepeatStatementContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *RepeatStatementContext) COLON_SYMB() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLON_SYMB, 0)
}

func (s *RepeatStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *RepeatStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *RepeatStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RepeatStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RepeatStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRepeatStatement(s)
	}
}

func (s *RepeatStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRepeatStatement(s)
	}
}

func (p *MySqlParser) RepeatStatement() (localctx IRepeatStatementContext) {
	this := p
	_ = this

	localctx = NewRepeatStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 368, MySqlParserRULE_repeatStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(4339)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4336)
			p.Uid()
		}
		{
			p.SetState(4337)
			p.Match(MySqlParserCOLON_SYMB)
		}

	}
	{
		p.SetState(4341)
		p.Match(MySqlParserREPEAT)
	}
	p.SetState(4343)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4342)
				p.ProcedureSqlStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4345)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 620, p.GetParserRuleContext())
	}
	{
		p.SetState(4347)
		p.Match(MySqlParserUNTIL)
	}
	{
		p.SetState(4348)
		p.expression(0)
	}
	{
		p.SetState(4349)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4350)
		p.Match(MySqlParserREPEAT)
	}
	p.SetState(4352)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4351)
			p.Uid()
		}

	}

	return localctx
}

// IReturnStatementContext is an interface to support dynamic dispatch.
type IReturnStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsReturnStatementContext differentiates from other interfaces.
	IsReturnStatementContext()
}

type ReturnStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyReturnStatementContext() *ReturnStatementContext {
	var p = new(ReturnStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_returnStatement
	return p
}

func (*ReturnStatementContext) IsReturnStatementContext() {}

func NewReturnStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnStatementContext {
	var p = new(ReturnStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_returnStatement

	return p
}

func (s *ReturnStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ReturnStatementContext) RETURN() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURN, 0)
}

func (s *ReturnStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ReturnStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ReturnStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ReturnStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterReturnStatement(s)
	}
}

func (s *ReturnStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitReturnStatement(s)
	}
}

func (p *MySqlParser) ReturnStatement() (localctx IReturnStatementContext) {
	this := p
	_ = this

	localctx = NewReturnStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 370, MySqlParserRULE_returnStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4354)
		p.Match(MySqlParserRETURN)
	}
	{
		p.SetState(4355)
		p.expression(0)
	}

	return localctx
}

// IWhileStatementContext is an interface to support dynamic dispatch.
type IWhileStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsWhileStatementContext differentiates from other interfaces.
	IsWhileStatementContext()
}

type WhileStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyWhileStatementContext() *WhileStatementContext {
	var p = new(WhileStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_whileStatement
	return p
}

func (*WhileStatementContext) IsWhileStatementContext() {}

func NewWhileStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhileStatementContext {
	var p = new(WhileStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_whileStatement

	return p
}

func (s *WhileStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *WhileStatementContext) AllWHILE() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserWHILE)
}

func (s *WhileStatementContext) WHILE(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserWHILE, i)
}

func (s *WhileStatementContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *WhileStatementContext) DO() antlr.TerminalNode {
	return s.GetToken(MySqlParserDO, 0)
}

func (s *WhileStatementContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *WhileStatementContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *WhileStatementContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *WhileStatementContext) COLON_SYMB() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLON_SYMB, 0)
}

func (s *WhileStatementContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *WhileStatementContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *WhileStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WhileStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *WhileStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWhileStatement(s)
	}
}

func (s *WhileStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWhileStatement(s)
	}
}

func (p *MySqlParser) WhileStatement() (localctx IWhileStatementContext) {
	this := p
	_ = this

	localctx = NewWhileStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 372, MySqlParserRULE_whileStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(4360)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4357)
			p.Uid()
		}
		{
			p.SetState(4358)
			p.Match(MySqlParserCOLON_SYMB)
		}

	}
	{
		p.SetState(4362)
		p.Match(MySqlParserWHILE)
	}
	{
		p.SetState(4363)
		p.expression(0)
	}
	{
		p.SetState(4364)
		p.Match(MySqlParserDO)
	}
	p.SetState(4366)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4365)
				p.ProcedureSqlStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4368)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 623, p.GetParserRuleContext())
	}
	{
		p.SetState(4370)
		p.Match(MySqlParserEND)
	}
	{
		p.SetState(4371)
		p.Match(MySqlParserWHILE)
	}
	p.SetState(4373)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if (((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDATABASE-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserLEFT || (((_la-110)&-(0x1f+1)) == 0 && ((1<<uint((_la-110)))&((1<<(MySqlParserNUMBER-110))|(1<<(MySqlParserORDER-110))|(1<<(MySqlParserRIGHT-110)))) != 0) || _la == MySqlParserSCHEMA || _la == MySqlParserSTACKED || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserBINARY-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-310)&-(0x1f+1)) == 0 && ((1<<uint((_la-310)))&((1<<(MySqlParserPOSITION-310))|(1<<(MySqlParserACCOUNT-310))|(1<<(MySqlParserACTION-310))|(1<<(MySqlParserAFTER-310))|(1<<(MySqlParserAGGREGATE-310))|(1<<(MySqlParserALGORITHM-310))|(1<<(MySqlParserANY-310))|(1<<(MySqlParserAT-310))|(1<<(MySqlParserAUTHORS-310))|(1<<(MySqlParserAUTOCOMMIT-310))|(1<<(MySqlParserAUTOEXTEND_SIZE-310))|(1<<(MySqlParserAUTO_INCREMENT-310))|(1<<(MySqlParserAVG_ROW_LENGTH-310))|(1<<(MySqlParserBEGIN-310))|(1<<(MySqlParserBINLOG-310))|(1<<(MySqlParserBIT-310))|(1<<(MySqlParserBLOCK-310))|(1<<(MySqlParserBOOL-310))|(1<<(MySqlParserBOOLEAN-310))|(1<<(MySqlParserBTREE-310))|(1<<(MySqlParserCACHE-310))|(1<<(MySqlParserCASCADED-310))|(1<<(MySqlParserCHAIN-310))|(1<<(MySqlParserCHANGED-310))|(1<<(MySqlParserCHANNEL-310)))) != 0) || (((_la-342)&-(0x1f+1)) == 0 && ((1<<uint((_la-342)))&((1<<(MySqlParserCHECKSUM-342))|(1<<(MySqlParserPAGE_CHECKSUM-342))|(1<<(MySqlParserCIPHER-342))|(1<<(MySqlParserCLASS_ORIGIN-342))|(1<<(MySqlParserCLIENT-342))|(1<<(MySqlParserCLOSE-342))|(1<<(MySqlParserCOALESCE-342))|(1<<(MySqlParserCODE-342))|(1<<(MySqlParserCOLUMNS-342))|(1<<(MySqlParserCOLUMN_FORMAT-342))|(1<<(MySqlParserCOLUMN_NAME-342))|(1<<(MySqlParserCOMMENT-342))|(1<<(MySqlParserCOMMIT-342))|(1<<(MySqlParserCOMPACT-342))|(1<<(MySqlParserCOMPLETION-342))|(1<<(MySqlParserCOMPRESSED-342))|(1<<(MySqlParserCOMPRESSION-342))|(1<<(MySqlParserCONCURRENT-342))|(1<<(MySqlParserCONNECT-342))|(1<<(MySqlParserCONNECTION-342))|(1<<(MySqlParserCONSISTENT-342))|(1<<(MySqlParserCONSTRAINT_CATALOG-342))|(1<<(MySqlParserCONSTRAINT_SCHEMA-342))|(1<<(MySqlParserCONSTRAINT_NAME-342))|(1<<(MySqlParserCONTAINS-342))|(1<<(MySqlParserCONTEXT-342))|(1<<(MySqlParserCONTRIBUTORS-342))|(1<<(MySqlParserCOPY-342))|(1<<(MySqlParserCPU-342))|(1<<(MySqlParserCURSOR_NAME-342))|(1<<(MySqlParserDATA-342))|(1<<(MySqlParserDATAFILE-342)))) != 0) || (((_la-374)&-(0x1f+1)) == 0 && ((1<<uint((_la-374)))&((1<<(MySqlParserDEALLOCATE-374))|(1<<(MySqlParserDEFAULT_AUTH-374))|(1<<(MySqlParserDEFINER-374))|(1<<(MySqlParserDELAY_KEY_WRITE-374))|(1<<(MySqlParserDES_KEY_FILE-374))|(1<<(MySqlParserDIRECTORY-374))|(1<<(MySqlParserDISABLE-374))|(1<<(MySqlParserDISCARD-374))|(1<<(MySqlParserDISK-374))|(1<<(MySqlParserDO-374))|(1<<(MySqlParserDUMPFILE-374))|(1<<(MySqlParserDUPLICATE-374))|(1<<(MySqlParserDYNAMIC-374))|(1<<(MySqlParserENABLE-374))|(1<<(MySqlParserENCRYPTION-374))|(1<<(MySqlParserEND-374))|(1<<(MySqlParserENDS-374))|(1<<(MySqlParserENGINE-374))|(1<<(MySqlParserENGINES-374))|(1<<(MySqlParserERROR-374))|(1<<(MySqlParserERRORS-374))|(1<<(MySqlParserESCAPE-374))|(1<<(MySqlParserEVEN-374))|(1<<(MySqlParserEVENT-374))|(1<<(MySqlParserEVENTS-374))|(1<<(MySqlParserEVERY-374))|(1<<(MySqlParserEXCHANGE-374))|(1<<(MySqlParserEXCLUSIVE-374))|(1<<(MySqlParserEXPIRE-374))|(1<<(MySqlParserEXPORT-374))|(1<<(MySqlParserEXTENDED-374))|(1<<(MySqlParserEXTENT_SIZE-374)))) != 0) || (((_la-406)&-(0x1f+1)) == 0 && ((1<<uint((_la-406)))&((1<<(MySqlParserFAST-406))|(1<<(MySqlParserFAULTS-406))|(1<<(MySqlParserFIELDS-406))|(1<<(MySqlParserFILE_BLOCK_SIZE-406))|(1<<(MySqlParserFILTER-406))|(1<<(MySqlParserFIRST-406))|(1<<(MySqlParserFIXED-406))|(1<<(MySqlParserFLUSH-406))|(1<<(MySqlParserFOLLOWS-406))|(1<<(MySqlParserFOUND-406))|(1<<(MySqlParserFULL-406))|(1<<(MySqlParserFUNCTION-406))|(1<<(MySqlParserGENERAL-406))|(1<<(MySqlParserGLOBAL-406))|(1<<(MySqlParserGRANTS-406))|(1<<(MySqlParserGROUP_REPLICATION-406))|(1<<(MySqlParserHANDLER-406))|(1<<(MySqlParserHASH-406))|(1<<(MySqlParserHELP-406))|(1<<(MySqlParserHOST-406))|(1<<(MySqlParserHOSTS-406))|(1<<(MySqlParserIDENTIFIED-406))|(1<<(MySqlParserIGNORE_SERVER_IDS-406))|(1<<(MySqlParserIMPORT-406))|(1<<(MySqlParserINDEXES-406))|(1<<(MySqlParserINITIAL_SIZE-406))|(1<<(MySqlParserINPLACE-406))|(1<<(MySqlParserINSERT_METHOD-406))|(1<<(MySqlParserINSTALL-406))|(1<<(MySqlParserINSTANCE-406))|(1<<(MySqlParserINVISIBLE-406)))) != 0) || (((_la-438)&-(0x1f+1)) == 0 && ((1<<uint((_la-438)))&((1<<(MySqlParserINVOKER-438))|(1<<(MySqlParserIO-438))|(1<<(MySqlParserIO_THREAD-438))|(1<<(MySqlParserIPC-438))|(1<<(MySqlParserISOLATION-438))|(1<<(MySqlParserISSUER-438))|(1<<(MySqlParserJSON-438))|(1<<(MySqlParserKEY_BLOCK_SIZE-438))|(1<<(MySqlParserLANGUAGE-438))|(1<<(MySqlParserLAST-438))|(1<<(MySqlParserLEAVES-438))|(1<<(MySqlParserLESS-438))|(1<<(MySqlParserLEVEL-438))|(1<<(MySqlParserLIST-438))|(1<<(MySqlParserLOCAL-438))|(1<<(MySqlParserLOGFILE-438))|(1<<(MySqlParserLOGS-438))|(1<<(MySqlParserMASTER-438))|(1<<(MySqlParserMASTER_AUTO_POSITION-438))|(1<<(MySqlParserMASTER_CONNECT_RETRY-438))|(1<<(MySqlParserMASTER_DELAY-438))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-438))|(1<<(MySqlParserMASTER_HOST-438))|(1<<(MySqlParserMASTER_LOG_FILE-438))|(1<<(MySqlParserMASTER_LOG_POS-438))|(1<<(MySqlParserMASTER_PASSWORD-438))|(1<<(MySqlParserMASTER_PORT-438))|(1<<(MySqlParserMASTER_RETRY_COUNT-438))|(1<<(MySqlParserMASTER_SSL-438))|(1<<(MySqlParserMASTER_SSL_CA-438))|(1<<(MySqlParserMASTER_SSL_CAPATH-438))|(1<<(MySqlParserMASTER_SSL_CERT-438)))) != 0) || (((_la-470)&-(0x1f+1)) == 0 && ((1<<uint((_la-470)))&((1<<(MySqlParserMASTER_SSL_CIPHER-470))|(1<<(MySqlParserMASTER_SSL_CRL-470))|(1<<(MySqlParserMASTER_SSL_CRLPATH-470))|(1<<(MySqlParserMASTER_SSL_KEY-470))|(1<<(MySqlParserMASTER_TLS_VERSION-470))|(1<<(MySqlParserMASTER_USER-470))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-470))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-470))|(1<<(MySqlParserMAX_ROWS-470))|(1<<(MySqlParserMAX_SIZE-470))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-470))|(1<<(MySqlParserMAX_USER_CONNECTIONS-470))|(1<<(MySqlParserMEDIUM-470))|(1<<(MySqlParserMEMBER-470))|(1<<(MySqlParserMERGE-470))|(1<<(MySqlParserMESSAGE_TEXT-470))|(1<<(MySqlParserMID-470))|(1<<(MySqlParserMIGRATE-470))|(1<<(MySqlParserMIN_ROWS-470))|(1<<(MySqlParserMODE-470))|(1<<(MySqlParserMODIFY-470))|(1<<(MySqlParserMUTEX-470))|(1<<(MySqlParserMYSQL-470))|(1<<(MySqlParserMYSQL_ERRNO-470))|(1<<(MySqlParserNAME-470))|(1<<(MySqlParserNAMES-470))|(1<<(MySqlParserNCHAR-470))|(1<<(MySqlParserNEVER-470))|(1<<(MySqlParserNEXT-470))|(1<<(MySqlParserNO-470))|(1<<(MySqlParserNODEGROUP-470))|(1<<(MySqlParserNONE-470)))) != 0) || (((_la-502)&-(0x1f+1)) == 0 && ((1<<uint((_la-502)))&((1<<(MySqlParserODBC-502))|(1<<(MySqlParserOFFLINE-502))|(1<<(MySqlParserOFFSET-502))|(1<<(MySqlParserOF-502))|(1<<(MySqlParserOJ-502))|(1<<(MySqlParserOLD_PASSWORD-502))|(1<<(MySqlParserONE-502))|(1<<(MySqlParserONLINE-502))|(1<<(MySqlParserONLY-502))|(1<<(MySqlParserOPEN-502))|(1<<(MySqlParserOPTIMIZER_COSTS-502))|(1<<(MySqlParserOPTIONS-502))|(1<<(MySqlParserOWNER-502))|(1<<(MySqlParserPACK_KEYS-502))|(1<<(MySqlParserPAGE-502))|(1<<(MySqlParserPARSER-502))|(1<<(MySqlParserPARTIAL-502))|(1<<(MySqlParserPARTITIONING-502))|(1<<(MySqlParserPARTITIONS-502))|(1<<(MySqlParserPASSWORD-502))|(1<<(MySqlParserPHASE-502))|(1<<(MySqlParserPLUGIN-502))|(1<<(MySqlParserPLUGIN_DIR-502))|(1<<(MySqlParserPLUGINS-502))|(1<<(MySqlParserPORT-502))|(1<<(MySqlParserPRECEDES-502))|(1<<(MySqlParserPREPARE-502))|(1<<(MySqlParserPRESERVE-502))|(1<<(MySqlParserPREV-502))|(1<<(MySqlParserPROCESSLIST-502))|(1<<(MySqlParserPROFILE-502)))) != 0) || (((_la-534)&-(0x1f+1)) == 0 && ((1<<uint((_la-534)))&((1<<(MySqlParserPROFILES-534))|(1<<(MySqlParserPROXY-534))|(1<<(MySqlParserQUERY-534))|(1<<(MySqlParserQUICK-534))|(1<<(MySqlParserREBUILD-534))|(1<<(MySqlParserRECOVER-534))|(1<<(MySqlParserREDO_BUFFER_SIZE-534))|(1<<(MySqlParserREDUNDANT-534))|(1<<(MySqlParserRELAY-534))|(1<<(MySqlParserRELAY_LOG_FILE-534))|(1<<(MySqlParserRELAY_LOG_POS-534))|(1<<(MySqlParserRELAYLOG-534))|(1<<(MySqlParserREMOVE-534))|(1<<(MySqlParserREORGANIZE-534))|(1<<(MySqlParserREPAIR-534))|(1<<(MySqlParserREPLICATE_DO_DB-534))|(1<<(MySqlParserREPLICATE_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_IGNORE_DB-534))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATE_REWRITE_DB-534))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-534))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-534))|(1<<(MySqlParserREPLICATION-534))|(1<<(MySqlParserRESET-534))|(1<<(MySqlParserRESUME-534))|(1<<(MySqlParserRETURNED_SQLSTATE-534))|(1<<(MySqlParserRETURNS-534))|(1<<(MySqlParserROLE-534))|(1<<(MySqlParserROLLBACK-534))|(1<<(MySqlParserROLLUP-534))|(1<<(MySqlParserROTATE-534)))) != 0) || (((_la-566)&-(0x1f+1)) == 0 && ((1<<uint((_la-566)))&((1<<(MySqlParserROW-566))|(1<<(MySqlParserROWS-566))|(1<<(MySqlParserROW_FORMAT-566))|(1<<(MySqlParserSAVEPOINT-566))|(1<<(MySqlParserSCHEDULE-566))|(1<<(MySqlParserSECURITY-566))|(1<<(MySqlParserSERVER-566))|(1<<(MySqlParserSESSION-566))|(1<<(MySqlParserSHARE-566))|(1<<(MySqlParserSHARED-566))|(1<<(MySqlParserSIGNED-566))|(1<<(MySqlParserSIMPLE-566))|(1<<(MySqlParserSLAVE-566))|(1<<(MySqlParserSLOW-566))|(1<<(MySqlParserSNAPSHOT-566))|(1<<(MySqlParserSOCKET-566))|(1<<(MySqlParserSOME-566))|(1<<(MySqlParserSONAME-566))|(1<<(MySqlParserSOUNDS-566))|(1<<(MySqlParserSOURCE-566))|(1<<(MySqlParserSQL_AFTER_GTIDS-566))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-566))|(1<<(MySqlParserSQL_BEFORE_GTIDS-566))|(1<<(MySqlParserSQL_BUFFER_RESULT-566))|(1<<(MySqlParserSQL_CACHE-566))|(1<<(MySqlParserSQL_NO_CACHE-566))|(1<<(MySqlParserSQL_THREAD-566))|(1<<(MySqlParserSTART-566))|(1<<(MySqlParserSTARTS-566))|(1<<(MySqlParserSTATS_AUTO_RECALC-566))|(1<<(MySqlParserSTATS_PERSISTENT-566))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-566)))) != 0) || (((_la-598)&-(0x1f+1)) == 0 && ((1<<uint((_la-598)))&((1<<(MySqlParserSTATUS-598))|(1<<(MySqlParserSTOP-598))|(1<<(MySqlParserSTORAGE-598))|(1<<(MySqlParserSTRING-598))|(1<<(MySqlParserSUBCLASS_ORIGIN-598))|(1<<(MySqlParserSUBJECT-598))|(1<<(MySqlParserSUBPARTITION-598))|(1<<(MySqlParserSUBPARTITIONS-598))|(1<<(MySqlParserSUSPEND-598))|(1<<(MySqlParserSWAPS-598))|(1<<(MySqlParserSWITCHES-598))|(1<<(MySqlParserTABLE_NAME-598))|(1<<(MySqlParserTABLESPACE-598))|(1<<(MySqlParserTEMPORARY-598))|(1<<(MySqlParserTEMPTABLE-598))|(1<<(MySqlParserTHAN-598))|(1<<(MySqlParserTRADITIONAL-598))|(1<<(MySqlParserTRANSACTION-598))|(1<<(MySqlParserTRANSACTIONAL-598))|(1<<(MySqlParserTRIGGERS-598))|(1<<(MySqlParserTRUNCATE-598))|(1<<(MySqlParserUNDEFINED-598))|(1<<(MySqlParserUNDOFILE-598))|(1<<(MySqlParserUNDO_BUFFER_SIZE-598))|(1<<(MySqlParserUNINSTALL-598))|(1<<(MySqlParserUNKNOWN-598))|(1<<(MySqlParserUNTIL-598))|(1<<(MySqlParserUPGRADE-598))|(1<<(MySqlParserUSER-598)))) != 0) || (((_la-630)&-(0x1f+1)) == 0 && ((1<<uint((_la-630)))&((1<<(MySqlParserUSE_FRM-630))|(1<<(MySqlParserUSER_RESOURCES-630))|(1<<(MySqlParserVALIDATION-630))|(1<<(MySqlParserVALUE-630))|(1<<(MySqlParserVARIABLES-630))|(1<<(MySqlParserVIEW-630))|(1<<(MySqlParserVISIBLE-630))|(1<<(MySqlParserWAIT-630))|(1<<(MySqlParserWARNINGS-630))|(1<<(MySqlParserWITHOUT-630))|(1<<(MySqlParserWORK-630))|(1<<(MySqlParserWRAPPER-630))|(1<<(MySqlParserX509-630))|(1<<(MySqlParserXA-630))|(1<<(MySqlParserXML-630))|(1<<(MySqlParserEUR-630))|(1<<(MySqlParserUSA-630))|(1<<(MySqlParserJIS-630))|(1<<(MySqlParserISO-630))|(1<<(MySqlParserINTERNAL-630))|(1<<(MySqlParserQUARTER-630))|(1<<(MySqlParserMONTH-630))|(1<<(MySqlParserDAY-630))|(1<<(MySqlParserHOUR-630))|(1<<(MySqlParserMINUTE-630))|(1<<(MySqlParserWEEK-630))|(1<<(MySqlParserSECOND-630))|(1<<(MySqlParserMICROSECOND-630))|(1<<(MySqlParserTABLES-630))|(1<<(MySqlParserROUTINE-630)))) != 0) || (((_la-662)&-(0x1f+1)) == 0 && ((1<<uint((_la-662)))&((1<<(MySqlParserEXECUTE-662))|(1<<(MySqlParserFILE-662))|(1<<(MySqlParserPROCESS-662))|(1<<(MySqlParserRELOAD-662))|(1<<(MySqlParserSHUTDOWN-662))|(1<<(MySqlParserSUPER-662))|(1<<(MySqlParserPRIVILEGES-662))|(1<<(MySqlParserAUDIT_ADMIN-662))|(1<<(MySqlParserBACKUP_ADMIN-662))|(1<<(MySqlParserBINLOG_ADMIN-662))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-662))|(1<<(MySqlParserCLONE_ADMIN-662))|(1<<(MySqlParserCONNECTION_ADMIN-662))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-662))|(1<<(MySqlParserFIREWALL_ADMIN-662))|(1<<(MySqlParserFIREWALL_USER-662))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-662))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-662))|(1<<(MySqlParserNDB_STORED_USER-662))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-662))|(1<<(MySqlParserREPLICATION_APPLIER-662))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-662))|(1<<(MySqlParserRESOURCE_GROUP_USER-662))|(1<<(MySqlParserROLE_ADMIN-662)))) != 0) || (((_la-694)&-(0x1f+1)) == 0 && ((1<<uint((_la-694)))&((1<<(MySqlParserSESSION_VARIABLES_ADMIN-694))|(1<<(MySqlParserSET_USER_ID-694))|(1<<(MySqlParserSHOW_ROUTINE-694))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-694))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-694))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-694))|(1<<(MySqlParserXA_RECOVER_ADMIN-694))|(1<<(MySqlParserARMSCII8-694))|(1<<(MySqlParserASCII-694))|(1<<(MySqlParserBIG5-694))|(1<<(MySqlParserCP1250-694))|(1<<(MySqlParserCP1251-694))|(1<<(MySqlParserCP1256-694))|(1<<(MySqlParserCP1257-694))|(1<<(MySqlParserCP850-694))|(1<<(MySqlParserCP852-694))|(1<<(MySqlParserCP866-694))|(1<<(MySqlParserCP932-694))|(1<<(MySqlParserDEC8-694))|(1<<(MySqlParserEUCJPMS-694))|(1<<(MySqlParserEUCKR-694))|(1<<(MySqlParserGB18030-694))|(1<<(MySqlParserGB2312-694))|(1<<(MySqlParserGBK-694))|(1<<(MySqlParserGEOSTD8-694))|(1<<(MySqlParserGREEK-694))|(1<<(MySqlParserHEBREW-694))|(1<<(MySqlParserHP8-694))|(1<<(MySqlParserKEYBCS2-694))|(1<<(MySqlParserKOI8R-694))|(1<<(MySqlParserKOI8U-694))|(1<<(MySqlParserLATIN1-694)))) != 0) || (((_la-726)&-(0x1f+1)) == 0 && ((1<<uint((_la-726)))&((1<<(MySqlParserLATIN2-726))|(1<<(MySqlParserLATIN5-726))|(1<<(MySqlParserLATIN7-726))|(1<<(MySqlParserMACCE-726))|(1<<(MySqlParserMACROMAN-726))|(1<<(MySqlParserSJIS-726))|(1<<(MySqlParserSWE7-726))|(1<<(MySqlParserTIS620-726))|(1<<(MySqlParserUCS2-726))|(1<<(MySqlParserUJIS-726))|(1<<(MySqlParserUTF16-726))|(1<<(MySqlParserUTF16LE-726))|(1<<(MySqlParserUTF32-726))|(1<<(MySqlParserUTF8-726))|(1<<(MySqlParserUTF8MB3-726))|(1<<(MySqlParserUTF8MB4-726))|(1<<(MySqlParserARCHIVE-726))|(1<<(MySqlParserBLACKHOLE-726))|(1<<(MySqlParserCSV-726))|(1<<(MySqlParserFEDERATED-726))|(1<<(MySqlParserINNODB-726))|(1<<(MySqlParserMEMORY-726))|(1<<(MySqlParserMRG_MYISAM-726))|(1<<(MySqlParserMYISAM-726))|(1<<(MySqlParserNDB-726))|(1<<(MySqlParserNDBCLUSTER-726))|(1<<(MySqlParserPERFORMANCE_SCHEMA-726))|(1<<(MySqlParserTOKUDB-726))|(1<<(MySqlParserREPEATABLE-726))|(1<<(MySqlParserCOMMITTED-726))|(1<<(MySqlParserUNCOMMITTED-726))|(1<<(MySqlParserSERIALIZABLE-726)))) != 0) || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCATALOG_NAME-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSCHEMA_NAME-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0) || (((_la-1096)&-(0x1f+1)) == 0 && ((1<<uint((_la-1096)))&((1<<(MySqlParserCHARSET_REVERSE_QOUTE_STRING-1096))|(1<<(MySqlParserSTRING_LITERAL-1096))|(1<<(MySqlParserID-1096))|(1<<(MySqlParserREVERSE_QUOTE_ID-1096))|(1<<(MySqlParserOPTIONAL-1096)))) != 0) {
		{
			p.SetState(4372)
			p.Uid()
		}

	}

	return localctx
}

// ICursorStatementContext is an interface to support dynamic dispatch.
type ICursorStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCursorStatementContext differentiates from other interfaces.
	IsCursorStatementContext()
}

type CursorStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCursorStatementContext() *CursorStatementContext {
	var p = new(CursorStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_cursorStatement
	return p
}

func (*CursorStatementContext) IsCursorStatementContext() {}

func NewCursorStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CursorStatementContext {
	var p = new(CursorStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_cursorStatement

	return p
}

func (s *CursorStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *CursorStatementContext) CopyFrom(ctx *CursorStatementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *CursorStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CursorStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type CloseCursorContext struct {
	*CursorStatementContext
}

func NewCloseCursorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CloseCursorContext {
	var p = new(CloseCursorContext)

	p.CursorStatementContext = NewEmptyCursorStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CursorStatementContext))

	return p
}

func (s *CloseCursorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CloseCursorContext) CLOSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLOSE, 0)
}

func (s *CloseCursorContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CloseCursorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCloseCursor(s)
	}
}

func (s *CloseCursorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCloseCursor(s)
	}
}

type OpenCursorContext struct {
	*CursorStatementContext
}

func NewOpenCursorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *OpenCursorContext {
	var p = new(OpenCursorContext)

	p.CursorStatementContext = NewEmptyCursorStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CursorStatementContext))

	return p
}

func (s *OpenCursorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OpenCursorContext) OPEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPEN, 0)
}

func (s *OpenCursorContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *OpenCursorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOpenCursor(s)
	}
}

func (s *OpenCursorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOpenCursor(s)
	}
}

type FetchCursorContext struct {
	*CursorStatementContext
}

func NewFetchCursorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FetchCursorContext {
	var p = new(FetchCursorContext)

	p.CursorStatementContext = NewEmptyCursorStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CursorStatementContext))

	return p
}

func (s *FetchCursorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FetchCursorContext) FETCH() antlr.TerminalNode {
	return s.GetToken(MySqlParserFETCH, 0)
}

func (s *FetchCursorContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *FetchCursorContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *FetchCursorContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *FetchCursorContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *FetchCursorContext) NEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEXT, 0)
}

func (s *FetchCursorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFetchCursor(s)
	}
}

func (s *FetchCursorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFetchCursor(s)
	}
}

func (p *MySqlParser) CursorStatement() (localctx ICursorStatementContext) {
	this := p
	_ = this

	localctx = NewCursorStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 374, MySqlParserRULE_cursorStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4390)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCLOSE:
		localctx = NewCloseCursorContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4375)
			p.Match(MySqlParserCLOSE)
		}
		{
			p.SetState(4376)
			p.Uid()
		}

	case MySqlParserFETCH:
		localctx = NewFetchCursorContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4377)
			p.Match(MySqlParserFETCH)
		}
		p.SetState(4382)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 626, p.GetParserRuleContext()) == 1 {
			p.SetState(4379)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserNEXT {
				{
					p.SetState(4378)
					p.Match(MySqlParserNEXT)
				}

			}
			{
				p.SetState(4381)
				p.Match(MySqlParserFROM)
			}

		}
		{
			p.SetState(4384)
			p.Uid()
		}
		{
			p.SetState(4385)
			p.Match(MySqlParserINTO)
		}
		{
			p.SetState(4386)
			p.UidList()
		}

	case MySqlParserOPEN:
		localctx = NewOpenCursorContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4388)
			p.Match(MySqlParserOPEN)
		}
		{
			p.SetState(4389)
			p.Uid()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IDeclareVariableContext is an interface to support dynamic dispatch.
type IDeclareVariableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDeclareVariableContext differentiates from other interfaces.
	IsDeclareVariableContext()
}

type DeclareVariableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDeclareVariableContext() *DeclareVariableContext {
	var p = new(DeclareVariableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_declareVariable
	return p
}

func (*DeclareVariableContext) IsDeclareVariableContext() {}

func NewDeclareVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeclareVariableContext {
	var p = new(DeclareVariableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_declareVariable

	return p
}

func (s *DeclareVariableContext) GetParser() antlr.Parser { return s.parser }

func (s *DeclareVariableContext) DECLARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECLARE, 0)
}

func (s *DeclareVariableContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *DeclareVariableContext) DataType() IDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeContext)
}

func (s *DeclareVariableContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *DeclareVariableContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *DeclareVariableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeclareVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeclareVariableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeclareVariable(s)
	}
}

func (s *DeclareVariableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeclareVariable(s)
	}
}

func (p *MySqlParser) DeclareVariable() (localctx IDeclareVariableContext) {
	this := p
	_ = this

	localctx = NewDeclareVariableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 376, MySqlParserRULE_declareVariable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4392)
		p.Match(MySqlParserDECLARE)
	}
	{
		p.SetState(4393)
		p.UidList()
	}
	{
		p.SetState(4394)
		p.DataType()
	}
	p.SetState(4397)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserDEFAULT {
		{
			p.SetState(4395)
			p.Match(MySqlParserDEFAULT)
		}
		{
			p.SetState(4396)
			p.expression(0)
		}

	}

	return localctx
}

// IDeclareConditionContext is an interface to support dynamic dispatch.
type IDeclareConditionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDeclareConditionContext differentiates from other interfaces.
	IsDeclareConditionContext()
}

type DeclareConditionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDeclareConditionContext() *DeclareConditionContext {
	var p = new(DeclareConditionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_declareCondition
	return p
}

func (*DeclareConditionContext) IsDeclareConditionContext() {}

func NewDeclareConditionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeclareConditionContext {
	var p = new(DeclareConditionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_declareCondition

	return p
}

func (s *DeclareConditionContext) GetParser() antlr.Parser { return s.parser }

func (s *DeclareConditionContext) DECLARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECLARE, 0)
}

func (s *DeclareConditionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DeclareConditionContext) CONDITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONDITION, 0)
}

func (s *DeclareConditionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *DeclareConditionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *DeclareConditionContext) SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLSTATE, 0)
}

func (s *DeclareConditionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *DeclareConditionContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *DeclareConditionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeclareConditionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeclareConditionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeclareCondition(s)
	}
}

func (s *DeclareConditionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeclareCondition(s)
	}
}

func (p *MySqlParser) DeclareCondition() (localctx IDeclareConditionContext) {
	this := p
	_ = this

	localctx = NewDeclareConditionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 378, MySqlParserRULE_declareCondition)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4399)
		p.Match(MySqlParserDECLARE)
	}
	{
		p.SetState(4400)
		p.Uid()
	}
	{
		p.SetState(4401)
		p.Match(MySqlParserCONDITION)
	}
	{
		p.SetState(4402)
		p.Match(MySqlParserFOR)
	}
	p.SetState(4409)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
		{
			p.SetState(4403)
			p.DecimalLiteral()
		}

	case MySqlParserSQLSTATE:
		{
			p.SetState(4404)
			p.Match(MySqlParserSQLSTATE)
		}
		p.SetState(4406)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVALUE {
			{
				p.SetState(4405)
				p.Match(MySqlParserVALUE)
			}

		}
		{
			p.SetState(4408)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IDeclareCursorContext is an interface to support dynamic dispatch.
type IDeclareCursorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDeclareCursorContext differentiates from other interfaces.
	IsDeclareCursorContext()
}

type DeclareCursorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDeclareCursorContext() *DeclareCursorContext {
	var p = new(DeclareCursorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_declareCursor
	return p
}

func (*DeclareCursorContext) IsDeclareCursorContext() {}

func NewDeclareCursorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeclareCursorContext {
	var p = new(DeclareCursorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_declareCursor

	return p
}

func (s *DeclareCursorContext) GetParser() antlr.Parser { return s.parser }

func (s *DeclareCursorContext) DECLARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECLARE, 0)
}

func (s *DeclareCursorContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DeclareCursorContext) CURSOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURSOR, 0)
}

func (s *DeclareCursorContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *DeclareCursorContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *DeclareCursorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeclareCursorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeclareCursorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeclareCursor(s)
	}
}

func (s *DeclareCursorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeclareCursor(s)
	}
}

func (p *MySqlParser) DeclareCursor() (localctx IDeclareCursorContext) {
	this := p
	_ = this

	localctx = NewDeclareCursorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 380, MySqlParserRULE_declareCursor)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4411)
		p.Match(MySqlParserDECLARE)
	}
	{
		p.SetState(4412)
		p.Uid()
	}
	{
		p.SetState(4413)
		p.Match(MySqlParserCURSOR)
	}
	{
		p.SetState(4414)
		p.Match(MySqlParserFOR)
	}
	{
		p.SetState(4415)
		p.SelectStatement()
	}

	return localctx
}

// IDeclareHandlerContext is an interface to support dynamic dispatch.
type IDeclareHandlerContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetHandlerAction returns the handlerAction token.
	GetHandlerAction() antlr.Token

	// SetHandlerAction sets the handlerAction token.
	SetHandlerAction(antlr.Token)

	// IsDeclareHandlerContext differentiates from other interfaces.
	IsDeclareHandlerContext()
}

type DeclareHandlerContext struct {
	*antlr.BaseParserRuleContext
	parser        antlr.Parser
	handlerAction antlr.Token
}

func NewEmptyDeclareHandlerContext() *DeclareHandlerContext {
	var p = new(DeclareHandlerContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_declareHandler
	return p
}

func (*DeclareHandlerContext) IsDeclareHandlerContext() {}

func NewDeclareHandlerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeclareHandlerContext {
	var p = new(DeclareHandlerContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_declareHandler

	return p
}

func (s *DeclareHandlerContext) GetParser() antlr.Parser { return s.parser }

func (s *DeclareHandlerContext) GetHandlerAction() antlr.Token { return s.handlerAction }

func (s *DeclareHandlerContext) SetHandlerAction(v antlr.Token) { s.handlerAction = v }

func (s *DeclareHandlerContext) DECLARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECLARE, 0)
}

func (s *DeclareHandlerContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *DeclareHandlerContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *DeclareHandlerContext) AllHandlerConditionValue() []IHandlerConditionValueContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IHandlerConditionValueContext)(nil)).Elem())
	var tst = make([]IHandlerConditionValueContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IHandlerConditionValueContext)
		}
	}

	return tst
}

func (s *DeclareHandlerContext) HandlerConditionValue(i int) IHandlerConditionValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHandlerConditionValueContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IHandlerConditionValueContext)
}

func (s *DeclareHandlerContext) RoutineBody() IRoutineBodyContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoutineBodyContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoutineBodyContext)
}

func (s *DeclareHandlerContext) CONTINUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTINUE, 0)
}

func (s *DeclareHandlerContext) EXIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXIT, 0)
}

func (s *DeclareHandlerContext) UNDO() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDO, 0)
}

func (s *DeclareHandlerContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *DeclareHandlerContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *DeclareHandlerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DeclareHandlerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DeclareHandlerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDeclareHandler(s)
	}
}

func (s *DeclareHandlerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDeclareHandler(s)
	}
}

func (p *MySqlParser) DeclareHandler() (localctx IDeclareHandlerContext) {
	this := p
	_ = this

	localctx = NewDeclareHandlerContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 382, MySqlParserRULE_declareHandler)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4417)
		p.Match(MySqlParserDECLARE)
	}
	{
		p.SetState(4418)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*DeclareHandlerContext).handlerAction = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserCONTINUE || _la == MySqlParserEXIT || _la == MySqlParserUNDO) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*DeclareHandlerContext).handlerAction = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(4419)
		p.Match(MySqlParserHANDLER)
	}
	{
		p.SetState(4420)
		p.Match(MySqlParserFOR)
	}
	{
		p.SetState(4421)
		p.HandlerConditionValue()
	}
	p.SetState(4426)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(4422)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4423)
			p.HandlerConditionValue()
		}

		p.SetState(4428)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(4429)
		p.RoutineBody()
	}

	return localctx
}

// IHandlerConditionValueContext is an interface to support dynamic dispatch.
type IHandlerConditionValueContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHandlerConditionValueContext differentiates from other interfaces.
	IsHandlerConditionValueContext()
}

type HandlerConditionValueContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHandlerConditionValueContext() *HandlerConditionValueContext {
	var p = new(HandlerConditionValueContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_handlerConditionValue
	return p
}

func (*HandlerConditionValueContext) IsHandlerConditionValueContext() {}

func NewHandlerConditionValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandlerConditionValueContext {
	var p = new(HandlerConditionValueContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_handlerConditionValue

	return p
}

func (s *HandlerConditionValueContext) GetParser() antlr.Parser { return s.parser }

func (s *HandlerConditionValueContext) CopyFrom(ctx *HandlerConditionValueContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *HandlerConditionValueContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type HandlerConditionWarningContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionWarningContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionWarningContext {
	var p = new(HandlerConditionWarningContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionWarningContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionWarningContext) SQLWARNING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLWARNING, 0)
}

func (s *HandlerConditionWarningContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionWarning(s)
	}
}

func (s *HandlerConditionWarningContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionWarning(s)
	}
}

type HandlerConditionCodeContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionCodeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionCodeContext {
	var p = new(HandlerConditionCodeContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionCodeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionCodeContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *HandlerConditionCodeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionCode(s)
	}
}

func (s *HandlerConditionCodeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionCode(s)
	}
}

type HandlerConditionNotfoundContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionNotfoundContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionNotfoundContext {
	var p = new(HandlerConditionNotfoundContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionNotfoundContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionNotfoundContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *HandlerConditionNotfoundContext) FOUND() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOUND, 0)
}

func (s *HandlerConditionNotfoundContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionNotfound(s)
	}
}

func (s *HandlerConditionNotfoundContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionNotfound(s)
	}
}

type HandlerConditionStateContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionStateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionStateContext {
	var p = new(HandlerConditionStateContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionStateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionStateContext) SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLSTATE, 0)
}

func (s *HandlerConditionStateContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *HandlerConditionStateContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *HandlerConditionStateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionState(s)
	}
}

func (s *HandlerConditionStateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionState(s)
	}
}

type HandlerConditionExceptionContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionExceptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionExceptionContext {
	var p = new(HandlerConditionExceptionContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionExceptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionExceptionContext) SQLEXCEPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLEXCEPTION, 0)
}

func (s *HandlerConditionExceptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionException(s)
	}
}

func (s *HandlerConditionExceptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionException(s)
	}
}

type HandlerConditionNameContext struct {
	*HandlerConditionValueContext
}

func NewHandlerConditionNameContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HandlerConditionNameContext {
	var p = new(HandlerConditionNameContext)

	p.HandlerConditionValueContext = NewEmptyHandlerConditionValueContext()
	p.parser = parser
	p.CopyFrom(ctx.(*HandlerConditionValueContext))

	return p
}

func (s *HandlerConditionNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HandlerConditionNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *HandlerConditionNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHandlerConditionName(s)
	}
}

func (s *HandlerConditionNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHandlerConditionName(s)
	}
}

func (p *MySqlParser) HandlerConditionValue() (localctx IHandlerConditionValueContext) {
	this := p
	_ = this

	localctx = NewHandlerConditionValueContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 384, MySqlParserRULE_handlerConditionValue)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4442)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
		localctx = NewHandlerConditionCodeContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4431)
			p.DecimalLiteral()
		}

	case MySqlParserSQLSTATE:
		localctx = NewHandlerConditionStateContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4432)
			p.Match(MySqlParserSQLSTATE)
		}
		p.SetState(4434)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVALUE {
			{
				p.SetState(4433)
				p.Match(MySqlParserVALUE)
			}

		}
		{
			p.SetState(4436)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		localctx = NewHandlerConditionNameContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4437)
			p.Uid()
		}

	case MySqlParserSQLWARNING:
		localctx = NewHandlerConditionWarningContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4438)
			p.Match(MySqlParserSQLWARNING)
		}

	case MySqlParserNOT:
		localctx = NewHandlerConditionNotfoundContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4439)
			p.Match(MySqlParserNOT)
		}
		{
			p.SetState(4440)
			p.Match(MySqlParserFOUND)
		}

	case MySqlParserSQLEXCEPTION:
		localctx = NewHandlerConditionExceptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(4441)
			p.Match(MySqlParserSQLEXCEPTION)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IProcedureSqlStatementContext is an interface to support dynamic dispatch.
type IProcedureSqlStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsProcedureSqlStatementContext differentiates from other interfaces.
	IsProcedureSqlStatementContext()
}

type ProcedureSqlStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyProcedureSqlStatementContext() *ProcedureSqlStatementContext {
	var p = new(ProcedureSqlStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_procedureSqlStatement
	return p
}

func (*ProcedureSqlStatementContext) IsProcedureSqlStatementContext() {}

func NewProcedureSqlStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureSqlStatementContext {
	var p = new(ProcedureSqlStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_procedureSqlStatement

	return p
}

func (s *ProcedureSqlStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ProcedureSqlStatementContext) SEMI() antlr.TerminalNode {
	return s.GetToken(MySqlParserSEMI, 0)
}

func (s *ProcedureSqlStatementContext) CompoundStatement() ICompoundStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICompoundStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICompoundStatementContext)
}

func (s *ProcedureSqlStatementContext) SqlStatement() ISqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISqlStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISqlStatementContext)
}

func (s *ProcedureSqlStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ProcedureSqlStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ProcedureSqlStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterProcedureSqlStatement(s)
	}
}

func (s *ProcedureSqlStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitProcedureSqlStatement(s)
	}
}

func (p *MySqlParser) ProcedureSqlStatement() (localctx IProcedureSqlStatementContext) {
	this := p
	_ = this

	localctx = NewProcedureSqlStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 386, MySqlParserRULE_procedureSqlStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(4446)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 634, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(4444)
			p.CompoundStatement()
		}

	case 2:
		{
			p.SetState(4445)
			p.SqlStatement()
		}

	}
	{
		p.SetState(4448)
		p.Match(MySqlParserSEMI)
	}

	return localctx
}

// ICaseAlternativeContext is an interface to support dynamic dispatch.
type ICaseAlternativeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCaseAlternativeContext differentiates from other interfaces.
	IsCaseAlternativeContext()
}

type CaseAlternativeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCaseAlternativeContext() *CaseAlternativeContext {
	var p = new(CaseAlternativeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_caseAlternative
	return p
}

func (*CaseAlternativeContext) IsCaseAlternativeContext() {}

func NewCaseAlternativeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseAlternativeContext {
	var p = new(CaseAlternativeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_caseAlternative

	return p
}

func (s *CaseAlternativeContext) GetParser() antlr.Parser { return s.parser }

func (s *CaseAlternativeContext) WHEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHEN, 0)
}

func (s *CaseAlternativeContext) THEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHEN, 0)
}

func (s *CaseAlternativeContext) Constant() IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *CaseAlternativeContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *CaseAlternativeContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *CaseAlternativeContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *CaseAlternativeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CaseAlternativeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CaseAlternativeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCaseAlternative(s)
	}
}

func (s *CaseAlternativeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCaseAlternative(s)
	}
}

func (p *MySqlParser) CaseAlternative() (localctx ICaseAlternativeContext) {
	this := p
	_ = this

	localctx = NewCaseAlternativeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 388, MySqlParserRULE_caseAlternative)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4450)
		p.Match(MySqlParserWHEN)
	}
	p.SetState(4453)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 635, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(4451)
			p.Constant()
		}

	case 2:
		{
			p.SetState(4452)
			p.expression(0)
		}

	}
	{
		p.SetState(4455)
		p.Match(MySqlParserTHEN)
	}
	p.SetState(4457)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4456)
				p.ProcedureSqlStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4459)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 636, p.GetParserRuleContext())
	}

	return localctx
}

// IElifAlternativeContext is an interface to support dynamic dispatch.
type IElifAlternativeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsElifAlternativeContext differentiates from other interfaces.
	IsElifAlternativeContext()
}

type ElifAlternativeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyElifAlternativeContext() *ElifAlternativeContext {
	var p = new(ElifAlternativeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_elifAlternative
	return p
}

func (*ElifAlternativeContext) IsElifAlternativeContext() {}

func NewElifAlternativeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElifAlternativeContext {
	var p = new(ElifAlternativeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_elifAlternative

	return p
}

func (s *ElifAlternativeContext) GetParser() antlr.Parser { return s.parser }

func (s *ElifAlternativeContext) ELSEIF() antlr.TerminalNode {
	return s.GetToken(MySqlParserELSEIF, 0)
}

func (s *ElifAlternativeContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ElifAlternativeContext) THEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHEN, 0)
}

func (s *ElifAlternativeContext) AllProcedureSqlStatement() []IProcedureSqlStatementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem())
	var tst = make([]IProcedureSqlStatementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IProcedureSqlStatementContext)
		}
	}

	return tst
}

func (s *ElifAlternativeContext) ProcedureSqlStatement(i int) IProcedureSqlStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IProcedureSqlStatementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IProcedureSqlStatementContext)
}

func (s *ElifAlternativeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ElifAlternativeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ElifAlternativeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterElifAlternative(s)
	}
}

func (s *ElifAlternativeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitElifAlternative(s)
	}
}

func (p *MySqlParser) ElifAlternative() (localctx IElifAlternativeContext) {
	this := p
	_ = this

	localctx = NewElifAlternativeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 390, MySqlParserRULE_elifAlternative)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4461)
		p.Match(MySqlParserELSEIF)
	}
	{
		p.SetState(4462)
		p.expression(0)
	}
	{
		p.SetState(4463)
		p.Match(MySqlParserTHEN)
	}
	p.SetState(4465)
	p.GetErrorHandler().Sync(p)
	_alt = 1
	for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		switch _alt {
		case 1:
			{
				p.SetState(4464)
				p.ProcedureSqlStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

		p.SetState(4467)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 637, p.GetParserRuleContext())
	}

	return localctx
}

// IAlterUserContext is an interface to support dynamic dispatch.
type IAlterUserContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAlterUserContext differentiates from other interfaces.
	IsAlterUserContext()
}

type AlterUserContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAlterUserContext() *AlterUserContext {
	var p = new(AlterUserContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_alterUser
	return p
}

func (*AlterUserContext) IsAlterUserContext() {}

func NewAlterUserContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AlterUserContext {
	var p = new(AlterUserContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_alterUser

	return p
}

func (s *AlterUserContext) GetParser() antlr.Parser { return s.parser }

func (s *AlterUserContext) CopyFrom(ctx *AlterUserContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *AlterUserContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterUserContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type AlterUserMysqlV56Context struct {
	*AlterUserContext
}

func NewAlterUserMysqlV56Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterUserMysqlV56Context {
	var p = new(AlterUserMysqlV56Context)

	p.AlterUserContext = NewEmptyAlterUserContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterUserContext))

	return p
}

func (s *AlterUserMysqlV56Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterUserMysqlV56Context) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterUserMysqlV56Context) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *AlterUserMysqlV56Context) AllUserSpecification() []IUserSpecificationContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserSpecificationContext)(nil)).Elem())
	var tst = make([]IUserSpecificationContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserSpecificationContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV56Context) UserSpecification(i int) IUserSpecificationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserSpecificationContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserSpecificationContext)
}

func (s *AlterUserMysqlV56Context) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterUserMysqlV56Context) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterUserMysqlV56Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterUserMysqlV56(s)
	}
}

func (s *AlterUserMysqlV56Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterUserMysqlV56(s)
	}
}

type AlterUserMysqlV57Context struct {
	*AlterUserContext
	tlsNone antlr.Token
}

func NewAlterUserMysqlV57Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *AlterUserMysqlV57Context {
	var p = new(AlterUserMysqlV57Context)

	p.AlterUserContext = NewEmptyAlterUserContext()
	p.parser = parser
	p.CopyFrom(ctx.(*AlterUserContext))

	return p
}

func (s *AlterUserMysqlV57Context) GetTlsNone() antlr.Token { return s.tlsNone }

func (s *AlterUserMysqlV57Context) SetTlsNone(v antlr.Token) { s.tlsNone = v }

func (s *AlterUserMysqlV57Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AlterUserMysqlV57Context) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *AlterUserMysqlV57Context) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *AlterUserMysqlV57Context) AllUserAuthOption() []IUserAuthOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem())
	var tst = make([]IUserAuthOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserAuthOptionContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV57Context) UserAuthOption(i int) IUserAuthOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserAuthOptionContext)
}

func (s *AlterUserMysqlV57Context) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *AlterUserMysqlV57Context) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AlterUserMysqlV57Context) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AlterUserMysqlV57Context) REQUIRE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREQUIRE, 0)
}

func (s *AlterUserMysqlV57Context) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *AlterUserMysqlV57Context) AllUserPasswordOption() []IUserPasswordOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserPasswordOptionContext)(nil)).Elem())
	var tst = make([]IUserPasswordOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserPasswordOptionContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV57Context) UserPasswordOption(i int) IUserPasswordOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserPasswordOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserPasswordOptionContext)
}

func (s *AlterUserMysqlV57Context) AllUserLockOption() []IUserLockOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserLockOptionContext)(nil)).Elem())
	var tst = make([]IUserLockOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserLockOptionContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV57Context) UserLockOption(i int) IUserLockOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserLockOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserLockOptionContext)
}

func (s *AlterUserMysqlV57Context) AllTlsOption() []ITlsOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem())
	var tst = make([]ITlsOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITlsOptionContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV57Context) TlsOption(i int) ITlsOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITlsOptionContext)
}

func (s *AlterUserMysqlV57Context) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *AlterUserMysqlV57Context) AllUserResourceOption() []IUserResourceOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem())
	var tst = make([]IUserResourceOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserResourceOptionContext)
		}
	}

	return tst
}

func (s *AlterUserMysqlV57Context) UserResourceOption(i int) IUserResourceOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserResourceOptionContext)
}

func (s *AlterUserMysqlV57Context) AllAND() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserAND)
}

func (s *AlterUserMysqlV57Context) AND(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, i)
}

func (s *AlterUserMysqlV57Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAlterUserMysqlV57(s)
	}
}

func (s *AlterUserMysqlV57Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAlterUserMysqlV57(s)
	}
}

func (p *MySqlParser) AlterUser() (localctx IAlterUserContext) {
	this := p
	_ = this

	localctx = NewAlterUserContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 392, MySqlParserRULE_alterUser)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4523)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 649, p.GetParserRuleContext()) {
	case 1:
		localctx = NewAlterUserMysqlV56Context(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4469)
			p.Match(MySqlParserALTER)
		}
		{
			p.SetState(4470)
			p.Match(MySqlParserUSER)
		}
		{
			p.SetState(4471)
			p.UserSpecification()
		}
		p.SetState(4476)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4472)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4473)
				p.UserSpecification()
			}

			p.SetState(4478)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewAlterUserMysqlV57Context(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4479)
			p.Match(MySqlParserALTER)
		}
		{
			p.SetState(4480)
			p.Match(MySqlParserUSER)
		}
		p.SetState(4482)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(4481)
				p.IfExists()
			}

		}
		{
			p.SetState(4484)
			p.UserAuthOption()
		}
		p.SetState(4489)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4485)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4486)
				p.UserAuthOption()
			}

			p.SetState(4491)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(4506)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserREQUIRE {
			{
				p.SetState(4492)
				p.Match(MySqlParserREQUIRE)
			}
			p.SetState(4504)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserNONE:
				{
					p.SetState(4493)

					var _m = p.Match(MySqlParserNONE)

					localctx.(*AlterUserMysqlV57Context).tlsNone = _m
				}

			case MySqlParserSSL, MySqlParserCIPHER, MySqlParserISSUER, MySqlParserSUBJECT, MySqlParserX509:
				{
					p.SetState(4494)
					p.TlsOption()
				}
				p.SetState(4501)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				for _la == MySqlParserAND || _la == MySqlParserSSL || _la == MySqlParserCIPHER || _la == MySqlParserISSUER || _la == MySqlParserSUBJECT || _la == MySqlParserX509 {
					p.SetState(4496)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)

					if _la == MySqlParserAND {
						{
							p.SetState(4495)
							p.Match(MySqlParserAND)
						}

					}
					{
						p.SetState(4498)
						p.TlsOption()
					}

					p.SetState(4503)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(4514)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(4508)
				p.Match(MySqlParserWITH)
			}
			p.SetState(4510)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for ok := true; ok; ok = (((_la-476)&-(0x1f+1)) == 0 && ((1<<uint((_la-476)))&((1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-476))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-476))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-476))|(1<<(MySqlParserMAX_USER_CONNECTIONS-476)))) != 0) {
				{
					p.SetState(4509)
					p.UserResourceOption()
				}

				p.SetState(4512)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(4520)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserACCOUNT || _la == MySqlParserPASSWORD {
			p.SetState(4518)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserPASSWORD:
				{
					p.SetState(4516)
					p.UserPasswordOption()
				}

			case MySqlParserACCOUNT:
				{
					p.SetState(4517)
					p.UserLockOption()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(4522)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// ICreateUserContext is an interface to support dynamic dispatch.
type ICreateUserContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCreateUserContext differentiates from other interfaces.
	IsCreateUserContext()
}

type CreateUserContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCreateUserContext() *CreateUserContext {
	var p = new(CreateUserContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createUser
	return p
}

func (*CreateUserContext) IsCreateUserContext() {}

func NewCreateUserContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateUserContext {
	var p = new(CreateUserContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createUser

	return p
}

func (s *CreateUserContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateUserContext) CopyFrom(ctx *CreateUserContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *CreateUserContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateUserContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type CreateUserMysqlV57Context struct {
	*CreateUserContext
	tlsNone antlr.Token
}

func NewCreateUserMysqlV57Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *CreateUserMysqlV57Context {
	var p = new(CreateUserMysqlV57Context)

	p.CreateUserContext = NewEmptyCreateUserContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateUserContext))

	return p
}

func (s *CreateUserMysqlV57Context) GetTlsNone() antlr.Token { return s.tlsNone }

func (s *CreateUserMysqlV57Context) SetTlsNone(v antlr.Token) { s.tlsNone = v }

func (s *CreateUserMysqlV57Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateUserMysqlV57Context) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateUserMysqlV57Context) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *CreateUserMysqlV57Context) AllUserAuthOption() []IUserAuthOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem())
	var tst = make([]IUserAuthOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserAuthOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV57Context) UserAuthOption(i int) IUserAuthOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserAuthOptionContext)
}

func (s *CreateUserMysqlV57Context) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *CreateUserMysqlV57Context) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateUserMysqlV57Context) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateUserMysqlV57Context) REQUIRE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREQUIRE, 0)
}

func (s *CreateUserMysqlV57Context) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *CreateUserMysqlV57Context) AllUserPasswordOption() []IUserPasswordOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserPasswordOptionContext)(nil)).Elem())
	var tst = make([]IUserPasswordOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserPasswordOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV57Context) UserPasswordOption(i int) IUserPasswordOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserPasswordOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserPasswordOptionContext)
}

func (s *CreateUserMysqlV57Context) AllUserLockOption() []IUserLockOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserLockOptionContext)(nil)).Elem())
	var tst = make([]IUserLockOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserLockOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV57Context) UserLockOption(i int) IUserLockOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserLockOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserLockOptionContext)
}

func (s *CreateUserMysqlV57Context) AllTlsOption() []ITlsOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem())
	var tst = make([]ITlsOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITlsOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV57Context) TlsOption(i int) ITlsOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITlsOptionContext)
}

func (s *CreateUserMysqlV57Context) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *CreateUserMysqlV57Context) AllUserResourceOption() []IUserResourceOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem())
	var tst = make([]IUserResourceOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserResourceOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV57Context) UserResourceOption(i int) IUserResourceOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserResourceOptionContext)
}

func (s *CreateUserMysqlV57Context) AllAND() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserAND)
}

func (s *CreateUserMysqlV57Context) AND(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, i)
}

func (s *CreateUserMysqlV57Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateUserMysqlV57(s)
	}
}

func (s *CreateUserMysqlV57Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateUserMysqlV57(s)
	}
}

type CreateUserMysqlV56Context struct {
	*CreateUserContext
}

func NewCreateUserMysqlV56Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *CreateUserMysqlV56Context {
	var p = new(CreateUserMysqlV56Context)

	p.CreateUserContext = NewEmptyCreateUserContext()
	p.parser = parser
	p.CopyFrom(ctx.(*CreateUserContext))

	return p
}

func (s *CreateUserMysqlV56Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateUserMysqlV56Context) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateUserMysqlV56Context) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *CreateUserMysqlV56Context) AllUserAuthOption() []IUserAuthOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem())
	var tst = make([]IUserAuthOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserAuthOptionContext)
		}
	}

	return tst
}

func (s *CreateUserMysqlV56Context) UserAuthOption(i int) IUserAuthOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserAuthOptionContext)
}

func (s *CreateUserMysqlV56Context) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CreateUserMysqlV56Context) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CreateUserMysqlV56Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateUserMysqlV56(s)
	}
}

func (s *CreateUserMysqlV56Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateUserMysqlV56(s)
	}
}

func (p *MySqlParser) CreateUser() (localctx ICreateUserContext) {
	this := p
	_ = this

	localctx = NewCreateUserContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 394, MySqlParserRULE_createUser)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4579)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 661, p.GetParserRuleContext()) {
	case 1:
		localctx = NewCreateUserMysqlV56Context(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4525)
			p.Match(MySqlParserCREATE)
		}
		{
			p.SetState(4526)
			p.Match(MySqlParserUSER)
		}
		{
			p.SetState(4527)
			p.UserAuthOption()
		}
		p.SetState(4532)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4528)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4529)
				p.UserAuthOption()
			}

			p.SetState(4534)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewCreateUserMysqlV57Context(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4535)
			p.Match(MySqlParserCREATE)
		}
		{
			p.SetState(4536)
			p.Match(MySqlParserUSER)
		}
		p.SetState(4538)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(4537)
				p.IfNotExists()
			}

		}
		{
			p.SetState(4540)
			p.UserAuthOption()
		}
		p.SetState(4545)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4541)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4542)
				p.UserAuthOption()
			}

			p.SetState(4547)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(4562)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserREQUIRE {
			{
				p.SetState(4548)
				p.Match(MySqlParserREQUIRE)
			}
			p.SetState(4560)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserNONE:
				{
					p.SetState(4549)

					var _m = p.Match(MySqlParserNONE)

					localctx.(*CreateUserMysqlV57Context).tlsNone = _m
				}

			case MySqlParserSSL, MySqlParserCIPHER, MySqlParserISSUER, MySqlParserSUBJECT, MySqlParserX509:
				{
					p.SetState(4550)
					p.TlsOption()
				}
				p.SetState(4557)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				for _la == MySqlParserAND || _la == MySqlParserSSL || _la == MySqlParserCIPHER || _la == MySqlParserISSUER || _la == MySqlParserSUBJECT || _la == MySqlParserX509 {
					p.SetState(4552)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)

					if _la == MySqlParserAND {
						{
							p.SetState(4551)
							p.Match(MySqlParserAND)
						}

					}
					{
						p.SetState(4554)
						p.TlsOption()
					}

					p.SetState(4559)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(4570)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(4564)
				p.Match(MySqlParserWITH)
			}
			p.SetState(4566)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for ok := true; ok; ok = (((_la-476)&-(0x1f+1)) == 0 && ((1<<uint((_la-476)))&((1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-476))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-476))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-476))|(1<<(MySqlParserMAX_USER_CONNECTIONS-476)))) != 0) {
				{
					p.SetState(4565)
					p.UserResourceOption()
				}

				p.SetState(4568)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(4576)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserACCOUNT || _la == MySqlParserPASSWORD {
			p.SetState(4574)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserPASSWORD:
				{
					p.SetState(4572)
					p.UserPasswordOption()
				}

			case MySqlParserACCOUNT:
				{
					p.SetState(4573)
					p.UserLockOption()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(4578)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IDropUserContext is an interface to support dynamic dispatch.
type IDropUserContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDropUserContext differentiates from other interfaces.
	IsDropUserContext()
}

type DropUserContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDropUserContext() *DropUserContext {
	var p = new(DropUserContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dropUser
	return p
}

func (*DropUserContext) IsDropUserContext() {}

func NewDropUserContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropUserContext {
	var p = new(DropUserContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dropUser

	return p
}

func (s *DropUserContext) GetParser() antlr.Parser { return s.parser }

func (s *DropUserContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *DropUserContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *DropUserContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *DropUserContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *DropUserContext) IfExists() IIfExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfExistsContext)
}

func (s *DropUserContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *DropUserContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *DropUserContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DropUserContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DropUserContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDropUser(s)
	}
}

func (s *DropUserContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDropUser(s)
	}
}

func (p *MySqlParser) DropUser() (localctx IDropUserContext) {
	this := p
	_ = this

	localctx = NewDropUserContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 396, MySqlParserRULE_dropUser)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4581)
		p.Match(MySqlParserDROP)
	}
	{
		p.SetState(4582)
		p.Match(MySqlParserUSER)
	}
	p.SetState(4584)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIF {
		{
			p.SetState(4583)
			p.IfExists()
		}

	}
	{
		p.SetState(4586)
		p.UserName()
	}
	p.SetState(4591)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(4587)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4588)
			p.UserName()
		}

		p.SetState(4593)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IGrantStatementContext is an interface to support dynamic dispatch.
type IGrantStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetPrivilegeObject returns the privilegeObject token.
	GetPrivilegeObject() antlr.Token

	// GetTlsNone returns the tlsNone token.
	GetTlsNone() antlr.Token

	// SetPrivilegeObject sets the privilegeObject token.
	SetPrivilegeObject(antlr.Token)

	// SetTlsNone sets the tlsNone token.
	SetTlsNone(antlr.Token)

	// IsGrantStatementContext differentiates from other interfaces.
	IsGrantStatementContext()
}

type GrantStatementContext struct {
	*antlr.BaseParserRuleContext
	parser          antlr.Parser
	privilegeObject antlr.Token
	tlsNone         antlr.Token
}

func NewEmptyGrantStatementContext() *GrantStatementContext {
	var p = new(GrantStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_grantStatement
	return p
}

func (*GrantStatementContext) IsGrantStatementContext() {}

func NewGrantStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GrantStatementContext {
	var p = new(GrantStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_grantStatement

	return p
}

func (s *GrantStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *GrantStatementContext) GetPrivilegeObject() antlr.Token { return s.privilegeObject }

func (s *GrantStatementContext) GetTlsNone() antlr.Token { return s.tlsNone }

func (s *GrantStatementContext) SetPrivilegeObject(v antlr.Token) { s.privilegeObject = v }

func (s *GrantStatementContext) SetTlsNone(v antlr.Token) { s.tlsNone = v }

func (s *GrantStatementContext) AllGRANT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserGRANT)
}

func (s *GrantStatementContext) GRANT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANT, i)
}

func (s *GrantStatementContext) AllPrivelegeClause() []IPrivelegeClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPrivelegeClauseContext)(nil)).Elem())
	var tst = make([]IPrivelegeClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPrivelegeClauseContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) PrivelegeClause(i int) IPrivelegeClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivelegeClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPrivelegeClauseContext)
}

func (s *GrantStatementContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *GrantStatementContext) PrivilegeLevel() IPrivilegeLevelContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivilegeLevelContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPrivilegeLevelContext)
}

func (s *GrantStatementContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *GrantStatementContext) AllUserAuthOption() []IUserAuthOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem())
	var tst = make([]IUserAuthOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserAuthOptionContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) UserAuthOption(i int) IUserAuthOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserAuthOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserAuthOptionContext)
}

func (s *GrantStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *GrantStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *GrantStatementContext) REQUIRE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREQUIRE, 0)
}

func (s *GrantStatementContext) AllWITH() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserWITH)
}

func (s *GrantStatementContext) WITH(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, i)
}

func (s *GrantStatementContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *GrantStatementContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *GrantStatementContext) ROLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLE, 0)
}

func (s *GrantStatementContext) RoleOption() IRoleOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRoleOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IRoleOptionContext)
}

func (s *GrantStatementContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *GrantStatementContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *GrantStatementContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *GrantStatementContext) AllTlsOption() []ITlsOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem())
	var tst = make([]ITlsOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITlsOptionContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) TlsOption(i int) ITlsOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITlsOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITlsOptionContext)
}

func (s *GrantStatementContext) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *GrantStatementContext) AllOPTION() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserOPTION)
}

func (s *GrantStatementContext) OPTION(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, i)
}

func (s *GrantStatementContext) AllUserResourceOption() []IUserResourceOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem())
	var tst = make([]IUserResourceOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserResourceOptionContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) UserResourceOption(i int) IUserResourceOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserResourceOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserResourceOptionContext)
}

func (s *GrantStatementContext) AllAND() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserAND)
}

func (s *GrantStatementContext) AND(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, i)
}

func (s *GrantStatementContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *GrantStatementContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *GrantStatementContext) ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserADMIN, 0)
}

func (s *GrantStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GrantStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *GrantStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGrantStatement(s)
	}
}

func (s *GrantStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGrantStatement(s)
	}
}

func (p *MySqlParser) GrantStatement() (localctx IGrantStatementContext) {
	this := p
	_ = this

	localctx = NewGrantStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 398, MySqlParserRULE_grantStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(4687)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 682, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4594)
			p.Match(MySqlParserGRANT)
		}
		{
			p.SetState(4595)
			p.PrivelegeClause()
		}
		p.SetState(4600)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4596)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4597)
				p.PrivelegeClause()
			}

			p.SetState(4602)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(4603)
			p.Match(MySqlParserON)
		}
		p.SetState(4605)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 665, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(4604)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*GrantStatementContext).privilegeObject = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserPROCEDURE || _la == MySqlParserTABLE || _la == MySqlParserFUNCTION) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*GrantStatementContext).privilegeObject = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(4607)
			p.PrivilegeLevel()
		}
		{
			p.SetState(4608)
			p.Match(MySqlParserTO)
		}
		{
			p.SetState(4609)
			p.UserAuthOption()
		}
		p.SetState(4614)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4610)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4611)
				p.UserAuthOption()
			}

			p.SetState(4616)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(4631)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserREQUIRE {
			{
				p.SetState(4617)
				p.Match(MySqlParserREQUIRE)
			}
			p.SetState(4629)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserNONE:
				{
					p.SetState(4618)

					var _m = p.Match(MySqlParserNONE)

					localctx.(*GrantStatementContext).tlsNone = _m
				}

			case MySqlParserSSL, MySqlParserCIPHER, MySqlParserISSUER, MySqlParserSUBJECT, MySqlParserX509:
				{
					p.SetState(4619)
					p.TlsOption()
				}
				p.SetState(4626)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				for _la == MySqlParserAND || _la == MySqlParserSSL || _la == MySqlParserCIPHER || _la == MySqlParserISSUER || _la == MySqlParserSUBJECT || _la == MySqlParserX509 {
					p.SetState(4621)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)

					if _la == MySqlParserAND {
						{
							p.SetState(4620)
							p.Match(MySqlParserAND)
						}

					}
					{
						p.SetState(4623)
						p.TlsOption()
					}

					p.SetState(4628)
					p.GetErrorHandler().Sync(p)
					_la = p.GetTokenStream().LA(1)
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

		}
		p.SetState(4642)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(4633)
				p.Match(MySqlParserWITH)
			}
			p.SetState(4639)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 672, p.GetParserRuleContext())

			for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
				if _alt == 1 {
					p.SetState(4637)
					p.GetErrorHandler().Sync(p)

					switch p.GetTokenStream().LA(1) {
					case MySqlParserGRANT:
						{
							p.SetState(4634)
							p.Match(MySqlParserGRANT)
						}
						{
							p.SetState(4635)
							p.Match(MySqlParserOPTION)
						}

					case MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS:
						{
							p.SetState(4636)
							p.UserResourceOption()
						}

					default:
						panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
					}

				}
				p.SetState(4641)
				p.GetErrorHandler().Sync(p)
				_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 672, p.GetParserRuleContext())
			}

		}
		p.SetState(4650)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(4644)
				p.Match(MySqlParserAS)
			}
			{
				p.SetState(4645)
				p.UserName()
			}
			{
				p.SetState(4646)
				p.Match(MySqlParserWITH)
			}
			{
				p.SetState(4647)
				p.Match(MySqlParserROLE)
			}
			{
				p.SetState(4648)
				p.RoleOption()
			}

		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4652)
			p.Match(MySqlParserGRANT)
		}
		p.SetState(4655)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 675, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(4653)
				p.UserName()
			}

		case 2:
			{
				p.SetState(4654)
				p.Uid()
			}

		}
		p.SetState(4664)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4657)
				p.Match(MySqlParserCOMMA)
			}
			p.SetState(4660)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 676, p.GetParserRuleContext()) {
			case 1:
				{
					p.SetState(4658)
					p.UserName()
				}

			case 2:
				{
					p.SetState(4659)
					p.Uid()
				}

			}

			p.SetState(4666)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(4667)
			p.Match(MySqlParserTO)
		}
		p.SetState(4670)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 678, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(4668)
				p.UserName()
			}

		case 2:
			{
				p.SetState(4669)
				p.Uid()
			}

		}
		p.SetState(4679)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4672)
				p.Match(MySqlParserCOMMA)
			}
			p.SetState(4675)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 679, p.GetParserRuleContext()) {
			case 1:
				{
					p.SetState(4673)
					p.UserName()
				}

			case 2:
				{
					p.SetState(4674)
					p.Uid()
				}

			}

			p.SetState(4681)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(4685)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(4682)
				p.Match(MySqlParserWITH)
			}
			{
				p.SetState(4683)
				p.Match(MySqlParserADMIN)
			}
			{
				p.SetState(4684)
				p.Match(MySqlParserOPTION)
			}

		}

	}

	return localctx
}

// IRoleOptionContext is an interface to support dynamic dispatch.
type IRoleOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRoleOptionContext differentiates from other interfaces.
	IsRoleOptionContext()
}

type RoleOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRoleOptionContext() *RoleOptionContext {
	var p = new(RoleOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_roleOption
	return p
}

func (*RoleOptionContext) IsRoleOptionContext() {}

func NewRoleOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RoleOptionContext {
	var p = new(RoleOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_roleOption

	return p
}

func (s *RoleOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *RoleOptionContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *RoleOptionContext) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *RoleOptionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *RoleOptionContext) EXCEPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCEPT, 0)
}

func (s *RoleOptionContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *RoleOptionContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *RoleOptionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RoleOptionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RoleOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoleOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RoleOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoleOption(s)
	}
}

func (s *RoleOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoleOption(s)
	}
}

func (p *MySqlParser) RoleOption() (localctx IRoleOptionContext) {
	this := p
	_ = this

	localctx = NewRoleOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 400, MySqlParserRULE_roleOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4711)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDEFAULT:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4689)
			p.Match(MySqlParserDEFAULT)
		}

	case MySqlParserNONE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4690)
			p.Match(MySqlParserNONE)
		}

	case MySqlParserALL:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4691)
			p.Match(MySqlParserALL)
		}
		p.SetState(4701)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserEXCEPT {
			{
				p.SetState(4692)
				p.Match(MySqlParserEXCEPT)
			}
			{
				p.SetState(4693)
				p.UserName()
			}
			p.SetState(4698)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(4694)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(4695)
					p.UserName()
				}

				p.SetState(4700)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}

	case MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserSTRING_USER_NAME:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4703)
			p.UserName()
		}
		p.SetState(4708)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4704)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4705)
				p.UserName()
			}

			p.SetState(4710)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IGrantProxyContext is an interface to support dynamic dispatch.
type IGrantProxyContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetFromFirst returns the fromFirst rule contexts.
	GetFromFirst() IUserNameContext

	// GetToFirst returns the toFirst rule contexts.
	GetToFirst() IUserNameContext

	// Get_userName returns the _userName rule contexts.
	Get_userName() IUserNameContext

	// SetFromFirst sets the fromFirst rule contexts.
	SetFromFirst(IUserNameContext)

	// SetToFirst sets the toFirst rule contexts.
	SetToFirst(IUserNameContext)

	// Set_userName sets the _userName rule contexts.
	Set_userName(IUserNameContext)

	// GetToOther returns the toOther rule context list.
	GetToOther() []IUserNameContext

	// SetToOther sets the toOther rule context list.
	SetToOther([]IUserNameContext)

	// IsGrantProxyContext differentiates from other interfaces.
	IsGrantProxyContext()
}

type GrantProxyContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	fromFirst IUserNameContext
	toFirst   IUserNameContext
	_userName IUserNameContext
	toOther   []IUserNameContext
}

func NewEmptyGrantProxyContext() *GrantProxyContext {
	var p = new(GrantProxyContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_grantProxy
	return p
}

func (*GrantProxyContext) IsGrantProxyContext() {}

func NewGrantProxyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GrantProxyContext {
	var p = new(GrantProxyContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_grantProxy

	return p
}

func (s *GrantProxyContext) GetParser() antlr.Parser { return s.parser }

func (s *GrantProxyContext) GetFromFirst() IUserNameContext { return s.fromFirst }

func (s *GrantProxyContext) GetToFirst() IUserNameContext { return s.toFirst }

func (s *GrantProxyContext) Get_userName() IUserNameContext { return s._userName }

func (s *GrantProxyContext) SetFromFirst(v IUserNameContext) { s.fromFirst = v }

func (s *GrantProxyContext) SetToFirst(v IUserNameContext) { s.toFirst = v }

func (s *GrantProxyContext) Set_userName(v IUserNameContext) { s._userName = v }

func (s *GrantProxyContext) GetToOther() []IUserNameContext { return s.toOther }

func (s *GrantProxyContext) SetToOther(v []IUserNameContext) { s.toOther = v }

func (s *GrantProxyContext) AllGRANT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserGRANT)
}

func (s *GrantProxyContext) GRANT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANT, i)
}

func (s *GrantProxyContext) PROXY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROXY, 0)
}

func (s *GrantProxyContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *GrantProxyContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *GrantProxyContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *GrantProxyContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *GrantProxyContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *GrantProxyContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *GrantProxyContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *GrantProxyContext) OPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, 0)
}

func (s *GrantProxyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GrantProxyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *GrantProxyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGrantProxy(s)
	}
}

func (s *GrantProxyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGrantProxy(s)
	}
}

func (p *MySqlParser) GrantProxy() (localctx IGrantProxyContext) {
	this := p
	_ = this

	localctx = NewGrantProxyContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 402, MySqlParserRULE_grantProxy)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4713)
		p.Match(MySqlParserGRANT)
	}
	{
		p.SetState(4714)
		p.Match(MySqlParserPROXY)
	}
	{
		p.SetState(4715)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(4716)

		var _x = p.UserName()

		localctx.(*GrantProxyContext).fromFirst = _x
	}
	{
		p.SetState(4717)
		p.Match(MySqlParserTO)
	}
	{
		p.SetState(4718)

		var _x = p.UserName()

		localctx.(*GrantProxyContext).toFirst = _x
	}
	p.SetState(4723)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(4719)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4720)

			var _x = p.UserName()

			localctx.(*GrantProxyContext)._userName = _x
		}
		localctx.(*GrantProxyContext).toOther = append(localctx.(*GrantProxyContext).toOther, localctx.(*GrantProxyContext)._userName)

		p.SetState(4725)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(4729)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserWITH {
		{
			p.SetState(4726)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(4727)
			p.Match(MySqlParserGRANT)
		}
		{
			p.SetState(4728)
			p.Match(MySqlParserOPTION)
		}

	}

	return localctx
}

// IRenameUserContext is an interface to support dynamic dispatch.
type IRenameUserContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRenameUserContext differentiates from other interfaces.
	IsRenameUserContext()
}

type RenameUserContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRenameUserContext() *RenameUserContext {
	var p = new(RenameUserContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_renameUser
	return p
}

func (*RenameUserContext) IsRenameUserContext() {}

func NewRenameUserContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RenameUserContext {
	var p = new(RenameUserContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_renameUser

	return p
}

func (s *RenameUserContext) GetParser() antlr.Parser { return s.parser }

func (s *RenameUserContext) RENAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRENAME, 0)
}

func (s *RenameUserContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *RenameUserContext) AllRenameUserClause() []IRenameUserClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IRenameUserClauseContext)(nil)).Elem())
	var tst = make([]IRenameUserClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IRenameUserClauseContext)
		}
	}

	return tst
}

func (s *RenameUserContext) RenameUserClause(i int) IRenameUserClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IRenameUserClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IRenameUserClauseContext)
}

func (s *RenameUserContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RenameUserContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RenameUserContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RenameUserContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RenameUserContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRenameUser(s)
	}
}

func (s *RenameUserContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRenameUser(s)
	}
}

func (p *MySqlParser) RenameUser() (localctx IRenameUserContext) {
	this := p
	_ = this

	localctx = NewRenameUserContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 404, MySqlParserRULE_renameUser)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4731)
		p.Match(MySqlParserRENAME)
	}
	{
		p.SetState(4732)
		p.Match(MySqlParserUSER)
	}
	{
		p.SetState(4733)
		p.RenameUserClause()
	}
	p.SetState(4738)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(4734)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4735)
			p.RenameUserClause()
		}

		p.SetState(4740)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IRevokeStatementContext is an interface to support dynamic dispatch.
type IRevokeStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsRevokeStatementContext differentiates from other interfaces.
	IsRevokeStatementContext()
}

type RevokeStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyRevokeStatementContext() *RevokeStatementContext {
	var p = new(RevokeStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_revokeStatement
	return p
}

func (*RevokeStatementContext) IsRevokeStatementContext() {}

func NewRevokeStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RevokeStatementContext {
	var p = new(RevokeStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_revokeStatement

	return p
}

func (s *RevokeStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *RevokeStatementContext) CopyFrom(ctx *RevokeStatementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *RevokeStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RevokeStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type DetailRevokeContext struct {
	*RevokeStatementContext
	privilegeObject antlr.Token
}

func NewDetailRevokeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DetailRevokeContext {
	var p = new(DetailRevokeContext)

	p.RevokeStatementContext = NewEmptyRevokeStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RevokeStatementContext))

	return p
}

func (s *DetailRevokeContext) GetPrivilegeObject() antlr.Token { return s.privilegeObject }

func (s *DetailRevokeContext) SetPrivilegeObject(v antlr.Token) { s.privilegeObject = v }

func (s *DetailRevokeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DetailRevokeContext) REVOKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVOKE, 0)
}

func (s *DetailRevokeContext) AllPrivelegeClause() []IPrivelegeClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPrivelegeClauseContext)(nil)).Elem())
	var tst = make([]IPrivelegeClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPrivelegeClauseContext)
		}
	}

	return tst
}

func (s *DetailRevokeContext) PrivelegeClause(i int) IPrivelegeClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivelegeClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPrivelegeClauseContext)
}

func (s *DetailRevokeContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *DetailRevokeContext) PrivilegeLevel() IPrivilegeLevelContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivilegeLevelContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPrivilegeLevelContext)
}

func (s *DetailRevokeContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *DetailRevokeContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *DetailRevokeContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *DetailRevokeContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *DetailRevokeContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *DetailRevokeContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *DetailRevokeContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *DetailRevokeContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *DetailRevokeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDetailRevoke(s)
	}
}

func (s *DetailRevokeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDetailRevoke(s)
	}
}

type RoleRevokeContext struct {
	*RevokeStatementContext
}

func NewRoleRevokeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RoleRevokeContext {
	var p = new(RoleRevokeContext)

	p.RevokeStatementContext = NewEmptyRevokeStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RevokeStatementContext))

	return p
}

func (s *RoleRevokeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RoleRevokeContext) REVOKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVOKE, 0)
}

func (s *RoleRevokeContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *RoleRevokeContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *RoleRevokeContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *RoleRevokeContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *RoleRevokeContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *RoleRevokeContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RoleRevokeContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RoleRevokeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRoleRevoke(s)
	}
}

func (s *RoleRevokeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRoleRevoke(s)
	}
}

type ShortRevokeContext struct {
	*RevokeStatementContext
}

func NewShortRevokeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShortRevokeContext {
	var p = new(ShortRevokeContext)

	p.RevokeStatementContext = NewEmptyRevokeStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*RevokeStatementContext))

	return p
}

func (s *ShortRevokeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShortRevokeContext) REVOKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVOKE, 0)
}

func (s *ShortRevokeContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *ShortRevokeContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ShortRevokeContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ShortRevokeContext) GRANT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANT, 0)
}

func (s *ShortRevokeContext) OPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, 0)
}

func (s *ShortRevokeContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *ShortRevokeContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *ShortRevokeContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *ShortRevokeContext) PRIVILEGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIVILEGES, 0)
}

func (s *ShortRevokeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShortRevoke(s)
	}
}

func (s *ShortRevokeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShortRevoke(s)
	}
}

func (p *MySqlParser) RevokeStatement() (localctx IRevokeStatementContext) {
	this := p
	_ = this

	localctx = NewRevokeStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 406, MySqlParserRULE_revokeStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4805)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 699, p.GetParserRuleContext()) {
	case 1:
		localctx = NewDetailRevokeContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4741)
			p.Match(MySqlParserREVOKE)
		}
		{
			p.SetState(4742)
			p.PrivelegeClause()
		}
		p.SetState(4747)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4743)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4744)
				p.PrivelegeClause()
			}

			p.SetState(4749)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(4750)
			p.Match(MySqlParserON)
		}
		p.SetState(4752)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 691, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(4751)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*DetailRevokeContext).privilegeObject = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserPROCEDURE || _la == MySqlParserTABLE || _la == MySqlParserFUNCTION) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*DetailRevokeContext).privilegeObject = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(4754)
			p.PrivilegeLevel()
		}
		{
			p.SetState(4755)
			p.Match(MySqlParserFROM)
		}
		{
			p.SetState(4756)
			p.UserName()
		}
		p.SetState(4761)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4757)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4758)
				p.UserName()
			}

			p.SetState(4763)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewShortRevokeContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4764)
			p.Match(MySqlParserREVOKE)
		}
		{
			p.SetState(4765)
			p.Match(MySqlParserALL)
		}
		p.SetState(4767)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPRIVILEGES {
			{
				p.SetState(4766)
				p.Match(MySqlParserPRIVILEGES)
			}

		}
		{
			p.SetState(4769)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4770)
			p.Match(MySqlParserGRANT)
		}
		{
			p.SetState(4771)
			p.Match(MySqlParserOPTION)
		}
		{
			p.SetState(4772)
			p.Match(MySqlParserFROM)
		}
		{
			p.SetState(4773)
			p.UserName()
		}
		p.SetState(4778)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4774)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4775)
				p.UserName()
			}

			p.SetState(4780)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 3:
		localctx = NewRoleRevokeContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4781)
			p.Match(MySqlParserREVOKE)
		}
		{
			p.SetState(4782)
			p.Uid()
		}
		p.SetState(4787)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4783)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(4784)
				p.Uid()
			}

			p.SetState(4789)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(4790)
			p.Match(MySqlParserFROM)
		}
		p.SetState(4793)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 696, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(4791)
				p.UserName()
			}

		case 2:
			{
				p.SetState(4792)
				p.Uid()
			}

		}
		p.SetState(4802)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(4795)
				p.Match(MySqlParserCOMMA)
			}
			p.SetState(4798)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 697, p.GetParserRuleContext()) {
			case 1:
				{
					p.SetState(4796)
					p.UserName()
				}

			case 2:
				{
					p.SetState(4797)
					p.Uid()
				}

			}

			p.SetState(4804)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IRevokeProxyContext is an interface to support dynamic dispatch.
type IRevokeProxyContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOnUser returns the onUser rule contexts.
	GetOnUser() IUserNameContext

	// GetFromFirst returns the fromFirst rule contexts.
	GetFromFirst() IUserNameContext

	// Get_userName returns the _userName rule contexts.
	Get_userName() IUserNameContext

	// SetOnUser sets the onUser rule contexts.
	SetOnUser(IUserNameContext)

	// SetFromFirst sets the fromFirst rule contexts.
	SetFromFirst(IUserNameContext)

	// Set_userName sets the _userName rule contexts.
	Set_userName(IUserNameContext)

	// GetFromOther returns the fromOther rule context list.
	GetFromOther() []IUserNameContext

	// SetFromOther sets the fromOther rule context list.
	SetFromOther([]IUserNameContext)

	// IsRevokeProxyContext differentiates from other interfaces.
	IsRevokeProxyContext()
}

type RevokeProxyContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	onUser    IUserNameContext
	fromFirst IUserNameContext
	_userName IUserNameContext
	fromOther []IUserNameContext
}

func NewEmptyRevokeProxyContext() *RevokeProxyContext {
	var p = new(RevokeProxyContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_revokeProxy
	return p
}

func (*RevokeProxyContext) IsRevokeProxyContext() {}

func NewRevokeProxyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RevokeProxyContext {
	var p = new(RevokeProxyContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_revokeProxy

	return p
}

func (s *RevokeProxyContext) GetParser() antlr.Parser { return s.parser }

func (s *RevokeProxyContext) GetOnUser() IUserNameContext { return s.onUser }

func (s *RevokeProxyContext) GetFromFirst() IUserNameContext { return s.fromFirst }

func (s *RevokeProxyContext) Get_userName() IUserNameContext { return s._userName }

func (s *RevokeProxyContext) SetOnUser(v IUserNameContext) { s.onUser = v }

func (s *RevokeProxyContext) SetFromFirst(v IUserNameContext) { s.fromFirst = v }

func (s *RevokeProxyContext) Set_userName(v IUserNameContext) { s._userName = v }

func (s *RevokeProxyContext) GetFromOther() []IUserNameContext { return s.fromOther }

func (s *RevokeProxyContext) SetFromOther(v []IUserNameContext) { s.fromOther = v }

func (s *RevokeProxyContext) REVOKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVOKE, 0)
}

func (s *RevokeProxyContext) PROXY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROXY, 0)
}

func (s *RevokeProxyContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *RevokeProxyContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *RevokeProxyContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *RevokeProxyContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *RevokeProxyContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *RevokeProxyContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *RevokeProxyContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RevokeProxyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RevokeProxyContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRevokeProxy(s)
	}
}

func (s *RevokeProxyContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRevokeProxy(s)
	}
}

func (p *MySqlParser) RevokeProxy() (localctx IRevokeProxyContext) {
	this := p
	_ = this

	localctx = NewRevokeProxyContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 408, MySqlParserRULE_revokeProxy)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4807)
		p.Match(MySqlParserREVOKE)
	}
	{
		p.SetState(4808)
		p.Match(MySqlParserPROXY)
	}
	{
		p.SetState(4809)
		p.Match(MySqlParserON)
	}
	{
		p.SetState(4810)

		var _x = p.UserName()

		localctx.(*RevokeProxyContext).onUser = _x
	}
	{
		p.SetState(4811)
		p.Match(MySqlParserFROM)
	}
	{
		p.SetState(4812)

		var _x = p.UserName()

		localctx.(*RevokeProxyContext).fromFirst = _x
	}
	p.SetState(4817)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(4813)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(4814)

			var _x = p.UserName()

			localctx.(*RevokeProxyContext)._userName = _x
		}
		localctx.(*RevokeProxyContext).fromOther = append(localctx.(*RevokeProxyContext).fromOther, localctx.(*RevokeProxyContext)._userName)

		p.SetState(4819)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ISetPasswordStatementContext is an interface to support dynamic dispatch.
type ISetPasswordStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSetPasswordStatementContext differentiates from other interfaces.
	IsSetPasswordStatementContext()
}

type SetPasswordStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySetPasswordStatementContext() *SetPasswordStatementContext {
	var p = new(SetPasswordStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_setPasswordStatement
	return p
}

func (*SetPasswordStatementContext) IsSetPasswordStatementContext() {}

func NewSetPasswordStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetPasswordStatementContext {
	var p = new(SetPasswordStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_setPasswordStatement

	return p
}

func (s *SetPasswordStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SetPasswordStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetPasswordStatementContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *SetPasswordStatementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *SetPasswordStatementContext) PasswordFunctionClause() IPasswordFunctionClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPasswordFunctionClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPasswordFunctionClauseContext)
}

func (s *SetPasswordStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SetPasswordStatementContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *SetPasswordStatementContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *SetPasswordStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetPasswordStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SetPasswordStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetPasswordStatement(s)
	}
}

func (s *SetPasswordStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetPasswordStatement(s)
	}
}

func (p *MySqlParser) SetPasswordStatement() (localctx ISetPasswordStatementContext) {
	this := p
	_ = this

	localctx = NewSetPasswordStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 410, MySqlParserRULE_setPasswordStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4820)
		p.Match(MySqlParserSET)
	}
	{
		p.SetState(4821)
		p.Match(MySqlParserPASSWORD)
	}
	p.SetState(4824)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserFOR {
		{
			p.SetState(4822)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(4823)
			p.UserName()
		}

	}
	{
		p.SetState(4826)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	p.SetState(4829)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserOLD_PASSWORD, MySqlParserPASSWORD:
		{
			p.SetState(4827)
			p.PasswordFunctionClause()
		}

	case MySqlParserSTRING_LITERAL:
		{
			p.SetState(4828)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IUserSpecificationContext is an interface to support dynamic dispatch.
type IUserSpecificationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUserSpecificationContext differentiates from other interfaces.
	IsUserSpecificationContext()
}

type UserSpecificationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUserSpecificationContext() *UserSpecificationContext {
	var p = new(UserSpecificationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userSpecification
	return p
}

func (*UserSpecificationContext) IsUserSpecificationContext() {}

func NewUserSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserSpecificationContext {
	var p = new(UserSpecificationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userSpecification

	return p
}

func (s *UserSpecificationContext) GetParser() antlr.Parser { return s.parser }

func (s *UserSpecificationContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *UserSpecificationContext) UserPasswordOption() IUserPasswordOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserPasswordOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserPasswordOptionContext)
}

func (s *UserSpecificationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserSpecificationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserSpecification(s)
	}
}

func (s *UserSpecificationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserSpecification(s)
	}
}

func (p *MySqlParser) UserSpecification() (localctx IUserSpecificationContext) {
	this := p
	_ = this

	localctx = NewUserSpecificationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 412, MySqlParserRULE_userSpecification)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4831)
		p.UserName()
	}
	{
		p.SetState(4832)
		p.UserPasswordOption()
	}

	return localctx
}

// IUserAuthOptionContext is an interface to support dynamic dispatch.
type IUserAuthOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUserAuthOptionContext differentiates from other interfaces.
	IsUserAuthOptionContext()
}

type UserAuthOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUserAuthOptionContext() *UserAuthOptionContext {
	var p = new(UserAuthOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userAuthOption
	return p
}

func (*UserAuthOptionContext) IsUserAuthOptionContext() {}

func NewUserAuthOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserAuthOptionContext {
	var p = new(UserAuthOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userAuthOption

	return p
}

func (s *UserAuthOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *UserAuthOptionContext) CopyFrom(ctx *UserAuthOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *UserAuthOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserAuthOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SimpleAuthOptionContext struct {
	*UserAuthOptionContext
}

func NewSimpleAuthOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleAuthOptionContext {
	var p = new(SimpleAuthOptionContext)

	p.UserAuthOptionContext = NewEmptyUserAuthOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UserAuthOptionContext))

	return p
}

func (s *SimpleAuthOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleAuthOptionContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *SimpleAuthOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleAuthOption(s)
	}
}

func (s *SimpleAuthOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleAuthOption(s)
	}
}

type PasswordAuthOptionContext struct {
	*UserAuthOptionContext
	hashed antlr.Token
}

func NewPasswordAuthOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PasswordAuthOptionContext {
	var p = new(PasswordAuthOptionContext)

	p.UserAuthOptionContext = NewEmptyUserAuthOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UserAuthOptionContext))

	return p
}

func (s *PasswordAuthOptionContext) GetHashed() antlr.Token { return s.hashed }

func (s *PasswordAuthOptionContext) SetHashed(v antlr.Token) { s.hashed = v }

func (s *PasswordAuthOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PasswordAuthOptionContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *PasswordAuthOptionContext) IDENTIFIED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIDENTIFIED, 0)
}

func (s *PasswordAuthOptionContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *PasswordAuthOptionContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *PasswordAuthOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *PasswordAuthOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPasswordAuthOption(s)
	}
}

func (s *PasswordAuthOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPasswordAuthOption(s)
	}
}

type StringAuthOptionContext struct {
	*UserAuthOptionContext
}

func NewStringAuthOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *StringAuthOptionContext {
	var p = new(StringAuthOptionContext)

	p.UserAuthOptionContext = NewEmptyUserAuthOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UserAuthOptionContext))

	return p
}

func (s *StringAuthOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StringAuthOptionContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *StringAuthOptionContext) IDENTIFIED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIDENTIFIED, 0)
}

func (s *StringAuthOptionContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *StringAuthOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *StringAuthOptionContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *StringAuthOptionContext) AuthPlugin() IAuthPluginContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAuthPluginContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAuthPluginContext)
}

func (s *StringAuthOptionContext) RETAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETAIN, 0)
}

func (s *StringAuthOptionContext) CURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT, 0)
}

func (s *StringAuthOptionContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *StringAuthOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStringAuthOption(s)
	}
}

func (s *StringAuthOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStringAuthOption(s)
	}
}

type HashAuthOptionContext struct {
	*UserAuthOptionContext
}

func NewHashAuthOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *HashAuthOptionContext {
	var p = new(HashAuthOptionContext)

	p.UserAuthOptionContext = NewEmptyUserAuthOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*UserAuthOptionContext))

	return p
}

func (s *HashAuthOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HashAuthOptionContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *HashAuthOptionContext) IDENTIFIED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIDENTIFIED, 0)
}

func (s *HashAuthOptionContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *HashAuthOptionContext) AuthPlugin() IAuthPluginContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAuthPluginContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAuthPluginContext)
}

func (s *HashAuthOptionContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *HashAuthOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *HashAuthOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHashAuthOption(s)
	}
}

func (s *HashAuthOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHashAuthOption(s)
	}
}

func (p *MySqlParser) UserAuthOption() (localctx IUserAuthOptionContext) {
	this := p
	_ = this

	localctx = NewUserAuthOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 414, MySqlParserRULE_userAuthOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4862)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 706, p.GetParserRuleContext()) {
	case 1:
		localctx = NewPasswordAuthOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4834)
			p.UserName()
		}
		{
			p.SetState(4835)
			p.Match(MySqlParserIDENTIFIED)
		}
		{
			p.SetState(4836)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(4837)
			p.Match(MySqlParserPASSWORD)
		}
		{
			p.SetState(4838)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*PasswordAuthOptionContext).hashed = _m
		}

	case 2:
		localctx = NewStringAuthOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4840)
			p.UserName()
		}
		{
			p.SetState(4841)
			p.Match(MySqlParserIDENTIFIED)
		}
		p.SetState(4844)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(4842)
				p.Match(MySqlParserWITH)
			}
			{
				p.SetState(4843)
				p.AuthPlugin()
			}

		}
		{
			p.SetState(4846)
			p.Match(MySqlParserBY)
		}
		{
			p.SetState(4847)
			p.Match(MySqlParserSTRING_LITERAL)
		}
		p.SetState(4851)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserRETAIN {
			{
				p.SetState(4848)
				p.Match(MySqlParserRETAIN)
			}
			{
				p.SetState(4849)
				p.Match(MySqlParserCURRENT)
			}
			{
				p.SetState(4850)
				p.Match(MySqlParserPASSWORD)
			}

		}

	case 3:
		localctx = NewHashAuthOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4853)
			p.UserName()
		}
		{
			p.SetState(4854)
			p.Match(MySqlParserIDENTIFIED)
		}
		{
			p.SetState(4855)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(4856)
			p.AuthPlugin()
		}
		p.SetState(4859)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 705, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(4857)
				p.Match(MySqlParserAS)
			}
			{
				p.SetState(4858)
				p.Match(MySqlParserSTRING_LITERAL)
			}

		}

	case 4:
		localctx = NewSimpleAuthOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4861)
			p.UserName()
		}

	}

	return localctx
}

// ITlsOptionContext is an interface to support dynamic dispatch.
type ITlsOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTlsOptionContext differentiates from other interfaces.
	IsTlsOptionContext()
}

type TlsOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTlsOptionContext() *TlsOptionContext {
	var p = new(TlsOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tlsOption
	return p
}

func (*TlsOptionContext) IsTlsOptionContext() {}

func NewTlsOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TlsOptionContext {
	var p = new(TlsOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tlsOption

	return p
}

func (s *TlsOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *TlsOptionContext) SSL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSSL, 0)
}

func (s *TlsOptionContext) X509() antlr.TerminalNode {
	return s.GetToken(MySqlParserX509, 0)
}

func (s *TlsOptionContext) CIPHER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCIPHER, 0)
}

func (s *TlsOptionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *TlsOptionContext) ISSUER() antlr.TerminalNode {
	return s.GetToken(MySqlParserISSUER, 0)
}

func (s *TlsOptionContext) SUBJECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBJECT, 0)
}

func (s *TlsOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TlsOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TlsOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTlsOption(s)
	}
}

func (s *TlsOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTlsOption(s)
	}
}

func (p *MySqlParser) TlsOption() (localctx ITlsOptionContext) {
	this := p
	_ = this

	localctx = NewTlsOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 416, MySqlParserRULE_tlsOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4872)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSSL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4864)
			p.Match(MySqlParserSSL)
		}

	case MySqlParserX509:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4865)
			p.Match(MySqlParserX509)
		}

	case MySqlParserCIPHER:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4866)
			p.Match(MySqlParserCIPHER)
		}
		{
			p.SetState(4867)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserISSUER:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4868)
			p.Match(MySqlParserISSUER)
		}
		{
			p.SetState(4869)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserSUBJECT:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4870)
			p.Match(MySqlParserSUBJECT)
		}
		{
			p.SetState(4871)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IUserResourceOptionContext is an interface to support dynamic dispatch.
type IUserResourceOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUserResourceOptionContext differentiates from other interfaces.
	IsUserResourceOptionContext()
}

type UserResourceOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUserResourceOptionContext() *UserResourceOptionContext {
	var p = new(UserResourceOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userResourceOption
	return p
}

func (*UserResourceOptionContext) IsUserResourceOptionContext() {}

func NewUserResourceOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserResourceOptionContext {
	var p = new(UserResourceOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userResourceOption

	return p
}

func (s *UserResourceOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *UserResourceOptionContext) MAX_QUERIES_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_QUERIES_PER_HOUR, 0)
}

func (s *UserResourceOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *UserResourceOptionContext) MAX_UPDATES_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_UPDATES_PER_HOUR, 0)
}

func (s *UserResourceOptionContext) MAX_CONNECTIONS_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_CONNECTIONS_PER_HOUR, 0)
}

func (s *UserResourceOptionContext) MAX_USER_CONNECTIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_USER_CONNECTIONS, 0)
}

func (s *UserResourceOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserResourceOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserResourceOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserResourceOption(s)
	}
}

func (s *UserResourceOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserResourceOption(s)
	}
}

func (p *MySqlParser) UserResourceOption() (localctx IUserResourceOptionContext) {
	this := p
	_ = this

	localctx = NewUserResourceOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 418, MySqlParserRULE_userResourceOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4882)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserMAX_QUERIES_PER_HOUR:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4874)
			p.Match(MySqlParserMAX_QUERIES_PER_HOUR)
		}
		{
			p.SetState(4875)
			p.DecimalLiteral()
		}

	case MySqlParserMAX_UPDATES_PER_HOUR:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4876)
			p.Match(MySqlParserMAX_UPDATES_PER_HOUR)
		}
		{
			p.SetState(4877)
			p.DecimalLiteral()
		}

	case MySqlParserMAX_CONNECTIONS_PER_HOUR:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4878)
			p.Match(MySqlParserMAX_CONNECTIONS_PER_HOUR)
		}
		{
			p.SetState(4879)
			p.DecimalLiteral()
		}

	case MySqlParserMAX_USER_CONNECTIONS:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4880)
			p.Match(MySqlParserMAX_USER_CONNECTIONS)
		}
		{
			p.SetState(4881)
			p.DecimalLiteral()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IUserPasswordOptionContext is an interface to support dynamic dispatch.
type IUserPasswordOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetExpireType returns the expireType token.
	GetExpireType() antlr.Token

	// SetExpireType sets the expireType token.
	SetExpireType(antlr.Token)

	// IsUserPasswordOptionContext differentiates from other interfaces.
	IsUserPasswordOptionContext()
}

type UserPasswordOptionContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	expireType antlr.Token
}

func NewEmptyUserPasswordOptionContext() *UserPasswordOptionContext {
	var p = new(UserPasswordOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userPasswordOption
	return p
}

func (*UserPasswordOptionContext) IsUserPasswordOptionContext() {}

func NewUserPasswordOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserPasswordOptionContext {
	var p = new(UserPasswordOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userPasswordOption

	return p
}

func (s *UserPasswordOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *UserPasswordOptionContext) GetExpireType() antlr.Token { return s.expireType }

func (s *UserPasswordOptionContext) SetExpireType(v antlr.Token) { s.expireType = v }

func (s *UserPasswordOptionContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *UserPasswordOptionContext) EXPIRE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPIRE, 0)
}

func (s *UserPasswordOptionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *UserPasswordOptionContext) DAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY, 0)
}

func (s *UserPasswordOptionContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *UserPasswordOptionContext) NEVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEVER, 0)
}

func (s *UserPasswordOptionContext) INTERVAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERVAL, 0)
}

func (s *UserPasswordOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserPasswordOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserPasswordOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserPasswordOption(s)
	}
}

func (s *UserPasswordOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserPasswordOption(s)
	}
}

func (p *MySqlParser) UserPasswordOption() (localctx IUserPasswordOptionContext) {
	this := p
	_ = this

	localctx = NewUserPasswordOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 420, MySqlParserRULE_userPasswordOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4884)
		p.Match(MySqlParserPASSWORD)
	}
	{
		p.SetState(4885)
		p.Match(MySqlParserEXPIRE)
	}
	p.SetState(4892)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDEFAULT:
		{
			p.SetState(4886)

			var _m = p.Match(MySqlParserDEFAULT)

			localctx.(*UserPasswordOptionContext).expireType = _m
		}

	case MySqlParserNEVER:
		{
			p.SetState(4887)

			var _m = p.Match(MySqlParserNEVER)

			localctx.(*UserPasswordOptionContext).expireType = _m
		}

	case MySqlParserINTERVAL:
		{
			p.SetState(4888)

			var _m = p.Match(MySqlParserINTERVAL)

			localctx.(*UserPasswordOptionContext).expireType = _m
		}
		{
			p.SetState(4889)
			p.DecimalLiteral()
		}
		{
			p.SetState(4890)
			p.Match(MySqlParserDAY)
		}

	case MySqlParserEOF, MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserACCOUNT, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPASSWORD, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserMINUS, MySqlParserLR_BRACKET, MySqlParserCOMMA, MySqlParserSEMI:

	default:
	}

	return localctx
}

// IUserLockOptionContext is an interface to support dynamic dispatch.
type IUserLockOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetLockType returns the lockType token.
	GetLockType() antlr.Token

	// SetLockType sets the lockType token.
	SetLockType(antlr.Token)

	// IsUserLockOptionContext differentiates from other interfaces.
	IsUserLockOptionContext()
}

type UserLockOptionContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	lockType antlr.Token
}

func NewEmptyUserLockOptionContext() *UserLockOptionContext {
	var p = new(UserLockOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userLockOption
	return p
}

func (*UserLockOptionContext) IsUserLockOptionContext() {}

func NewUserLockOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserLockOptionContext {
	var p = new(UserLockOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userLockOption

	return p
}

func (s *UserLockOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *UserLockOptionContext) GetLockType() antlr.Token { return s.lockType }

func (s *UserLockOptionContext) SetLockType(v antlr.Token) { s.lockType = v }

func (s *UserLockOptionContext) ACCOUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserACCOUNT, 0)
}

func (s *UserLockOptionContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *UserLockOptionContext) UNLOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNLOCK, 0)
}

func (s *UserLockOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserLockOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserLockOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserLockOption(s)
	}
}

func (s *UserLockOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserLockOption(s)
	}
}

func (p *MySqlParser) UserLockOption() (localctx IUserLockOptionContext) {
	this := p
	_ = this

	localctx = NewUserLockOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 422, MySqlParserRULE_userLockOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4894)
		p.Match(MySqlParserACCOUNT)
	}
	{
		p.SetState(4895)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*UserLockOptionContext).lockType = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserLOCK || _la == MySqlParserUNLOCK) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*UserLockOptionContext).lockType = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IPrivelegeClauseContext is an interface to support dynamic dispatch.
type IPrivelegeClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPrivelegeClauseContext differentiates from other interfaces.
	IsPrivelegeClauseContext()
}

type PrivelegeClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPrivelegeClauseContext() *PrivelegeClauseContext {
	var p = new(PrivelegeClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_privelegeClause
	return p
}

func (*PrivelegeClauseContext) IsPrivelegeClauseContext() {}

func NewPrivelegeClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrivelegeClauseContext {
	var p = new(PrivelegeClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_privelegeClause

	return p
}

func (s *PrivelegeClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *PrivelegeClauseContext) Privilege() IPrivilegeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivilegeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPrivilegeContext)
}

func (s *PrivelegeClauseContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PrivelegeClauseContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *PrivelegeClauseContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PrivelegeClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrivelegeClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PrivelegeClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrivelegeClause(s)
	}
}

func (s *PrivelegeClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrivelegeClause(s)
	}
}

func (p *MySqlParser) PrivelegeClause() (localctx IPrivelegeClauseContext) {
	this := p
	_ = this

	localctx = NewPrivelegeClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 424, MySqlParserRULE_privelegeClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(4897)
		p.Privilege()
	}
	p.SetState(4902)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserLR_BRACKET {
		{
			p.SetState(4898)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(4899)
			p.UidList()
		}
		{
			p.SetState(4900)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IPrivilegeContext is an interface to support dynamic dispatch.
type IPrivilegeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPrivilegeContext differentiates from other interfaces.
	IsPrivilegeContext()
}

type PrivilegeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPrivilegeContext() *PrivilegeContext {
	var p = new(PrivilegeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_privilege
	return p
}

func (*PrivilegeContext) IsPrivilegeContext() {}

func NewPrivilegeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrivilegeContext {
	var p = new(PrivilegeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_privilege

	return p
}

func (s *PrivilegeContext) GetParser() antlr.Parser { return s.parser }

func (s *PrivilegeContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *PrivilegeContext) PRIVILEGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIVILEGES, 0)
}

func (s *PrivilegeContext) ALTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserALTER, 0)
}

func (s *PrivilegeContext) ROUTINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROUTINE, 0)
}

func (s *PrivilegeContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *PrivilegeContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *PrivilegeContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *PrivilegeContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *PrivilegeContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *PrivilegeContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *PrivilegeContext) ROLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLE, 0)
}

func (s *PrivilegeContext) DELETE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELETE, 0)
}

func (s *PrivilegeContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *PrivilegeContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *PrivilegeContext) EXECUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXECUTE, 0)
}

func (s *PrivilegeContext) FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILE, 0)
}

func (s *PrivilegeContext) GRANT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANT, 0)
}

func (s *PrivilegeContext) OPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTION, 0)
}

func (s *PrivilegeContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *PrivilegeContext) INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT, 0)
}

func (s *PrivilegeContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *PrivilegeContext) PROCESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCESS, 0)
}

func (s *PrivilegeContext) PROXY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROXY, 0)
}

func (s *PrivilegeContext) REFERENCES() antlr.TerminalNode {
	return s.GetToken(MySqlParserREFERENCES, 0)
}

func (s *PrivilegeContext) RELOAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELOAD, 0)
}

func (s *PrivilegeContext) REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION, 0)
}

func (s *PrivilegeContext) CLIENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLIENT, 0)
}

func (s *PrivilegeContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *PrivilegeContext) SELECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSELECT, 0)
}

func (s *PrivilegeContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *PrivilegeContext) DATABASES() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASES, 0)
}

func (s *PrivilegeContext) SHUTDOWN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHUTDOWN, 0)
}

func (s *PrivilegeContext) SUPER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUPER, 0)
}

func (s *PrivilegeContext) TRIGGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGER, 0)
}

func (s *PrivilegeContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *PrivilegeContext) USAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSAGE, 0)
}

func (s *PrivilegeContext) APPLICATION_PASSWORD_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserAPPLICATION_PASSWORD_ADMIN, 0)
}

func (s *PrivilegeContext) AUDIT_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUDIT_ADMIN, 0)
}

func (s *PrivilegeContext) BACKUP_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBACKUP_ADMIN, 0)
}

func (s *PrivilegeContext) BINLOG_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG_ADMIN, 0)
}

func (s *PrivilegeContext) BINLOG_ENCRYPTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG_ENCRYPTION_ADMIN, 0)
}

func (s *PrivilegeContext) CLONE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLONE_ADMIN, 0)
}

func (s *PrivilegeContext) CONNECTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION_ADMIN, 0)
}

func (s *PrivilegeContext) ENCRYPTION_KEY_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCRYPTION_KEY_ADMIN, 0)
}

func (s *PrivilegeContext) FIREWALL_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIREWALL_ADMIN, 0)
}

func (s *PrivilegeContext) FIREWALL_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIREWALL_USER, 0)
}

func (s *PrivilegeContext) FLUSH_OPTIMIZER_COSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH_OPTIMIZER_COSTS, 0)
}

func (s *PrivilegeContext) FLUSH_STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH_STATUS, 0)
}

func (s *PrivilegeContext) FLUSH_TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH_TABLES, 0)
}

func (s *PrivilegeContext) FLUSH_USER_RESOURCES() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH_USER_RESOURCES, 0)
}

func (s *PrivilegeContext) GROUP_REPLICATION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_REPLICATION_ADMIN, 0)
}

func (s *PrivilegeContext) INNODB_REDO_LOG_ARCHIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNODB_REDO_LOG_ARCHIVE, 0)
}

func (s *PrivilegeContext) INNODB_REDO_LOG_ENABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNODB_REDO_LOG_ENABLE, 0)
}

func (s *PrivilegeContext) NDB_STORED_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNDB_STORED_USER, 0)
}

func (s *PrivilegeContext) PERSIST_RO_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERSIST_RO_VARIABLES_ADMIN, 0)
}

func (s *PrivilegeContext) REPLICATION_APPLIER() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION_APPLIER, 0)
}

func (s *PrivilegeContext) REPLICATION_SLAVE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION_SLAVE_ADMIN, 0)
}

func (s *PrivilegeContext) RESOURCE_GROUP_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESOURCE_GROUP_ADMIN, 0)
}

func (s *PrivilegeContext) RESOURCE_GROUP_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESOURCE_GROUP_USER, 0)
}

func (s *PrivilegeContext) ROLE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLE_ADMIN, 0)
}

func (s *PrivilegeContext) SERVICE_CONNECTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERVICE_CONNECTION_ADMIN, 0)
}

func (s *PrivilegeContext) SESSION_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION_VARIABLES_ADMIN, 0)
}

func (s *PrivilegeContext) SET_USER_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET_USER_ID, 0)
}

func (s *PrivilegeContext) SHOW_ROUTINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW_ROUTINE, 0)
}

func (s *PrivilegeContext) SYSTEM_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSYSTEM_USER, 0)
}

func (s *PrivilegeContext) SYSTEM_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSYSTEM_VARIABLES_ADMIN, 0)
}

func (s *PrivilegeContext) TABLE_ENCRYPTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_ENCRYPTION_ADMIN, 0)
}

func (s *PrivilegeContext) VERSION_TOKEN_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserVERSION_TOKEN_ADMIN, 0)
}

func (s *PrivilegeContext) XA_RECOVER_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA_RECOVER_ADMIN, 0)
}

func (s *PrivilegeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrivilegeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PrivilegeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrivilege(s)
	}
}

func (s *PrivilegeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrivilege(s)
	}
}

func (p *MySqlParser) Privilege() (localctx IPrivilegeContext) {
	this := p
	_ = this

	localctx = NewPrivilegeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 426, MySqlParserRULE_privilege)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(4983)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserALL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4904)
			p.Match(MySqlParserALL)
		}
		p.SetState(4906)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPRIVILEGES {
			{
				p.SetState(4905)
				p.Match(MySqlParserPRIVILEGES)
			}

		}

	case MySqlParserALTER:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4908)
			p.Match(MySqlParserALTER)
		}
		p.SetState(4910)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserROUTINE {
			{
				p.SetState(4909)
				p.Match(MySqlParserROUTINE)
			}

		}

	case MySqlParserCREATE:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4912)
			p.Match(MySqlParserCREATE)
		}
		p.SetState(4920)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserTEMPORARY:
			{
				p.SetState(4913)
				p.Match(MySqlParserTEMPORARY)
			}
			{
				p.SetState(4914)
				p.Match(MySqlParserTABLES)
			}

		case MySqlParserROUTINE:
			{
				p.SetState(4915)
				p.Match(MySqlParserROUTINE)
			}

		case MySqlParserVIEW:
			{
				p.SetState(4916)
				p.Match(MySqlParserVIEW)
			}

		case MySqlParserUSER:
			{
				p.SetState(4917)
				p.Match(MySqlParserUSER)
			}

		case MySqlParserTABLESPACE:
			{
				p.SetState(4918)
				p.Match(MySqlParserTABLESPACE)
			}

		case MySqlParserROLE:
			{
				p.SetState(4919)
				p.Match(MySqlParserROLE)
			}

		case MySqlParserON, MySqlParserLR_BRACKET, MySqlParserCOMMA:

		default:
		}

	case MySqlParserDELETE:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4922)
			p.Match(MySqlParserDELETE)
		}

	case MySqlParserDROP:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4923)
			p.Match(MySqlParserDROP)
		}
		p.SetState(4925)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserROLE {
			{
				p.SetState(4924)
				p.Match(MySqlParserROLE)
			}

		}

	case MySqlParserEVENT:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(4927)
			p.Match(MySqlParserEVENT)
		}

	case MySqlParserEXECUTE:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(4928)
			p.Match(MySqlParserEXECUTE)
		}

	case MySqlParserFILE:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(4929)
			p.Match(MySqlParserFILE)
		}

	case MySqlParserGRANT:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(4930)
			p.Match(MySqlParserGRANT)
		}
		{
			p.SetState(4931)
			p.Match(MySqlParserOPTION)
		}

	case MySqlParserINDEX:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(4932)
			p.Match(MySqlParserINDEX)
		}

	case MySqlParserINSERT:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(4933)
			p.Match(MySqlParserINSERT)
		}

	case MySqlParserLOCK:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(4934)
			p.Match(MySqlParserLOCK)
		}
		{
			p.SetState(4935)
			p.Match(MySqlParserTABLES)
		}

	case MySqlParserPROCESS:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(4936)
			p.Match(MySqlParserPROCESS)
		}

	case MySqlParserPROXY:
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(4937)
			p.Match(MySqlParserPROXY)
		}

	case MySqlParserREFERENCES:
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(4938)
			p.Match(MySqlParserREFERENCES)
		}

	case MySqlParserRELOAD:
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(4939)
			p.Match(MySqlParserRELOAD)
		}

	case MySqlParserREPLICATION:
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(4940)
			p.Match(MySqlParserREPLICATION)
		}
		{
			p.SetState(4941)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCLIENT || _la == MySqlParserSLAVE) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserSELECT:
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(4942)
			p.Match(MySqlParserSELECT)
		}

	case MySqlParserSHOW:
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(4943)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(4944)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDATABASES || _la == MySqlParserVIEW) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserSHUTDOWN:
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(4945)
			p.Match(MySqlParserSHUTDOWN)
		}

	case MySqlParserSUPER:
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(4946)
			p.Match(MySqlParserSUPER)
		}

	case MySqlParserTRIGGER:
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(4947)
			p.Match(MySqlParserTRIGGER)
		}

	case MySqlParserUPDATE:
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(4948)
			p.Match(MySqlParserUPDATE)
		}

	case MySqlParserUSAGE:
		p.EnterOuterAlt(localctx, 24)
		{
			p.SetState(4949)
			p.Match(MySqlParserUSAGE)
		}

	case MySqlParserAPPLICATION_PASSWORD_ADMIN:
		p.EnterOuterAlt(localctx, 25)
		{
			p.SetState(4950)
			p.Match(MySqlParserAPPLICATION_PASSWORD_ADMIN)
		}

	case MySqlParserAUDIT_ADMIN:
		p.EnterOuterAlt(localctx, 26)
		{
			p.SetState(4951)
			p.Match(MySqlParserAUDIT_ADMIN)
		}

	case MySqlParserBACKUP_ADMIN:
		p.EnterOuterAlt(localctx, 27)
		{
			p.SetState(4952)
			p.Match(MySqlParserBACKUP_ADMIN)
		}

	case MySqlParserBINLOG_ADMIN:
		p.EnterOuterAlt(localctx, 28)
		{
			p.SetState(4953)
			p.Match(MySqlParserBINLOG_ADMIN)
		}

	case MySqlParserBINLOG_ENCRYPTION_ADMIN:
		p.EnterOuterAlt(localctx, 29)
		{
			p.SetState(4954)
			p.Match(MySqlParserBINLOG_ENCRYPTION_ADMIN)
		}

	case MySqlParserCLONE_ADMIN:
		p.EnterOuterAlt(localctx, 30)
		{
			p.SetState(4955)
			p.Match(MySqlParserCLONE_ADMIN)
		}

	case MySqlParserCONNECTION_ADMIN:
		p.EnterOuterAlt(localctx, 31)
		{
			p.SetState(4956)
			p.Match(MySqlParserCONNECTION_ADMIN)
		}

	case MySqlParserENCRYPTION_KEY_ADMIN:
		p.EnterOuterAlt(localctx, 32)
		{
			p.SetState(4957)
			p.Match(MySqlParserENCRYPTION_KEY_ADMIN)
		}

	case MySqlParserFIREWALL_ADMIN:
		p.EnterOuterAlt(localctx, 33)
		{
			p.SetState(4958)
			p.Match(MySqlParserFIREWALL_ADMIN)
		}

	case MySqlParserFIREWALL_USER:
		p.EnterOuterAlt(localctx, 34)
		{
			p.SetState(4959)
			p.Match(MySqlParserFIREWALL_USER)
		}

	case MySqlParserFLUSH_OPTIMIZER_COSTS:
		p.EnterOuterAlt(localctx, 35)
		{
			p.SetState(4960)
			p.Match(MySqlParserFLUSH_OPTIMIZER_COSTS)
		}

	case MySqlParserFLUSH_STATUS:
		p.EnterOuterAlt(localctx, 36)
		{
			p.SetState(4961)
			p.Match(MySqlParserFLUSH_STATUS)
		}

	case MySqlParserFLUSH_TABLES:
		p.EnterOuterAlt(localctx, 37)
		{
			p.SetState(4962)
			p.Match(MySqlParserFLUSH_TABLES)
		}

	case MySqlParserFLUSH_USER_RESOURCES:
		p.EnterOuterAlt(localctx, 38)
		{
			p.SetState(4963)
			p.Match(MySqlParserFLUSH_USER_RESOURCES)
		}

	case MySqlParserGROUP_REPLICATION_ADMIN:
		p.EnterOuterAlt(localctx, 39)
		{
			p.SetState(4964)
			p.Match(MySqlParserGROUP_REPLICATION_ADMIN)
		}

	case MySqlParserINNODB_REDO_LOG_ARCHIVE:
		p.EnterOuterAlt(localctx, 40)
		{
			p.SetState(4965)
			p.Match(MySqlParserINNODB_REDO_LOG_ARCHIVE)
		}

	case MySqlParserINNODB_REDO_LOG_ENABLE:
		p.EnterOuterAlt(localctx, 41)
		{
			p.SetState(4966)
			p.Match(MySqlParserINNODB_REDO_LOG_ENABLE)
		}

	case MySqlParserNDB_STORED_USER:
		p.EnterOuterAlt(localctx, 42)
		{
			p.SetState(4967)
			p.Match(MySqlParserNDB_STORED_USER)
		}

	case MySqlParserPERSIST_RO_VARIABLES_ADMIN:
		p.EnterOuterAlt(localctx, 43)
		{
			p.SetState(4968)
			p.Match(MySqlParserPERSIST_RO_VARIABLES_ADMIN)
		}

	case MySqlParserREPLICATION_APPLIER:
		p.EnterOuterAlt(localctx, 44)
		{
			p.SetState(4969)
			p.Match(MySqlParserREPLICATION_APPLIER)
		}

	case MySqlParserREPLICATION_SLAVE_ADMIN:
		p.EnterOuterAlt(localctx, 45)
		{
			p.SetState(4970)
			p.Match(MySqlParserREPLICATION_SLAVE_ADMIN)
		}

	case MySqlParserRESOURCE_GROUP_ADMIN:
		p.EnterOuterAlt(localctx, 46)
		{
			p.SetState(4971)
			p.Match(MySqlParserRESOURCE_GROUP_ADMIN)
		}

	case MySqlParserRESOURCE_GROUP_USER:
		p.EnterOuterAlt(localctx, 47)
		{
			p.SetState(4972)
			p.Match(MySqlParserRESOURCE_GROUP_USER)
		}

	case MySqlParserROLE_ADMIN:
		p.EnterOuterAlt(localctx, 48)
		{
			p.SetState(4973)
			p.Match(MySqlParserROLE_ADMIN)
		}

	case MySqlParserSERVICE_CONNECTION_ADMIN:
		p.EnterOuterAlt(localctx, 49)
		{
			p.SetState(4974)
			p.Match(MySqlParserSERVICE_CONNECTION_ADMIN)
		}

	case MySqlParserSESSION_VARIABLES_ADMIN:
		p.EnterOuterAlt(localctx, 50)
		{
			p.SetState(4975)
			p.Match(MySqlParserSESSION_VARIABLES_ADMIN)
		}

	case MySqlParserSET_USER_ID:
		p.EnterOuterAlt(localctx, 51)
		{
			p.SetState(4976)
			p.Match(MySqlParserSET_USER_ID)
		}

	case MySqlParserSHOW_ROUTINE:
		p.EnterOuterAlt(localctx, 52)
		{
			p.SetState(4977)
			p.Match(MySqlParserSHOW_ROUTINE)
		}

	case MySqlParserSYSTEM_USER:
		p.EnterOuterAlt(localctx, 53)
		{
			p.SetState(4978)
			p.Match(MySqlParserSYSTEM_USER)
		}

	case MySqlParserSYSTEM_VARIABLES_ADMIN:
		p.EnterOuterAlt(localctx, 54)
		{
			p.SetState(4979)
			p.Match(MySqlParserSYSTEM_VARIABLES_ADMIN)
		}

	case MySqlParserTABLE_ENCRYPTION_ADMIN:
		p.EnterOuterAlt(localctx, 55)
		{
			p.SetState(4980)
			p.Match(MySqlParserTABLE_ENCRYPTION_ADMIN)
		}

	case MySqlParserVERSION_TOKEN_ADMIN:
		p.EnterOuterAlt(localctx, 56)
		{
			p.SetState(4981)
			p.Match(MySqlParserVERSION_TOKEN_ADMIN)
		}

	case MySqlParserXA_RECOVER_ADMIN:
		p.EnterOuterAlt(localctx, 57)
		{
			p.SetState(4982)
			p.Match(MySqlParserXA_RECOVER_ADMIN)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IPrivilegeLevelContext is an interface to support dynamic dispatch.
type IPrivilegeLevelContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPrivilegeLevelContext differentiates from other interfaces.
	IsPrivilegeLevelContext()
}

type PrivilegeLevelContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPrivilegeLevelContext() *PrivilegeLevelContext {
	var p = new(PrivilegeLevelContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_privilegeLevel
	return p
}

func (*PrivilegeLevelContext) IsPrivilegeLevelContext() {}

func NewPrivilegeLevelContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrivilegeLevelContext {
	var p = new(PrivilegeLevelContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_privilegeLevel

	return p
}

func (s *PrivilegeLevelContext) GetParser() antlr.Parser { return s.parser }

func (s *PrivilegeLevelContext) CopyFrom(ctx *PrivilegeLevelContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *PrivilegeLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrivilegeLevelContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type DefiniteSchemaPrivLevelContext struct {
	*PrivilegeLevelContext
}

func NewDefiniteSchemaPrivLevelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefiniteSchemaPrivLevelContext {
	var p = new(DefiniteSchemaPrivLevelContext)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *DefiniteSchemaPrivLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefiniteSchemaPrivLevelContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DefiniteSchemaPrivLevelContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *DefiniteSchemaPrivLevelContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *DefiniteSchemaPrivLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefiniteSchemaPrivLevel(s)
	}
}

func (s *DefiniteSchemaPrivLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefiniteSchemaPrivLevel(s)
	}
}

type DefiniteFullTablePrivLevel2Context struct {
	*PrivilegeLevelContext
}

func NewDefiniteFullTablePrivLevel2Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefiniteFullTablePrivLevel2Context {
	var p = new(DefiniteFullTablePrivLevel2Context)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *DefiniteFullTablePrivLevel2Context) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefiniteFullTablePrivLevel2Context) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DefiniteFullTablePrivLevel2Context) DottedId() IDottedIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDottedIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDottedIdContext)
}

func (s *DefiniteFullTablePrivLevel2Context) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefiniteFullTablePrivLevel2(s)
	}
}

func (s *DefiniteFullTablePrivLevel2Context) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefiniteFullTablePrivLevel2(s)
	}
}

type DefiniteFullTablePrivLevelContext struct {
	*PrivilegeLevelContext
}

func NewDefiniteFullTablePrivLevelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefiniteFullTablePrivLevelContext {
	var p = new(DefiniteFullTablePrivLevelContext)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *DefiniteFullTablePrivLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefiniteFullTablePrivLevelContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *DefiniteFullTablePrivLevelContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DefiniteFullTablePrivLevelContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *DefiniteFullTablePrivLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefiniteFullTablePrivLevel(s)
	}
}

func (s *DefiniteFullTablePrivLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefiniteFullTablePrivLevel(s)
	}
}

type GlobalPrivLevelContext struct {
	*PrivilegeLevelContext
}

func NewGlobalPrivLevelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *GlobalPrivLevelContext {
	var p = new(GlobalPrivLevelContext)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *GlobalPrivLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GlobalPrivLevelContext) AllSTAR() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTAR)
}

func (s *GlobalPrivLevelContext) STAR(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, i)
}

func (s *GlobalPrivLevelContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *GlobalPrivLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGlobalPrivLevel(s)
	}
}

func (s *GlobalPrivLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGlobalPrivLevel(s)
	}
}

type DefiniteTablePrivLevelContext struct {
	*PrivilegeLevelContext
}

func NewDefiniteTablePrivLevelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DefiniteTablePrivLevelContext {
	var p = new(DefiniteTablePrivLevelContext)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *DefiniteTablePrivLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefiniteTablePrivLevelContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DefiniteTablePrivLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefiniteTablePrivLevel(s)
	}
}

func (s *DefiniteTablePrivLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefiniteTablePrivLevel(s)
	}
}

type CurrentSchemaPriviLevelContext struct {
	*PrivilegeLevelContext
}

func NewCurrentSchemaPriviLevelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CurrentSchemaPriviLevelContext {
	var p = new(CurrentSchemaPriviLevelContext)

	p.PrivilegeLevelContext = NewEmptyPrivilegeLevelContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PrivilegeLevelContext))

	return p
}

func (s *CurrentSchemaPriviLevelContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CurrentSchemaPriviLevelContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *CurrentSchemaPriviLevelContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCurrentSchemaPriviLevel(s)
	}
}

func (s *CurrentSchemaPriviLevelContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCurrentSchemaPriviLevel(s)
	}
}

func (p *MySqlParser) PrivilegeLevel() (localctx IPrivilegeLevelContext) {
	this := p
	_ = this

	localctx = NewPrivilegeLevelContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 428, MySqlParserRULE_privilegeLevel)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5001)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 716, p.GetParserRuleContext()) {
	case 1:
		localctx = NewCurrentSchemaPriviLevelContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(4985)
			p.Match(MySqlParserSTAR)
		}

	case 2:
		localctx = NewGlobalPrivLevelContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(4986)
			p.Match(MySqlParserSTAR)
		}
		{
			p.SetState(4987)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(4988)
			p.Match(MySqlParserSTAR)
		}

	case 3:
		localctx = NewDefiniteSchemaPrivLevelContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(4989)
			p.Uid()
		}
		{
			p.SetState(4990)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(4991)
			p.Match(MySqlParserSTAR)
		}

	case 4:
		localctx = NewDefiniteFullTablePrivLevelContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(4993)
			p.Uid()
		}
		{
			p.SetState(4994)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(4995)
			p.Uid()
		}

	case 5:
		localctx = NewDefiniteFullTablePrivLevel2Context(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(4997)
			p.Uid()
		}
		{
			p.SetState(4998)
			p.DottedId()
		}

	case 6:
		localctx = NewDefiniteTablePrivLevelContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5000)
			p.Uid()
		}

	}

	return localctx
}

// IRenameUserClauseContext is an interface to support dynamic dispatch.
type IRenameUserClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetFromFirst returns the fromFirst rule contexts.
	GetFromFirst() IUserNameContext

	// GetToFirst returns the toFirst rule contexts.
	GetToFirst() IUserNameContext

	// SetFromFirst sets the fromFirst rule contexts.
	SetFromFirst(IUserNameContext)

	// SetToFirst sets the toFirst rule contexts.
	SetToFirst(IUserNameContext)

	// IsRenameUserClauseContext differentiates from other interfaces.
	IsRenameUserClauseContext()
}

type RenameUserClauseContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	fromFirst IUserNameContext
	toFirst   IUserNameContext
}

func NewEmptyRenameUserClauseContext() *RenameUserClauseContext {
	var p = new(RenameUserClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_renameUserClause
	return p
}

func (*RenameUserClauseContext) IsRenameUserClauseContext() {}

func NewRenameUserClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RenameUserClauseContext {
	var p = new(RenameUserClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_renameUserClause

	return p
}

func (s *RenameUserClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *RenameUserClauseContext) GetFromFirst() IUserNameContext { return s.fromFirst }

func (s *RenameUserClauseContext) GetToFirst() IUserNameContext { return s.toFirst }

func (s *RenameUserClauseContext) SetFromFirst(v IUserNameContext) { s.fromFirst = v }

func (s *RenameUserClauseContext) SetToFirst(v IUserNameContext) { s.toFirst = v }

func (s *RenameUserClauseContext) TO() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO, 0)
}

func (s *RenameUserClauseContext) AllUserName() []IUserNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUserNameContext)(nil)).Elem())
	var tst = make([]IUserNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUserNameContext)
		}
	}

	return tst
}

func (s *RenameUserClauseContext) UserName(i int) IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *RenameUserClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RenameUserClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RenameUserClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRenameUserClause(s)
	}
}

func (s *RenameUserClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRenameUserClause(s)
	}
}

func (p *MySqlParser) RenameUserClause() (localctx IRenameUserClauseContext) {
	this := p
	_ = this

	localctx = NewRenameUserClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 430, MySqlParserRULE_renameUserClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5003)

		var _x = p.UserName()

		localctx.(*RenameUserClauseContext).fromFirst = _x
	}
	{
		p.SetState(5004)
		p.Match(MySqlParserTO)
	}
	{
		p.SetState(5005)

		var _x = p.UserName()

		localctx.(*RenameUserClauseContext).toFirst = _x
	}

	return localctx
}

// IAnalyzeTableContext is an interface to support dynamic dispatch.
type IAnalyzeTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetActionOption returns the actionOption token.
	GetActionOption() antlr.Token

	// SetActionOption sets the actionOption token.
	SetActionOption(antlr.Token)

	// IsAnalyzeTableContext differentiates from other interfaces.
	IsAnalyzeTableContext()
}

type AnalyzeTableContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	actionOption antlr.Token
}

func NewEmptyAnalyzeTableContext() *AnalyzeTableContext {
	var p = new(AnalyzeTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_analyzeTable
	return p
}

func (*AnalyzeTableContext) IsAnalyzeTableContext() {}

func NewAnalyzeTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AnalyzeTableContext {
	var p = new(AnalyzeTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_analyzeTable

	return p
}

func (s *AnalyzeTableContext) GetParser() antlr.Parser { return s.parser }

func (s *AnalyzeTableContext) GetActionOption() antlr.Token { return s.actionOption }

func (s *AnalyzeTableContext) SetActionOption(v antlr.Token) { s.actionOption = v }

func (s *AnalyzeTableContext) ANALYZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserANALYZE, 0)
}

func (s *AnalyzeTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *AnalyzeTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *AnalyzeTableContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *AnalyzeTableContext) AllHISTOGRAM() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserHISTOGRAM)
}

func (s *AnalyzeTableContext) HISTOGRAM(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserHISTOGRAM, i)
}

func (s *AnalyzeTableContext) AllON() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserON)
}

func (s *AnalyzeTableContext) ON(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserON, i)
}

func (s *AnalyzeTableContext) AllFullColumnName() []IFullColumnNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem())
	var tst = make([]IFullColumnNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullColumnNameContext)
		}
	}

	return tst
}

func (s *AnalyzeTableContext) FullColumnName(i int) IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *AnalyzeTableContext) DROP() antlr.TerminalNode {
	return s.GetToken(MySqlParserDROP, 0)
}

func (s *AnalyzeTableContext) NO_WRITE_TO_BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO_WRITE_TO_BINLOG, 0)
}

func (s *AnalyzeTableContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *AnalyzeTableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AnalyzeTableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AnalyzeTableContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *AnalyzeTableContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *AnalyzeTableContext) BUCKETS() antlr.TerminalNode {
	return s.GetToken(MySqlParserBUCKETS, 0)
}

func (s *AnalyzeTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AnalyzeTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AnalyzeTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAnalyzeTable(s)
	}
}

func (s *AnalyzeTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAnalyzeTable(s)
	}
}

func (p *MySqlParser) AnalyzeTable() (localctx IAnalyzeTableContext) {
	this := p
	_ = this

	localctx = NewAnalyzeTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 432, MySqlParserRULE_analyzeTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5007)
		p.Match(MySqlParserANALYZE)
	}
	p.SetState(5009)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL {
		{
			p.SetState(5008)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*AnalyzeTableContext).actionOption = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*AnalyzeTableContext).actionOption = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5011)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(5012)
		p.Tables()
	}
	p.SetState(5030)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 720, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5013)
			p.Match(MySqlParserUPDATE)
		}
		{
			p.SetState(5014)
			p.Match(MySqlParserHISTOGRAM)
		}
		{
			p.SetState(5015)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(5016)
			p.FullColumnName()
		}
		p.SetState(5021)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5017)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5018)
				p.FullColumnName()
			}

			p.SetState(5023)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(5028)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWITH {
			{
				p.SetState(5024)
				p.Match(MySqlParserWITH)
			}
			{
				p.SetState(5025)
				p.DecimalLiteral()
			}
			{
				p.SetState(5026)
				p.Match(MySqlParserBUCKETS)
			}

		}

	}
	p.SetState(5043)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 722, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5032)
			p.Match(MySqlParserDROP)
		}
		{
			p.SetState(5033)
			p.Match(MySqlParserHISTOGRAM)
		}
		{
			p.SetState(5034)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(5035)
			p.FullColumnName()
		}
		p.SetState(5040)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5036)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5037)
				p.FullColumnName()
			}

			p.SetState(5042)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// ICheckTableContext is an interface to support dynamic dispatch.
type ICheckTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCheckTableContext differentiates from other interfaces.
	IsCheckTableContext()
}

type CheckTableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCheckTableContext() *CheckTableContext {
	var p = new(CheckTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_checkTable
	return p
}

func (*CheckTableContext) IsCheckTableContext() {}

func NewCheckTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CheckTableContext {
	var p = new(CheckTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_checkTable

	return p
}

func (s *CheckTableContext) GetParser() antlr.Parser { return s.parser }

func (s *CheckTableContext) CHECK() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECK, 0)
}

func (s *CheckTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *CheckTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *CheckTableContext) AllCheckTableOption() []ICheckTableOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICheckTableOptionContext)(nil)).Elem())
	var tst = make([]ICheckTableOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICheckTableOptionContext)
		}
	}

	return tst
}

func (s *CheckTableContext) CheckTableOption(i int) ICheckTableOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICheckTableOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICheckTableOptionContext)
}

func (s *CheckTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CheckTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CheckTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCheckTable(s)
	}
}

func (s *CheckTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCheckTable(s)
	}
}

func (p *MySqlParser) CheckTable() (localctx ICheckTableContext) {
	this := p
	_ = this

	localctx = NewCheckTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 434, MySqlParserRULE_checkTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5045)
		p.Match(MySqlParserCHECK)
	}
	{
		p.SetState(5046)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(5047)
		p.Tables()
	}
	p.SetState(5051)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserFOR || _la == MySqlParserCHANGED || _la == MySqlParserEXTENDED || _la == MySqlParserFAST || _la == MySqlParserMEDIUM || _la == MySqlParserQUICK {
		{
			p.SetState(5048)
			p.CheckTableOption()
		}

		p.SetState(5053)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IChecksumTableContext is an interface to support dynamic dispatch.
type IChecksumTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetActionOption returns the actionOption token.
	GetActionOption() antlr.Token

	// SetActionOption sets the actionOption token.
	SetActionOption(antlr.Token)

	// IsChecksumTableContext differentiates from other interfaces.
	IsChecksumTableContext()
}

type ChecksumTableContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	actionOption antlr.Token
}

func NewEmptyChecksumTableContext() *ChecksumTableContext {
	var p = new(ChecksumTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_checksumTable
	return p
}

func (*ChecksumTableContext) IsChecksumTableContext() {}

func NewChecksumTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ChecksumTableContext {
	var p = new(ChecksumTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_checksumTable

	return p
}

func (s *ChecksumTableContext) GetParser() antlr.Parser { return s.parser }

func (s *ChecksumTableContext) GetActionOption() antlr.Token { return s.actionOption }

func (s *ChecksumTableContext) SetActionOption(v antlr.Token) { s.actionOption = v }

func (s *ChecksumTableContext) CHECKSUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECKSUM, 0)
}

func (s *ChecksumTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *ChecksumTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *ChecksumTableContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *ChecksumTableContext) EXTENDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENDED, 0)
}

func (s *ChecksumTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ChecksumTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ChecksumTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterChecksumTable(s)
	}
}

func (s *ChecksumTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitChecksumTable(s)
	}
}

func (p *MySqlParser) ChecksumTable() (localctx IChecksumTableContext) {
	this := p
	_ = this

	localctx = NewChecksumTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 436, MySqlParserRULE_checksumTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5054)
		p.Match(MySqlParserCHECKSUM)
	}
	{
		p.SetState(5055)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(5056)
		p.Tables()
	}
	p.SetState(5058)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEXTENDED || _la == MySqlParserQUICK {
		{
			p.SetState(5057)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ChecksumTableContext).actionOption = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserEXTENDED || _la == MySqlParserQUICK) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ChecksumTableContext).actionOption = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IOptimizeTableContext is an interface to support dynamic dispatch.
type IOptimizeTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetActionOption returns the actionOption token.
	GetActionOption() antlr.Token

	// SetActionOption sets the actionOption token.
	SetActionOption(antlr.Token)

	// IsOptimizeTableContext differentiates from other interfaces.
	IsOptimizeTableContext()
}

type OptimizeTableContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	actionOption antlr.Token
}

func NewEmptyOptimizeTableContext() *OptimizeTableContext {
	var p = new(OptimizeTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_optimizeTable
	return p
}

func (*OptimizeTableContext) IsOptimizeTableContext() {}

func NewOptimizeTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptimizeTableContext {
	var p = new(OptimizeTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_optimizeTable

	return p
}

func (s *OptimizeTableContext) GetParser() antlr.Parser { return s.parser }

func (s *OptimizeTableContext) GetActionOption() antlr.Token { return s.actionOption }

func (s *OptimizeTableContext) SetActionOption(v antlr.Token) { s.actionOption = v }

func (s *OptimizeTableContext) OPTIMIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIMIZE, 0)
}

func (s *OptimizeTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *OptimizeTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *OptimizeTableContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *OptimizeTableContext) NO_WRITE_TO_BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO_WRITE_TO_BINLOG, 0)
}

func (s *OptimizeTableContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *OptimizeTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OptimizeTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *OptimizeTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOptimizeTable(s)
	}
}

func (s *OptimizeTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOptimizeTable(s)
	}
}

func (p *MySqlParser) OptimizeTable() (localctx IOptimizeTableContext) {
	this := p
	_ = this

	localctx = NewOptimizeTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 438, MySqlParserRULE_optimizeTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5060)
		p.Match(MySqlParserOPTIMIZE)
	}
	p.SetState(5062)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL {
		{
			p.SetState(5061)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*OptimizeTableContext).actionOption = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*OptimizeTableContext).actionOption = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5064)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserTABLE || _la == MySqlParserTABLES) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(5065)
		p.Tables()
	}

	return localctx
}

// IRepairTableContext is an interface to support dynamic dispatch.
type IRepairTableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetActionOption returns the actionOption token.
	GetActionOption() antlr.Token

	// SetActionOption sets the actionOption token.
	SetActionOption(antlr.Token)

	// IsRepairTableContext differentiates from other interfaces.
	IsRepairTableContext()
}

type RepairTableContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	actionOption antlr.Token
}

func NewEmptyRepairTableContext() *RepairTableContext {
	var p = new(RepairTableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_repairTable
	return p
}

func (*RepairTableContext) IsRepairTableContext() {}

func NewRepairTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RepairTableContext {
	var p = new(RepairTableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_repairTable

	return p
}

func (s *RepairTableContext) GetParser() antlr.Parser { return s.parser }

func (s *RepairTableContext) GetActionOption() antlr.Token { return s.actionOption }

func (s *RepairTableContext) SetActionOption(v antlr.Token) { s.actionOption = v }

func (s *RepairTableContext) REPAIR() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPAIR, 0)
}

func (s *RepairTableContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *RepairTableContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *RepairTableContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *RepairTableContext) EXTENDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENDED, 0)
}

func (s *RepairTableContext) USE_FRM() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSE_FRM, 0)
}

func (s *RepairTableContext) NO_WRITE_TO_BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO_WRITE_TO_BINLOG, 0)
}

func (s *RepairTableContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *RepairTableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RepairTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *RepairTableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRepairTable(s)
	}
}

func (s *RepairTableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRepairTable(s)
	}
}

func (p *MySqlParser) RepairTable() (localctx IRepairTableContext) {
	this := p
	_ = this

	localctx = NewRepairTableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 440, MySqlParserRULE_repairTable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5067)
		p.Match(MySqlParserREPAIR)
	}
	p.SetState(5069)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL {
		{
			p.SetState(5068)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*RepairTableContext).actionOption = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*RepairTableContext).actionOption = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5071)
		p.Match(MySqlParserTABLE)
	}
	{
		p.SetState(5072)
		p.Tables()
	}
	p.SetState(5074)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserQUICK {
		{
			p.SetState(5073)
			p.Match(MySqlParserQUICK)
		}

	}
	p.SetState(5077)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEXTENDED {
		{
			p.SetState(5076)
			p.Match(MySqlParserEXTENDED)
		}

	}
	p.SetState(5080)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserUSE_FRM {
		{
			p.SetState(5079)
			p.Match(MySqlParserUSE_FRM)
		}

	}

	return localctx
}

// ICheckTableOptionContext is an interface to support dynamic dispatch.
type ICheckTableOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCheckTableOptionContext differentiates from other interfaces.
	IsCheckTableOptionContext()
}

type CheckTableOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCheckTableOptionContext() *CheckTableOptionContext {
	var p = new(CheckTableOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_checkTableOption
	return p
}

func (*CheckTableOptionContext) IsCheckTableOptionContext() {}

func NewCheckTableOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CheckTableOptionContext {
	var p = new(CheckTableOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_checkTableOption

	return p
}

func (s *CheckTableOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *CheckTableOptionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *CheckTableOptionContext) UPGRADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPGRADE, 0)
}

func (s *CheckTableOptionContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *CheckTableOptionContext) FAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFAST, 0)
}

func (s *CheckTableOptionContext) MEDIUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEDIUM, 0)
}

func (s *CheckTableOptionContext) EXTENDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENDED, 0)
}

func (s *CheckTableOptionContext) CHANGED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANGED, 0)
}

func (s *CheckTableOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CheckTableOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CheckTableOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCheckTableOption(s)
	}
}

func (s *CheckTableOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCheckTableOption(s)
	}
}

func (p *MySqlParser) CheckTableOption() (localctx ICheckTableOptionContext) {
	this := p
	_ = this

	localctx = NewCheckTableOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 442, MySqlParserRULE_checkTableOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5089)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserFOR:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5082)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(5083)
			p.Match(MySqlParserUPGRADE)
		}

	case MySqlParserQUICK:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5084)
			p.Match(MySqlParserQUICK)
		}

	case MySqlParserFAST:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5085)
			p.Match(MySqlParserFAST)
		}

	case MySqlParserMEDIUM:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5086)
			p.Match(MySqlParserMEDIUM)
		}

	case MySqlParserEXTENDED:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5087)
			p.Match(MySqlParserEXTENDED)
		}

	case MySqlParserCHANGED:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5088)
			p.Match(MySqlParserCHANGED)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ICreateUdfunctionContext is an interface to support dynamic dispatch.
type ICreateUdfunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetReturnType returns the returnType token.
	GetReturnType() antlr.Token

	// SetReturnType sets the returnType token.
	SetReturnType(antlr.Token)

	// IsCreateUdfunctionContext differentiates from other interfaces.
	IsCreateUdfunctionContext()
}

type CreateUdfunctionContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	returnType antlr.Token
}

func NewEmptyCreateUdfunctionContext() *CreateUdfunctionContext {
	var p = new(CreateUdfunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_createUdfunction
	return p
}

func (*CreateUdfunctionContext) IsCreateUdfunctionContext() {}

func NewCreateUdfunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateUdfunctionContext {
	var p = new(CreateUdfunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_createUdfunction

	return p
}

func (s *CreateUdfunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *CreateUdfunctionContext) GetReturnType() antlr.Token { return s.returnType }

func (s *CreateUdfunctionContext) SetReturnType(v antlr.Token) { s.returnType = v }

func (s *CreateUdfunctionContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *CreateUdfunctionContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *CreateUdfunctionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CreateUdfunctionContext) RETURNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNS, 0)
}

func (s *CreateUdfunctionContext) SONAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSONAME, 0)
}

func (s *CreateUdfunctionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CreateUdfunctionContext) STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING, 0)
}

func (s *CreateUdfunctionContext) INTEGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTEGER, 0)
}

func (s *CreateUdfunctionContext) REAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAL, 0)
}

func (s *CreateUdfunctionContext) DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECIMAL, 0)
}

func (s *CreateUdfunctionContext) AGGREGATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserAGGREGATE, 0)
}

func (s *CreateUdfunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CreateUdfunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CreateUdfunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCreateUdfunction(s)
	}
}

func (s *CreateUdfunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCreateUdfunction(s)
	}
}

func (p *MySqlParser) CreateUdfunction() (localctx ICreateUdfunctionContext) {
	this := p
	_ = this

	localctx = NewCreateUdfunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 444, MySqlParserRULE_createUdfunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5091)
		p.Match(MySqlParserCREATE)
	}
	p.SetState(5093)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserAGGREGATE {
		{
			p.SetState(5092)
			p.Match(MySqlParserAGGREGATE)
		}

	}
	{
		p.SetState(5095)
		p.Match(MySqlParserFUNCTION)
	}
	{
		p.SetState(5096)
		p.Uid()
	}
	{
		p.SetState(5097)
		p.Match(MySqlParserRETURNS)
	}
	{
		p.SetState(5098)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*CreateUdfunctionContext).returnType = _lt

		_la = p.GetTokenStream().LA(1)

		if !((((_la-195)&-(0x1f+1)) == 0 && ((1<<uint((_la-195)))&((1<<(MySqlParserINTEGER-195))|(1<<(MySqlParserREAL-195))|(1<<(MySqlParserDECIMAL-195)))) != 0) || _la == MySqlParserSTRING) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*CreateUdfunctionContext).returnType = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(5099)
		p.Match(MySqlParserSONAME)
	}
	{
		p.SetState(5100)
		p.Match(MySqlParserSTRING_LITERAL)
	}

	return localctx
}

// IInstallPluginContext is an interface to support dynamic dispatch.
type IInstallPluginContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsInstallPluginContext differentiates from other interfaces.
	IsInstallPluginContext()
}

type InstallPluginContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyInstallPluginContext() *InstallPluginContext {
	var p = new(InstallPluginContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_installPlugin
	return p
}

func (*InstallPluginContext) IsInstallPluginContext() {}

func NewInstallPluginContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InstallPluginContext {
	var p = new(InstallPluginContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_installPlugin

	return p
}

func (s *InstallPluginContext) GetParser() antlr.Parser { return s.parser }

func (s *InstallPluginContext) INSTALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSTALL, 0)
}

func (s *InstallPluginContext) PLUGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGIN, 0)
}

func (s *InstallPluginContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *InstallPluginContext) SONAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSONAME, 0)
}

func (s *InstallPluginContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *InstallPluginContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *InstallPluginContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *InstallPluginContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterInstallPlugin(s)
	}
}

func (s *InstallPluginContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitInstallPlugin(s)
	}
}

func (p *MySqlParser) InstallPlugin() (localctx IInstallPluginContext) {
	this := p
	_ = this

	localctx = NewInstallPluginContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 446, MySqlParserRULE_installPlugin)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5102)
		p.Match(MySqlParserINSTALL)
	}
	{
		p.SetState(5103)
		p.Match(MySqlParserPLUGIN)
	}
	{
		p.SetState(5104)
		p.Uid()
	}
	{
		p.SetState(5105)
		p.Match(MySqlParserSONAME)
	}
	{
		p.SetState(5106)
		p.Match(MySqlParserSTRING_LITERAL)
	}

	return localctx
}

// IUninstallPluginContext is an interface to support dynamic dispatch.
type IUninstallPluginContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUninstallPluginContext differentiates from other interfaces.
	IsUninstallPluginContext()
}

type UninstallPluginContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUninstallPluginContext() *UninstallPluginContext {
	var p = new(UninstallPluginContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_uninstallPlugin
	return p
}

func (*UninstallPluginContext) IsUninstallPluginContext() {}

func NewUninstallPluginContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UninstallPluginContext {
	var p = new(UninstallPluginContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_uninstallPlugin

	return p
}

func (s *UninstallPluginContext) GetParser() antlr.Parser { return s.parser }

func (s *UninstallPluginContext) UNINSTALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNINSTALL, 0)
}

func (s *UninstallPluginContext) PLUGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGIN, 0)
}

func (s *UninstallPluginContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *UninstallPluginContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UninstallPluginContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UninstallPluginContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUninstallPlugin(s)
	}
}

func (s *UninstallPluginContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUninstallPlugin(s)
	}
}

func (p *MySqlParser) UninstallPlugin() (localctx IUninstallPluginContext) {
	this := p
	_ = this

	localctx = NewUninstallPluginContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 448, MySqlParserRULE_uninstallPlugin)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5108)
		p.Match(MySqlParserUNINSTALL)
	}
	{
		p.SetState(5109)
		p.Match(MySqlParserPLUGIN)
	}
	{
		p.SetState(5110)
		p.Uid()
	}

	return localctx
}

// ISetStatementContext is an interface to support dynamic dispatch.
type ISetStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSetStatementContext differentiates from other interfaces.
	IsSetStatementContext()
}

type SetStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySetStatementContext() *SetStatementContext {
	var p = new(SetStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_setStatement
	return p
}

func (*SetStatementContext) IsSetStatementContext() {}

func NewSetStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetStatementContext {
	var p = new(SetStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_setStatement

	return p
}

func (s *SetStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SetStatementContext) CopyFrom(ctx *SetStatementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SetStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SetTransactionContext struct {
	*SetStatementContext
}

func NewSetTransactionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetTransactionContext {
	var p = new(SetTransactionContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetTransactionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetTransactionContext) SetTransactionStatement() ISetTransactionStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISetTransactionStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISetTransactionStatementContext)
}

func (s *SetTransactionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetTransaction(s)
	}
}

func (s *SetTransactionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetTransaction(s)
	}
}

type SetCharsetContext struct {
	*SetStatementContext
}

func NewSetCharsetContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetCharsetContext {
	var p = new(SetCharsetContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetCharsetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetCharsetContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetCharsetContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *SetCharsetContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *SetCharsetContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *SetCharsetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetCharset(s)
	}
}

func (s *SetCharsetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetCharset(s)
	}
}

type SetNamesContext struct {
	*SetStatementContext
}

func NewSetNamesContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetNamesContext {
	var p = new(SetNamesContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetNamesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetNamesContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetNamesContext) NAMES() antlr.TerminalNode {
	return s.GetToken(MySqlParserNAMES, 0)
}

func (s *SetNamesContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *SetNamesContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *SetNamesContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *SetNamesContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *SetNamesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetNames(s)
	}
}

func (s *SetNamesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetNames(s)
	}
}

type SetPasswordContext struct {
	*SetStatementContext
}

func NewSetPasswordContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetPasswordContext {
	var p = new(SetPasswordContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetPasswordContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetPasswordContext) SetPasswordStatement() ISetPasswordStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISetPasswordStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISetPasswordStatementContext)
}

func (s *SetPasswordContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetPassword(s)
	}
}

func (s *SetPasswordContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetPassword(s)
	}
}

type SetAutocommitContext struct {
	*SetStatementContext
}

func NewSetAutocommitContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetAutocommitContext {
	var p = new(SetAutocommitContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetAutocommitContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetAutocommitContext) SetAutocommitStatement() ISetAutocommitStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISetAutocommitStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISetAutocommitStatementContext)
}

func (s *SetAutocommitContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetAutocommit(s)
	}
}

func (s *SetAutocommitContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetAutocommit(s)
	}
}

type SetNewValueInsideTriggerContext struct {
	*SetStatementContext
}

func NewSetNewValueInsideTriggerContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetNewValueInsideTriggerContext {
	var p = new(SetNewValueInsideTriggerContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetNewValueInsideTriggerContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetNewValueInsideTriggerContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetNewValueInsideTriggerContext) AllFullId() []IFullIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullIdContext)(nil)).Elem())
	var tst = make([]IFullIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullIdContext)
		}
	}

	return tst
}

func (s *SetNewValueInsideTriggerContext) FullId(i int) IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *SetNewValueInsideTriggerContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *SetNewValueInsideTriggerContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SetNewValueInsideTriggerContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *SetNewValueInsideTriggerContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *SetNewValueInsideTriggerContext) AllVAR_ASSIGN() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserVAR_ASSIGN)
}

func (s *SetNewValueInsideTriggerContext) VAR_ASSIGN(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_ASSIGN, i)
}

func (s *SetNewValueInsideTriggerContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SetNewValueInsideTriggerContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SetNewValueInsideTriggerContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetNewValueInsideTrigger(s)
	}
}

func (s *SetNewValueInsideTriggerContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetNewValueInsideTrigger(s)
	}
}

type SetVariableContext struct {
	*SetStatementContext
}

func NewSetVariableContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SetVariableContext {
	var p = new(SetVariableContext)

	p.SetStatementContext = NewEmptySetStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SetStatementContext))

	return p
}

func (s *SetVariableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SetVariableContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SetVariableContext) AllVariableClause() []IVariableClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IVariableClauseContext)(nil)).Elem())
	var tst = make([]IVariableClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IVariableClauseContext)
		}
	}

	return tst
}

func (s *SetVariableContext) VariableClause(i int) IVariableClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IVariableClauseContext)
}

func (s *SetVariableContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *SetVariableContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SetVariableContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *SetVariableContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *SetVariableContext) AllVAR_ASSIGN() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserVAR_ASSIGN)
}

func (s *SetVariableContext) VAR_ASSIGN(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_ASSIGN, i)
}

func (s *SetVariableContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SetVariableContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SetVariableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSetVariable(s)
	}
}

func (s *SetVariableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSetVariable(s)
	}
}

func (p *MySqlParser) SetStatement() (localctx ISetStatementContext) {
	this := p
	_ = this

	localctx = NewSetStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 450, MySqlParserRULE_setStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5159)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 737, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSetVariableContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5112)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5113)
			p.VariableClause()
		}
		{
			p.SetState(5114)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserVAR_ASSIGN || _la == MySqlParserEQUAL_SYMBOL) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5115)
			p.expression(0)
		}
		p.SetState(5123)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5116)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5117)
				p.VariableClause()
			}
			{
				p.SetState(5118)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserVAR_ASSIGN || _la == MySqlParserEQUAL_SYMBOL) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5119)
				p.expression(0)
			}

			p.SetState(5125)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewSetCharsetContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5126)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5127)
			p.CharSet()
		}
		p.SetState(5130)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserBINARY, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL:
			{
				p.SetState(5128)
				p.CharsetName()
			}

		case MySqlParserDEFAULT:
			{
				p.SetState(5129)
				p.Match(MySqlParserDEFAULT)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 3:
		localctx = NewSetNamesContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5132)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5133)
			p.Match(MySqlParserNAMES)
		}
		p.SetState(5140)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserBINARY, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL:
			{
				p.SetState(5134)
				p.CharsetName()
			}
			p.SetState(5137)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserCOLLATE {
				{
					p.SetState(5135)
					p.Match(MySqlParserCOLLATE)
				}
				{
					p.SetState(5136)
					p.CollationName()
				}

			}

		case MySqlParserDEFAULT:
			{
				p.SetState(5139)
				p.Match(MySqlParserDEFAULT)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 4:
		localctx = NewSetPasswordContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5142)
			p.SetPasswordStatement()
		}

	case 5:
		localctx = NewSetTransactionContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5143)
			p.SetTransactionStatement()
		}

	case 6:
		localctx = NewSetAutocommitContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5144)
			p.SetAutocommitStatement()
		}

	case 7:
		localctx = NewSetNewValueInsideTriggerContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5145)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5146)
			p.FullId()
		}
		{
			p.SetState(5147)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserVAR_ASSIGN || _la == MySqlParserEQUAL_SYMBOL) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5148)
			p.expression(0)
		}
		p.SetState(5156)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5149)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5150)
				p.FullId()
			}
			{
				p.SetState(5151)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserVAR_ASSIGN || _la == MySqlParserEQUAL_SYMBOL) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5152)
				p.expression(0)
			}

			p.SetState(5158)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IShowStatementContext is an interface to support dynamic dispatch.
type IShowStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowStatementContext differentiates from other interfaces.
	IsShowStatementContext()
}

type ShowStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowStatementContext() *ShowStatementContext {
	var p = new(ShowStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showStatement
	return p
}

func (*ShowStatementContext) IsShowStatementContext() {}

func NewShowStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowStatementContext {
	var p = new(ShowStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showStatement

	return p
}

func (s *ShowStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowStatementContext) CopyFrom(ctx *ShowStatementContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ShowStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type ShowOpenTablesContext struct {
	*ShowStatementContext
	schemaFormat antlr.Token
}

func NewShowOpenTablesContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowOpenTablesContext {
	var p = new(ShowOpenTablesContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowOpenTablesContext) GetSchemaFormat() antlr.Token { return s.schemaFormat }

func (s *ShowOpenTablesContext) SetSchemaFormat(v antlr.Token) { s.schemaFormat = v }

func (s *ShowOpenTablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowOpenTablesContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowOpenTablesContext) OPEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPEN, 0)
}

func (s *ShowOpenTablesContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *ShowOpenTablesContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ShowOpenTablesContext) ShowFilter() IShowFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowFilterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowFilterContext)
}

func (s *ShowOpenTablesContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *ShowOpenTablesContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *ShowOpenTablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowOpenTables(s)
	}
}

func (s *ShowOpenTablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowOpenTables(s)
	}
}

type ShowGlobalInfoContext struct {
	*ShowStatementContext
}

func NewShowGlobalInfoContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowGlobalInfoContext {
	var p = new(ShowGlobalInfoContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowGlobalInfoContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowGlobalInfoContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowGlobalInfoContext) ShowGlobalInfoClause() IShowGlobalInfoClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowGlobalInfoClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowGlobalInfoClauseContext)
}

func (s *ShowGlobalInfoContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowGlobalInfo(s)
	}
}

func (s *ShowGlobalInfoContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowGlobalInfo(s)
	}
}

type ShowCreateFullIdObjectContext struct {
	*ShowStatementContext
	namedEntity antlr.Token
}

func NewShowCreateFullIdObjectContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowCreateFullIdObjectContext {
	var p = new(ShowCreateFullIdObjectContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowCreateFullIdObjectContext) GetNamedEntity() antlr.Token { return s.namedEntity }

func (s *ShowCreateFullIdObjectContext) SetNamedEntity(v antlr.Token) { s.namedEntity = v }

func (s *ShowCreateFullIdObjectContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowCreateFullIdObjectContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowCreateFullIdObjectContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *ShowCreateFullIdObjectContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *ShowCreateFullIdObjectContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *ShowCreateFullIdObjectContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *ShowCreateFullIdObjectContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *ShowCreateFullIdObjectContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *ShowCreateFullIdObjectContext) TRIGGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGER, 0)
}

func (s *ShowCreateFullIdObjectContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *ShowCreateFullIdObjectContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowCreateFullIdObject(s)
	}
}

func (s *ShowCreateFullIdObjectContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowCreateFullIdObject(s)
	}
}

type ShowCreateUserContext struct {
	*ShowStatementContext
}

func NewShowCreateUserContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowCreateUserContext {
	var p = new(ShowCreateUserContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowCreateUserContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowCreateUserContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowCreateUserContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *ShowCreateUserContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *ShowCreateUserContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *ShowCreateUserContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowCreateUser(s)
	}
}

func (s *ShowCreateUserContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowCreateUser(s)
	}
}

type ShowErrorsContext struct {
	*ShowStatementContext
	errorFormat antlr.Token
	offset      IDecimalLiteralContext
	rowCount    IDecimalLiteralContext
}

func NewShowErrorsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowErrorsContext {
	var p = new(ShowErrorsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowErrorsContext) GetErrorFormat() antlr.Token { return s.errorFormat }

func (s *ShowErrorsContext) SetErrorFormat(v antlr.Token) { s.errorFormat = v }

func (s *ShowErrorsContext) GetOffset() IDecimalLiteralContext { return s.offset }

func (s *ShowErrorsContext) GetRowCount() IDecimalLiteralContext { return s.rowCount }

func (s *ShowErrorsContext) SetOffset(v IDecimalLiteralContext) { s.offset = v }

func (s *ShowErrorsContext) SetRowCount(v IDecimalLiteralContext) { s.rowCount = v }

func (s *ShowErrorsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowErrorsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowErrorsContext) ERRORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserERRORS, 0)
}

func (s *ShowErrorsContext) WARNINGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserWARNINGS, 0)
}

func (s *ShowErrorsContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *ShowErrorsContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *ShowErrorsContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *ShowErrorsContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *ShowErrorsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowErrors(s)
	}
}

func (s *ShowErrorsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowErrors(s)
	}
}

type ShowCountErrorsContext struct {
	*ShowStatementContext
	errorFormat antlr.Token
}

func NewShowCountErrorsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowCountErrorsContext {
	var p = new(ShowCountErrorsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowCountErrorsContext) GetErrorFormat() antlr.Token { return s.errorFormat }

func (s *ShowCountErrorsContext) SetErrorFormat(v antlr.Token) { s.errorFormat = v }

func (s *ShowCountErrorsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowCountErrorsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowCountErrorsContext) COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOUNT, 0)
}

func (s *ShowCountErrorsContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *ShowCountErrorsContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *ShowCountErrorsContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *ShowCountErrorsContext) ERRORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserERRORS, 0)
}

func (s *ShowCountErrorsContext) WARNINGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserWARNINGS, 0)
}

func (s *ShowCountErrorsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowCountErrors(s)
	}
}

func (s *ShowCountErrorsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowCountErrors(s)
	}
}

type ShowObjectFilterContext struct {
	*ShowStatementContext
}

func NewShowObjectFilterContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowObjectFilterContext {
	var p = new(ShowObjectFilterContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowObjectFilterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowObjectFilterContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowObjectFilterContext) ShowCommonEntity() IShowCommonEntityContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowCommonEntityContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowCommonEntityContext)
}

func (s *ShowObjectFilterContext) ShowFilter() IShowFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowFilterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowFilterContext)
}

func (s *ShowObjectFilterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowObjectFilter(s)
	}
}

func (s *ShowObjectFilterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowObjectFilter(s)
	}
}

type ShowCreateDbContext struct {
	*ShowStatementContext
	schemaFormat antlr.Token
}

func NewShowCreateDbContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowCreateDbContext {
	var p = new(ShowCreateDbContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowCreateDbContext) GetSchemaFormat() antlr.Token { return s.schemaFormat }

func (s *ShowCreateDbContext) SetSchemaFormat(v antlr.Token) { s.schemaFormat = v }

func (s *ShowCreateDbContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowCreateDbContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowCreateDbContext) CREATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE, 0)
}

func (s *ShowCreateDbContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ShowCreateDbContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *ShowCreateDbContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *ShowCreateDbContext) IfNotExists() IIfNotExistsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIfNotExistsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIfNotExistsContext)
}

func (s *ShowCreateDbContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowCreateDb(s)
	}
}

func (s *ShowCreateDbContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowCreateDb(s)
	}
}

type ShowEngineContext struct {
	*ShowStatementContext
	engineOption antlr.Token
}

func NewShowEngineContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowEngineContext {
	var p = new(ShowEngineContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowEngineContext) GetEngineOption() antlr.Token { return s.engineOption }

func (s *ShowEngineContext) SetEngineOption(v antlr.Token) { s.engineOption = v }

func (s *ShowEngineContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowEngineContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowEngineContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *ShowEngineContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *ShowEngineContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *ShowEngineContext) MUTEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserMUTEX, 0)
}

func (s *ShowEngineContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowEngine(s)
	}
}

func (s *ShowEngineContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowEngine(s)
	}
}

type ShowSchemaFilterContext struct {
	*ShowStatementContext
	schemaFormat antlr.Token
}

func NewShowSchemaFilterContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowSchemaFilterContext {
	var p = new(ShowSchemaFilterContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowSchemaFilterContext) GetSchemaFormat() antlr.Token { return s.schemaFormat }

func (s *ShowSchemaFilterContext) SetSchemaFormat(v antlr.Token) { s.schemaFormat = v }

func (s *ShowSchemaFilterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowSchemaFilterContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowSchemaFilterContext) ShowSchemaEntity() IShowSchemaEntityContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowSchemaEntityContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowSchemaEntityContext)
}

func (s *ShowSchemaFilterContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ShowSchemaFilterContext) ShowFilter() IShowFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowFilterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowFilterContext)
}

func (s *ShowSchemaFilterContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *ShowSchemaFilterContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *ShowSchemaFilterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowSchemaFilter(s)
	}
}

func (s *ShowSchemaFilterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowSchemaFilter(s)
	}
}

type ShowIndexesContext struct {
	*ShowStatementContext
	indexFormat  antlr.Token
	tableFormat  antlr.Token
	schemaFormat antlr.Token
}

func NewShowIndexesContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowIndexesContext {
	var p = new(ShowIndexesContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowIndexesContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *ShowIndexesContext) GetTableFormat() antlr.Token { return s.tableFormat }

func (s *ShowIndexesContext) GetSchemaFormat() antlr.Token { return s.schemaFormat }

func (s *ShowIndexesContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *ShowIndexesContext) SetTableFormat(v antlr.Token) { s.tableFormat = v }

func (s *ShowIndexesContext) SetSchemaFormat(v antlr.Token) { s.schemaFormat = v }

func (s *ShowIndexesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowIndexesContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowIndexesContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *ShowIndexesContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *ShowIndexesContext) INDEXES() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEXES, 0)
}

func (s *ShowIndexesContext) KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEYS, 0)
}

func (s *ShowIndexesContext) AllFROM() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserFROM)
}

func (s *ShowIndexesContext) FROM(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, i)
}

func (s *ShowIndexesContext) AllIN() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserIN)
}

func (s *ShowIndexesContext) IN(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, i)
}

func (s *ShowIndexesContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ShowIndexesContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *ShowIndexesContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ShowIndexesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowIndexes(s)
	}
}

func (s *ShowIndexesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowIndexes(s)
	}
}

type ShowLogEventsContext struct {
	*ShowStatementContext
	logFormat    antlr.Token
	filename     antlr.Token
	fromPosition IDecimalLiteralContext
	offset       IDecimalLiteralContext
	rowCount     IDecimalLiteralContext
}

func NewShowLogEventsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowLogEventsContext {
	var p = new(ShowLogEventsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowLogEventsContext) GetLogFormat() antlr.Token { return s.logFormat }

func (s *ShowLogEventsContext) GetFilename() antlr.Token { return s.filename }

func (s *ShowLogEventsContext) SetLogFormat(v antlr.Token) { s.logFormat = v }

func (s *ShowLogEventsContext) SetFilename(v antlr.Token) { s.filename = v }

func (s *ShowLogEventsContext) GetFromPosition() IDecimalLiteralContext { return s.fromPosition }

func (s *ShowLogEventsContext) GetOffset() IDecimalLiteralContext { return s.offset }

func (s *ShowLogEventsContext) GetRowCount() IDecimalLiteralContext { return s.rowCount }

func (s *ShowLogEventsContext) SetFromPosition(v IDecimalLiteralContext) { s.fromPosition = v }

func (s *ShowLogEventsContext) SetOffset(v IDecimalLiteralContext) { s.offset = v }

func (s *ShowLogEventsContext) SetRowCount(v IDecimalLiteralContext) { s.rowCount = v }

func (s *ShowLogEventsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowLogEventsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowLogEventsContext) EVENTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENTS, 0)
}

func (s *ShowLogEventsContext) BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG, 0)
}

func (s *ShowLogEventsContext) RELAYLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAYLOG, 0)
}

func (s *ShowLogEventsContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *ShowLogEventsContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *ShowLogEventsContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *ShowLogEventsContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *ShowLogEventsContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *ShowLogEventsContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *ShowLogEventsContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *ShowLogEventsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowLogEvents(s)
	}
}

func (s *ShowLogEventsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowLogEvents(s)
	}
}

type ShowMasterLogsContext struct {
	*ShowStatementContext
	logFormat antlr.Token
}

func NewShowMasterLogsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowMasterLogsContext {
	var p = new(ShowMasterLogsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowMasterLogsContext) GetLogFormat() antlr.Token { return s.logFormat }

func (s *ShowMasterLogsContext) SetLogFormat(v antlr.Token) { s.logFormat = v }

func (s *ShowMasterLogsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowMasterLogsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowMasterLogsContext) LOGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGS, 0)
}

func (s *ShowMasterLogsContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *ShowMasterLogsContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *ShowMasterLogsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowMasterLogs(s)
	}
}

func (s *ShowMasterLogsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowMasterLogs(s)
	}
}

type ShowGrantsContext struct {
	*ShowStatementContext
}

func NewShowGrantsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowGrantsContext {
	var p = new(ShowGrantsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowGrantsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowGrantsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowGrantsContext) GRANTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANTS, 0)
}

func (s *ShowGrantsContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *ShowGrantsContext) UserName() IUserNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUserNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUserNameContext)
}

func (s *ShowGrantsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowGrants(s)
	}
}

func (s *ShowGrantsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowGrants(s)
	}
}

type ShowSlaveStatusContext struct {
	*ShowStatementContext
}

func NewShowSlaveStatusContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowSlaveStatusContext {
	var p = new(ShowSlaveStatusContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowSlaveStatusContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowSlaveStatusContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowSlaveStatusContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *ShowSlaveStatusContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *ShowSlaveStatusContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *ShowSlaveStatusContext) CHANNEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANNEL, 0)
}

func (s *ShowSlaveStatusContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *ShowSlaveStatusContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowSlaveStatus(s)
	}
}

func (s *ShowSlaveStatusContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowSlaveStatus(s)
	}
}

type ShowRoutineContext struct {
	*ShowStatementContext
	routine antlr.Token
}

func NewShowRoutineContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowRoutineContext {
	var p = new(ShowRoutineContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowRoutineContext) GetRoutine() antlr.Token { return s.routine }

func (s *ShowRoutineContext) SetRoutine(v antlr.Token) { s.routine = v }

func (s *ShowRoutineContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowRoutineContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowRoutineContext) CODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCODE, 0)
}

func (s *ShowRoutineContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *ShowRoutineContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *ShowRoutineContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *ShowRoutineContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowRoutine(s)
	}
}

func (s *ShowRoutineContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowRoutine(s)
	}
}

type ShowProfileContext struct {
	*ShowStatementContext
	queryCount IDecimalLiteralContext
	offset     IDecimalLiteralContext
	rowCount   IDecimalLiteralContext
}

func NewShowProfileContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowProfileContext {
	var p = new(ShowProfileContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowProfileContext) GetQueryCount() IDecimalLiteralContext { return s.queryCount }

func (s *ShowProfileContext) GetOffset() IDecimalLiteralContext { return s.offset }

func (s *ShowProfileContext) GetRowCount() IDecimalLiteralContext { return s.rowCount }

func (s *ShowProfileContext) SetQueryCount(v IDecimalLiteralContext) { s.queryCount = v }

func (s *ShowProfileContext) SetOffset(v IDecimalLiteralContext) { s.offset = v }

func (s *ShowProfileContext) SetRowCount(v IDecimalLiteralContext) { s.rowCount = v }

func (s *ShowProfileContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowProfileContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowProfileContext) PROFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROFILE, 0)
}

func (s *ShowProfileContext) AllShowProfileType() []IShowProfileTypeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IShowProfileTypeContext)(nil)).Elem())
	var tst = make([]IShowProfileTypeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IShowProfileTypeContext)
		}
	}

	return tst
}

func (s *ShowProfileContext) ShowProfileType(i int) IShowProfileTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowProfileTypeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IShowProfileTypeContext)
}

func (s *ShowProfileContext) LIMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIMIT, 0)
}

func (s *ShowProfileContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ShowProfileContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ShowProfileContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *ShowProfileContext) QUERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUERY, 0)
}

func (s *ShowProfileContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *ShowProfileContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *ShowProfileContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowProfile(s)
	}
}

func (s *ShowProfileContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowProfile(s)
	}
}

type ShowColumnsContext struct {
	*ShowStatementContext
	columnsFormat antlr.Token
	tableFormat   antlr.Token
	schemaFormat  antlr.Token
}

func NewShowColumnsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShowColumnsContext {
	var p = new(ShowColumnsContext)

	p.ShowStatementContext = NewEmptyShowStatementContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ShowStatementContext))

	return p
}

func (s *ShowColumnsContext) GetColumnsFormat() antlr.Token { return s.columnsFormat }

func (s *ShowColumnsContext) GetTableFormat() antlr.Token { return s.tableFormat }

func (s *ShowColumnsContext) GetSchemaFormat() antlr.Token { return s.schemaFormat }

func (s *ShowColumnsContext) SetColumnsFormat(v antlr.Token) { s.columnsFormat = v }

func (s *ShowColumnsContext) SetTableFormat(v antlr.Token) { s.tableFormat = v }

func (s *ShowColumnsContext) SetSchemaFormat(v antlr.Token) { s.schemaFormat = v }

func (s *ShowColumnsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowColumnsContext) SHOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW, 0)
}

func (s *ShowColumnsContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *ShowColumnsContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *ShowColumnsContext) FIELDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIELDS, 0)
}

func (s *ShowColumnsContext) AllFROM() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserFROM)
}

func (s *ShowColumnsContext) FROM(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, i)
}

func (s *ShowColumnsContext) AllIN() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserIN)
}

func (s *ShowColumnsContext) IN(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, i)
}

func (s *ShowColumnsContext) FULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULL, 0)
}

func (s *ShowColumnsContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *ShowColumnsContext) ShowFilter() IShowFilterContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IShowFilterContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IShowFilterContext)
}

func (s *ShowColumnsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowColumns(s)
	}
}

func (s *ShowColumnsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowColumns(s)
	}
}

func (p *MySqlParser) ShowStatement() (localctx IShowStatementContext) {
	this := p
	_ = this

	localctx = NewShowStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 452, MySqlParserRULE_showStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5312)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 759, p.GetParserRuleContext()) {
	case 1:
		localctx = NewShowMasterLogsContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5161)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5162)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowMasterLogsContext).logFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserBINARY || _la == MySqlParserMASTER) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowMasterLogsContext).logFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5163)
			p.Match(MySqlParserLOGS)
		}

	case 2:
		localctx = NewShowLogEventsContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5164)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5165)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowLogEventsContext).logFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserBINLOG || _la == MySqlParserRELAYLOG) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowLogEventsContext).logFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5166)
			p.Match(MySqlParserEVENTS)
		}
		p.SetState(5169)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIN {
			{
				p.SetState(5167)
				p.Match(MySqlParserIN)
			}
			{
				p.SetState(5168)

				var _m = p.Match(MySqlParserSTRING_LITERAL)

				localctx.(*ShowLogEventsContext).filename = _m
			}

		}
		p.SetState(5173)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFROM {
			{
				p.SetState(5171)
				p.Match(MySqlParserFROM)
			}
			{
				p.SetState(5172)

				var _x = p.DecimalLiteral()

				localctx.(*ShowLogEventsContext).fromPosition = _x
			}

		}
		p.SetState(5182)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIMIT {
			{
				p.SetState(5175)
				p.Match(MySqlParserLIMIT)
			}
			p.SetState(5179)
			p.GetErrorHandler().Sync(p)

			if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 740, p.GetParserRuleContext()) == 1 {
				{
					p.SetState(5176)

					var _x = p.DecimalLiteral()

					localctx.(*ShowLogEventsContext).offset = _x
				}
				{
					p.SetState(5177)
					p.Match(MySqlParserCOMMA)
				}

			}
			{
				p.SetState(5181)

				var _x = p.DecimalLiteral()

				localctx.(*ShowLogEventsContext).rowCount = _x
			}

		}

	case 3:
		localctx = NewShowObjectFilterContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5184)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5185)
			p.ShowCommonEntity()
		}
		p.SetState(5187)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIKE || _la == MySqlParserWHERE {
			{
				p.SetState(5186)
				p.ShowFilter()
			}

		}

	case 4:
		localctx = NewShowColumnsContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5189)
			p.Match(MySqlParserSHOW)
		}
		p.SetState(5191)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFULL {
			{
				p.SetState(5190)
				p.Match(MySqlParserFULL)
			}

		}
		{
			p.SetState(5193)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowColumnsContext).columnsFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCOLUMNS || _la == MySqlParserFIELDS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowColumnsContext).columnsFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5194)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowColumnsContext).tableFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowColumnsContext).tableFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5195)
			p.TableName()
		}
		p.SetState(5198)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFROM || _la == MySqlParserIN {
			{
				p.SetState(5196)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*ShowColumnsContext).schemaFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*ShowColumnsContext).schemaFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5197)
				p.Uid()
			}

		}
		p.SetState(5201)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIKE || _la == MySqlParserWHERE {
			{
				p.SetState(5200)
				p.ShowFilter()
			}

		}

	case 5:
		localctx = NewShowCreateDbContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5203)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5204)
			p.Match(MySqlParserCREATE)
		}
		{
			p.SetState(5205)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowCreateDbContext).schemaFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserDATABASE || _la == MySqlParserSCHEMA) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowCreateDbContext).schemaFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5207)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserIF {
			{
				p.SetState(5206)
				p.IfNotExists()
			}

		}
		{
			p.SetState(5209)
			p.Uid()
		}

	case 6:
		localctx = NewShowCreateFullIdObjectContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5210)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5211)
			p.Match(MySqlParserCREATE)
		}
		{
			p.SetState(5212)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowCreateFullIdObjectContext).namedEntity = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserPROCEDURE || _la == MySqlParserTABLE || _la == MySqlParserTRIGGER || _la == MySqlParserEVENT || _la == MySqlParserFUNCTION || _la == MySqlParserVIEW) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowCreateFullIdObjectContext).namedEntity = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5213)
			p.FullId()
		}

	case 7:
		localctx = NewShowCreateUserContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5214)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5215)
			p.Match(MySqlParserCREATE)
		}
		{
			p.SetState(5216)
			p.Match(MySqlParserUSER)
		}
		{
			p.SetState(5217)
			p.UserName()
		}

	case 8:
		localctx = NewShowEngineContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(5218)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5219)
			p.Match(MySqlParserENGINE)
		}
		{
			p.SetState(5220)
			p.EngineName()
		}
		{
			p.SetState(5221)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowEngineContext).engineOption = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserMUTEX || _la == MySqlParserSTATUS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowEngineContext).engineOption = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 9:
		localctx = NewShowGlobalInfoContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(5223)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5224)
			p.ShowGlobalInfoClause()
		}

	case 10:
		localctx = NewShowErrorsContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(5225)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5226)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowErrorsContext).errorFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserERRORS || _la == MySqlParserWARNINGS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowErrorsContext).errorFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

		{
			p.SetState(5227)
			p.Match(MySqlParserLIMIT)
		}
		p.SetState(5231)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 747, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5228)

				var _x = p.DecimalLiteral()

				localctx.(*ShowErrorsContext).offset = _x
			}
			{
				p.SetState(5229)
				p.Match(MySqlParserCOMMA)
			}

		}
		{
			p.SetState(5233)

			var _x = p.DecimalLiteral()

			localctx.(*ShowErrorsContext).rowCount = _x
		}

	case 11:
		localctx = NewShowCountErrorsContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(5234)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5235)
			p.Match(MySqlParserCOUNT)
		}
		{
			p.SetState(5236)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(5237)
			p.Match(MySqlParserSTAR)
		}
		{
			p.SetState(5238)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(5239)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowCountErrorsContext).errorFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserERRORS || _la == MySqlParserWARNINGS) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowCountErrorsContext).errorFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 12:
		localctx = NewShowSchemaFilterContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(5240)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5241)
			p.ShowSchemaEntity()
		}
		p.SetState(5244)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFROM || _la == MySqlParserIN {
			{
				p.SetState(5242)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*ShowSchemaFilterContext).schemaFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*ShowSchemaFilterContext).schemaFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5243)
				p.Uid()
			}

		}
		p.SetState(5247)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIKE || _la == MySqlParserWHERE {
			{
				p.SetState(5246)
				p.ShowFilter()
			}

		}

	case 13:
		localctx = NewShowRoutineContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(5249)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5250)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowRoutineContext).routine = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserPROCEDURE || _la == MySqlParserFUNCTION) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowRoutineContext).routine = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5251)
			p.Match(MySqlParserCODE)
		}
		{
			p.SetState(5252)
			p.FullId()
		}

	case 14:
		localctx = NewShowGrantsContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(5253)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5254)
			p.Match(MySqlParserGRANTS)
		}
		p.SetState(5257)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(5255)
				p.Match(MySqlParserFOR)
			}
			{
				p.SetState(5256)
				p.UserName()
			}

		}

	case 15:
		localctx = NewShowIndexesContext(p, localctx)
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(5259)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5260)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowIndexesContext).indexFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserINDEX || _la == MySqlParserKEYS || _la == MySqlParserINDEXES) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowIndexesContext).indexFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5261)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ShowIndexesContext).tableFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ShowIndexesContext).tableFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5262)
			p.TableName()
		}
		p.SetState(5265)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFROM || _la == MySqlParserIN {
			{
				p.SetState(5263)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*ShowIndexesContext).schemaFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*ShowIndexesContext).schemaFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5264)
				p.Uid()
			}

		}
		p.SetState(5269)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserWHERE {
			{
				p.SetState(5267)
				p.Match(MySqlParserWHERE)
			}
			{
				p.SetState(5268)
				p.expression(0)
			}

		}

	case 16:
		localctx = NewShowOpenTablesContext(p, localctx)
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(5271)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5272)
			p.Match(MySqlParserOPEN)
		}
		{
			p.SetState(5273)
			p.Match(MySqlParserTABLES)
		}
		p.SetState(5276)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFROM || _la == MySqlParserIN {
			{
				p.SetState(5274)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*ShowOpenTablesContext).schemaFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserFROM || _la == MySqlParserIN) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*ShowOpenTablesContext).schemaFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(5275)
				p.Uid()
			}

		}
		p.SetState(5279)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLIKE || _la == MySqlParserWHERE {
			{
				p.SetState(5278)
				p.ShowFilter()
			}

		}

	case 17:
		localctx = NewShowProfileContext(p, localctx)
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(5281)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5282)
			p.Match(MySqlParserPROFILE)
		}
		{
			p.SetState(5283)
			p.ShowProfileType()
		}
		p.SetState(5288)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5284)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5285)
				p.ShowProfileType()
			}

			p.SetState(5290)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(5294)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(5291)
				p.Match(MySqlParserFOR)
			}
			{
				p.SetState(5292)
				p.Match(MySqlParserQUERY)
			}
			{
				p.SetState(5293)

				var _x = p.DecimalLiteral()

				localctx.(*ShowProfileContext).queryCount = _x
			}

		}

		{
			p.SetState(5296)
			p.Match(MySqlParserLIMIT)
		}
		p.SetState(5300)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 757, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5297)

				var _x = p.DecimalLiteral()

				localctx.(*ShowProfileContext).offset = _x
			}
			{
				p.SetState(5298)
				p.Match(MySqlParserCOMMA)
			}

		}
		{
			p.SetState(5302)

			var _x = p.DecimalLiteral()

			localctx.(*ShowProfileContext).rowCount = _x
		}

	case 18:
		localctx = NewShowSlaveStatusContext(p, localctx)
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(5304)
			p.Match(MySqlParserSHOW)
		}
		{
			p.SetState(5305)
			p.Match(MySqlParserSLAVE)
		}
		{
			p.SetState(5306)
			p.Match(MySqlParserSTATUS)
		}
		p.SetState(5310)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(5307)
				p.Match(MySqlParserFOR)
			}
			{
				p.SetState(5308)
				p.Match(MySqlParserCHANNEL)
			}
			{
				p.SetState(5309)
				p.Match(MySqlParserSTRING_LITERAL)
			}

		}

	}

	return localctx
}

// IVariableClauseContext is an interface to support dynamic dispatch.
type IVariableClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsVariableClauseContext differentiates from other interfaces.
	IsVariableClauseContext()
}

type VariableClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyVariableClauseContext() *VariableClauseContext {
	var p = new(VariableClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_variableClause
	return p
}

func (*VariableClauseContext) IsVariableClauseContext() {}

func NewVariableClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *VariableClauseContext {
	var p = new(VariableClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_variableClause

	return p
}

func (s *VariableClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *VariableClauseContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *VariableClauseContext) GLOBAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL_ID, 0)
}

func (s *VariableClauseContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *VariableClauseContext) GLOBAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL, 0)
}

func (s *VariableClauseContext) SESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION, 0)
}

func (s *VariableClauseContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *VariableClauseContext) AllAT_SIGN() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserAT_SIGN)
}

func (s *VariableClauseContext) AT_SIGN(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserAT_SIGN, i)
}

func (s *VariableClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *VariableClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *VariableClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterVariableClause(s)
	}
}

func (s *VariableClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitVariableClause(s)
	}
}

func (p *MySqlParser) VariableClause() (localctx IVariableClauseContext) {
	this := p
	_ = this

	localctx = NewVariableClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 454, MySqlParserRULE_variableClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5324)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserLOCAL_ID:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5314)
			p.Match(MySqlParserLOCAL_ID)
		}

	case MySqlParserGLOBAL_ID:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5315)
			p.Match(MySqlParserGLOBAL_ID)
		}

	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserAT_SIGN, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		p.EnterOuterAlt(localctx, 3)
		p.SetState(5321)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 761, p.GetParserRuleContext()) == 1 {
			p.SetState(5318)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserAT_SIGN {
				{
					p.SetState(5316)
					p.Match(MySqlParserAT_SIGN)
				}
				{
					p.SetState(5317)
					p.Match(MySqlParserAT_SIGN)
				}

			}
			{
				p.SetState(5320)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserGLOBAL || _la == MySqlParserLOCAL || _la == MySqlParserSESSION) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(5323)
			p.Uid()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IShowCommonEntityContext is an interface to support dynamic dispatch.
type IShowCommonEntityContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowCommonEntityContext differentiates from other interfaces.
	IsShowCommonEntityContext()
}

type ShowCommonEntityContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowCommonEntityContext() *ShowCommonEntityContext {
	var p = new(ShowCommonEntityContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showCommonEntity
	return p
}

func (*ShowCommonEntityContext) IsShowCommonEntityContext() {}

func NewShowCommonEntityContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowCommonEntityContext {
	var p = new(ShowCommonEntityContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showCommonEntity

	return p
}

func (s *ShowCommonEntityContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowCommonEntityContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *ShowCommonEntityContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *ShowCommonEntityContext) COLLATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATION, 0)
}

func (s *ShowCommonEntityContext) DATABASES() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASES, 0)
}

func (s *ShowCommonEntityContext) SCHEMAS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMAS, 0)
}

func (s *ShowCommonEntityContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *ShowCommonEntityContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *ShowCommonEntityContext) PROCEDURE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCEDURE, 0)
}

func (s *ShowCommonEntityContext) VARIABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARIABLES, 0)
}

func (s *ShowCommonEntityContext) GLOBAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL, 0)
}

func (s *ShowCommonEntityContext) SESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION, 0)
}

func (s *ShowCommonEntityContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowCommonEntityContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShowCommonEntityContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowCommonEntity(s)
	}
}

func (s *ShowCommonEntityContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowCommonEntity(s)
	}
}

func (p *MySqlParser) ShowCommonEntity() (localctx IShowCommonEntityContext) {
	this := p
	_ = this

	localctx = NewShowCommonEntityContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 456, MySqlParserRULE_showCommonEntity)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5339)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCHARACTER:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5326)
			p.Match(MySqlParserCHARACTER)
		}
		{
			p.SetState(5327)
			p.Match(MySqlParserSET)
		}

	case MySqlParserCOLLATION:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5328)
			p.Match(MySqlParserCOLLATION)
		}

	case MySqlParserDATABASES:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5329)
			p.Match(MySqlParserDATABASES)
		}

	case MySqlParserSCHEMAS:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5330)
			p.Match(MySqlParserSCHEMAS)
		}

	case MySqlParserFUNCTION:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5331)
			p.Match(MySqlParserFUNCTION)
		}
		{
			p.SetState(5332)
			p.Match(MySqlParserSTATUS)
		}

	case MySqlParserPROCEDURE:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5333)
			p.Match(MySqlParserPROCEDURE)
		}
		{
			p.SetState(5334)
			p.Match(MySqlParserSTATUS)
		}

	case MySqlParserGLOBAL, MySqlParserSESSION, MySqlParserSTATUS, MySqlParserVARIABLES:
		p.EnterOuterAlt(localctx, 7)
		p.SetState(5336)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserGLOBAL || _la == MySqlParserSESSION {
			{
				p.SetState(5335)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserGLOBAL || _la == MySqlParserSESSION) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(5338)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSTATUS || _la == MySqlParserVARIABLES) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IShowFilterContext is an interface to support dynamic dispatch.
type IShowFilterContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowFilterContext differentiates from other interfaces.
	IsShowFilterContext()
}

type ShowFilterContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowFilterContext() *ShowFilterContext {
	var p = new(ShowFilterContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showFilter
	return p
}

func (*ShowFilterContext) IsShowFilterContext() {}

func NewShowFilterContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowFilterContext {
	var p = new(ShowFilterContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showFilter

	return p
}

func (s *ShowFilterContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowFilterContext) LIKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIKE, 0)
}

func (s *ShowFilterContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *ShowFilterContext) WHERE() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHERE, 0)
}

func (s *ShowFilterContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ShowFilterContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowFilterContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShowFilterContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowFilter(s)
	}
}

func (s *ShowFilterContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowFilter(s)
	}
}

func (p *MySqlParser) ShowFilter() (localctx IShowFilterContext) {
	this := p
	_ = this

	localctx = NewShowFilterContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 458, MySqlParserRULE_showFilter)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5345)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserLIKE:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5341)
			p.Match(MySqlParserLIKE)
		}
		{
			p.SetState(5342)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserWHERE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5343)
			p.Match(MySqlParserWHERE)
		}
		{
			p.SetState(5344)
			p.expression(0)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IShowGlobalInfoClauseContext is an interface to support dynamic dispatch.
type IShowGlobalInfoClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowGlobalInfoClauseContext differentiates from other interfaces.
	IsShowGlobalInfoClauseContext()
}

type ShowGlobalInfoClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowGlobalInfoClauseContext() *ShowGlobalInfoClauseContext {
	var p = new(ShowGlobalInfoClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showGlobalInfoClause
	return p
}

func (*ShowGlobalInfoClauseContext) IsShowGlobalInfoClauseContext() {}

func NewShowGlobalInfoClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowGlobalInfoClauseContext {
	var p = new(ShowGlobalInfoClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showGlobalInfoClause

	return p
}

func (s *ShowGlobalInfoClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowGlobalInfoClauseContext) ENGINES() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINES, 0)
}

func (s *ShowGlobalInfoClauseContext) STORAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORAGE, 0)
}

func (s *ShowGlobalInfoClauseContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *ShowGlobalInfoClauseContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *ShowGlobalInfoClauseContext) PLUGINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGINS, 0)
}

func (s *ShowGlobalInfoClauseContext) PRIVILEGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIVILEGES, 0)
}

func (s *ShowGlobalInfoClauseContext) PROCESSLIST() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCESSLIST, 0)
}

func (s *ShowGlobalInfoClauseContext) FULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULL, 0)
}

func (s *ShowGlobalInfoClauseContext) PROFILES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROFILES, 0)
}

func (s *ShowGlobalInfoClauseContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *ShowGlobalInfoClauseContext) HOSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOSTS, 0)
}

func (s *ShowGlobalInfoClauseContext) AUTHORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTHORS, 0)
}

func (s *ShowGlobalInfoClauseContext) CONTRIBUTORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTRIBUTORS, 0)
}

func (s *ShowGlobalInfoClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowGlobalInfoClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShowGlobalInfoClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowGlobalInfoClause(s)
	}
}

func (s *ShowGlobalInfoClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowGlobalInfoClause(s)
	}
}

func (p *MySqlParser) ShowGlobalInfoClause() (localctx IShowGlobalInfoClauseContext) {
	this := p
	_ = this

	localctx = NewShowGlobalInfoClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 460, MySqlParserRULE_showGlobalInfoClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5364)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserENGINES, MySqlParserSTORAGE:
		p.EnterOuterAlt(localctx, 1)
		p.SetState(5348)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSTORAGE {
			{
				p.SetState(5347)
				p.Match(MySqlParserSTORAGE)
			}

		}
		{
			p.SetState(5350)
			p.Match(MySqlParserENGINES)
		}

	case MySqlParserMASTER:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5351)
			p.Match(MySqlParserMASTER)
		}
		{
			p.SetState(5352)
			p.Match(MySqlParserSTATUS)
		}

	case MySqlParserPLUGINS:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5353)
			p.Match(MySqlParserPLUGINS)
		}

	case MySqlParserPRIVILEGES:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5354)
			p.Match(MySqlParserPRIVILEGES)
		}

	case MySqlParserFULL, MySqlParserPROCESSLIST:
		p.EnterOuterAlt(localctx, 5)
		p.SetState(5356)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFULL {
			{
				p.SetState(5355)
				p.Match(MySqlParserFULL)
			}

		}
		{
			p.SetState(5358)
			p.Match(MySqlParserPROCESSLIST)
		}

	case MySqlParserPROFILES:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5359)
			p.Match(MySqlParserPROFILES)
		}

	case MySqlParserSLAVE:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5360)
			p.Match(MySqlParserSLAVE)
		}
		{
			p.SetState(5361)
			p.Match(MySqlParserHOSTS)
		}

	case MySqlParserAUTHORS:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(5362)
			p.Match(MySqlParserAUTHORS)
		}

	case MySqlParserCONTRIBUTORS:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(5363)
			p.Match(MySqlParserCONTRIBUTORS)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IShowSchemaEntityContext is an interface to support dynamic dispatch.
type IShowSchemaEntityContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowSchemaEntityContext differentiates from other interfaces.
	IsShowSchemaEntityContext()
}

type ShowSchemaEntityContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowSchemaEntityContext() *ShowSchemaEntityContext {
	var p = new(ShowSchemaEntityContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showSchemaEntity
	return p
}

func (*ShowSchemaEntityContext) IsShowSchemaEntityContext() {}

func NewShowSchemaEntityContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowSchemaEntityContext {
	var p = new(ShowSchemaEntityContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showSchemaEntity

	return p
}

func (s *ShowSchemaEntityContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowSchemaEntityContext) EVENTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENTS, 0)
}

func (s *ShowSchemaEntityContext) TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE, 0)
}

func (s *ShowSchemaEntityContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *ShowSchemaEntityContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *ShowSchemaEntityContext) FULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULL, 0)
}

func (s *ShowSchemaEntityContext) TRIGGERS() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGERS, 0)
}

func (s *ShowSchemaEntityContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowSchemaEntityContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShowSchemaEntityContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowSchemaEntity(s)
	}
}

func (s *ShowSchemaEntityContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowSchemaEntity(s)
	}
}

func (p *MySqlParser) ShowSchemaEntity() (localctx IShowSchemaEntityContext) {
	this := p
	_ = this

	localctx = NewShowSchemaEntityContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 462, MySqlParserRULE_showSchemaEntity)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5374)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserEVENTS:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5366)
			p.Match(MySqlParserEVENTS)
		}

	case MySqlParserTABLE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5367)
			p.Match(MySqlParserTABLE)
		}
		{
			p.SetState(5368)
			p.Match(MySqlParserSTATUS)
		}

	case MySqlParserFULL, MySqlParserTABLES:
		p.EnterOuterAlt(localctx, 3)
		p.SetState(5370)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFULL {
			{
				p.SetState(5369)
				p.Match(MySqlParserFULL)
			}

		}
		{
			p.SetState(5372)
			p.Match(MySqlParserTABLES)
		}

	case MySqlParserTRIGGERS:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5373)
			p.Match(MySqlParserTRIGGERS)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IShowProfileTypeContext is an interface to support dynamic dispatch.
type IShowProfileTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShowProfileTypeContext differentiates from other interfaces.
	IsShowProfileTypeContext()
}

type ShowProfileTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShowProfileTypeContext() *ShowProfileTypeContext {
	var p = new(ShowProfileTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_showProfileType
	return p
}

func (*ShowProfileTypeContext) IsShowProfileTypeContext() {}

func NewShowProfileTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShowProfileTypeContext {
	var p = new(ShowProfileTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_showProfileType

	return p
}

func (s *ShowProfileTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *ShowProfileTypeContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *ShowProfileTypeContext) BLOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserBLOCK, 0)
}

func (s *ShowProfileTypeContext) IO() antlr.TerminalNode {
	return s.GetToken(MySqlParserIO, 0)
}

func (s *ShowProfileTypeContext) CONTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTEXT, 0)
}

func (s *ShowProfileTypeContext) SWITCHES() antlr.TerminalNode {
	return s.GetToken(MySqlParserSWITCHES, 0)
}

func (s *ShowProfileTypeContext) CPU() antlr.TerminalNode {
	return s.GetToken(MySqlParserCPU, 0)
}

func (s *ShowProfileTypeContext) IPC() antlr.TerminalNode {
	return s.GetToken(MySqlParserIPC, 0)
}

func (s *ShowProfileTypeContext) MEMORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMORY, 0)
}

func (s *ShowProfileTypeContext) PAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPAGE, 0)
}

func (s *ShowProfileTypeContext) FAULTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFAULTS, 0)
}

func (s *ShowProfileTypeContext) SOURCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOURCE, 0)
}

func (s *ShowProfileTypeContext) SWAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSWAPS, 0)
}

func (s *ShowProfileTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShowProfileTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShowProfileTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShowProfileType(s)
	}
}

func (s *ShowProfileTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShowProfileType(s)
	}
}

func (p *MySqlParser) ShowProfileType() (localctx IShowProfileTypeContext) {
	this := p
	_ = this

	localctx = NewShowProfileTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 464, MySqlParserRULE_showProfileType)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5388)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserALL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5376)
			p.Match(MySqlParserALL)
		}

	case MySqlParserBLOCK:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5377)
			p.Match(MySqlParserBLOCK)
		}
		{
			p.SetState(5378)
			p.Match(MySqlParserIO)
		}

	case MySqlParserCONTEXT:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5379)
			p.Match(MySqlParserCONTEXT)
		}
		{
			p.SetState(5380)
			p.Match(MySqlParserSWITCHES)
		}

	case MySqlParserCPU:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5381)
			p.Match(MySqlParserCPU)
		}

	case MySqlParserIPC:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5382)
			p.Match(MySqlParserIPC)
		}

	case MySqlParserMEMORY:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5383)
			p.Match(MySqlParserMEMORY)
		}

	case MySqlParserPAGE:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5384)
			p.Match(MySqlParserPAGE)
		}
		{
			p.SetState(5385)
			p.Match(MySqlParserFAULTS)
		}

	case MySqlParserSOURCE:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(5386)
			p.Match(MySqlParserSOURCE)
		}

	case MySqlParserSWAPS:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(5387)
			p.Match(MySqlParserSWAPS)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IBinlogStatementContext is an interface to support dynamic dispatch.
type IBinlogStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBinlogStatementContext differentiates from other interfaces.
	IsBinlogStatementContext()
}

type BinlogStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBinlogStatementContext() *BinlogStatementContext {
	var p = new(BinlogStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_binlogStatement
	return p
}

func (*BinlogStatementContext) IsBinlogStatementContext() {}

func NewBinlogStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BinlogStatementContext {
	var p = new(BinlogStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_binlogStatement

	return p
}

func (s *BinlogStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *BinlogStatementContext) BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG, 0)
}

func (s *BinlogStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *BinlogStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BinlogStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BinlogStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBinlogStatement(s)
	}
}

func (s *BinlogStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBinlogStatement(s)
	}
}

func (p *MySqlParser) BinlogStatement() (localctx IBinlogStatementContext) {
	this := p
	_ = this

	localctx = NewBinlogStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 466, MySqlParserRULE_binlogStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5390)
		p.Match(MySqlParserBINLOG)
	}
	{
		p.SetState(5391)
		p.Match(MySqlParserSTRING_LITERAL)
	}

	return localctx
}

// ICacheIndexStatementContext is an interface to support dynamic dispatch.
type ICacheIndexStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetSchema returns the schema rule contexts.
	GetSchema() IUidContext

	// SetSchema sets the schema rule contexts.
	SetSchema(IUidContext)

	// IsCacheIndexStatementContext differentiates from other interfaces.
	IsCacheIndexStatementContext()
}

type CacheIndexStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
	schema IUidContext
}

func NewEmptyCacheIndexStatementContext() *CacheIndexStatementContext {
	var p = new(CacheIndexStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_cacheIndexStatement
	return p
}

func (*CacheIndexStatementContext) IsCacheIndexStatementContext() {}

func NewCacheIndexStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CacheIndexStatementContext {
	var p = new(CacheIndexStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_cacheIndexStatement

	return p
}

func (s *CacheIndexStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *CacheIndexStatementContext) GetSchema() IUidContext { return s.schema }

func (s *CacheIndexStatementContext) SetSchema(v IUidContext) { s.schema = v }

func (s *CacheIndexStatementContext) CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCACHE, 0)
}

func (s *CacheIndexStatementContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *CacheIndexStatementContext) AllTableIndexes() []ITableIndexesContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableIndexesContext)(nil)).Elem())
	var tst = make([]ITableIndexesContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableIndexesContext)
		}
	}

	return tst
}

func (s *CacheIndexStatementContext) TableIndexes(i int) ITableIndexesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableIndexesContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableIndexesContext)
}

func (s *CacheIndexStatementContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *CacheIndexStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CacheIndexStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CacheIndexStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CacheIndexStatementContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *CacheIndexStatementContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CacheIndexStatementContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CacheIndexStatementContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *CacheIndexStatementContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *CacheIndexStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CacheIndexStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CacheIndexStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCacheIndexStatement(s)
	}
}

func (s *CacheIndexStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCacheIndexStatement(s)
	}
}

func (p *MySqlParser) CacheIndexStatement() (localctx ICacheIndexStatementContext) {
	this := p
	_ = this

	localctx = NewCacheIndexStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 468, MySqlParserRULE_cacheIndexStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5393)
		p.Match(MySqlParserCACHE)
	}
	{
		p.SetState(5394)
		p.Match(MySqlParserINDEX)
	}
	{
		p.SetState(5395)
		p.TableIndexes()
	}
	p.SetState(5400)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(5396)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5397)
			p.TableIndexes()
		}

		p.SetState(5402)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	p.SetState(5410)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(5403)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(5404)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(5407)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(5405)
				p.UidList()
			}

		case MySqlParserALL:
			{
				p.SetState(5406)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		{
			p.SetState(5409)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	{
		p.SetState(5412)
		p.Match(MySqlParserIN)
	}
	{
		p.SetState(5413)

		var _x = p.Uid()

		localctx.(*CacheIndexStatementContext).schema = _x
	}

	return localctx
}

// IFlushStatementContext is an interface to support dynamic dispatch.
type IFlushStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetFlushFormat returns the flushFormat token.
	GetFlushFormat() antlr.Token

	// SetFlushFormat sets the flushFormat token.
	SetFlushFormat(antlr.Token)

	// IsFlushStatementContext differentiates from other interfaces.
	IsFlushStatementContext()
}

type FlushStatementContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	flushFormat antlr.Token
}

func NewEmptyFlushStatementContext() *FlushStatementContext {
	var p = new(FlushStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_flushStatement
	return p
}

func (*FlushStatementContext) IsFlushStatementContext() {}

func NewFlushStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FlushStatementContext {
	var p = new(FlushStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_flushStatement

	return p
}

func (s *FlushStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *FlushStatementContext) GetFlushFormat() antlr.Token { return s.flushFormat }

func (s *FlushStatementContext) SetFlushFormat(v antlr.Token) { s.flushFormat = v }

func (s *FlushStatementContext) FLUSH() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH, 0)
}

func (s *FlushStatementContext) AllFlushOption() []IFlushOptionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFlushOptionContext)(nil)).Elem())
	var tst = make([]IFlushOptionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFlushOptionContext)
		}
	}

	return tst
}

func (s *FlushStatementContext) FlushOption(i int) IFlushOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFlushOptionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFlushOptionContext)
}

func (s *FlushStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *FlushStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *FlushStatementContext) NO_WRITE_TO_BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO_WRITE_TO_BINLOG, 0)
}

func (s *FlushStatementContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *FlushStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FlushStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FlushStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFlushStatement(s)
	}
}

func (s *FlushStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFlushStatement(s)
	}
}

func (p *MySqlParser) FlushStatement() (localctx IFlushStatementContext) {
	this := p
	_ = this

	localctx = NewFlushStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 470, MySqlParserRULE_flushStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5415)
		p.Match(MySqlParserFLUSH)
	}
	p.SetState(5417)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL {
		{
			p.SetState(5416)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*FlushStatementContext).flushFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNO_WRITE_TO_BINLOG || _la == MySqlParserLOCAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*FlushStatementContext).flushFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5419)
		p.FlushOption()
	}
	p.SetState(5424)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(5420)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5421)
			p.FlushOption()
		}

		p.SetState(5426)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IKillStatementContext is an interface to support dynamic dispatch.
type IKillStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetConnectionFormat returns the connectionFormat token.
	GetConnectionFormat() antlr.Token

	// SetConnectionFormat sets the connectionFormat token.
	SetConnectionFormat(antlr.Token)

	// IsKillStatementContext differentiates from other interfaces.
	IsKillStatementContext()
}

type KillStatementContext struct {
	*antlr.BaseParserRuleContext
	parser           antlr.Parser
	connectionFormat antlr.Token
}

func NewEmptyKillStatementContext() *KillStatementContext {
	var p = new(KillStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_killStatement
	return p
}

func (*KillStatementContext) IsKillStatementContext() {}

func NewKillStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KillStatementContext {
	var p = new(KillStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_killStatement

	return p
}

func (s *KillStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *KillStatementContext) GetConnectionFormat() antlr.Token { return s.connectionFormat }

func (s *KillStatementContext) SetConnectionFormat(v antlr.Token) { s.connectionFormat = v }

func (s *KillStatementContext) KILL() antlr.TerminalNode {
	return s.GetToken(MySqlParserKILL, 0)
}

func (s *KillStatementContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *KillStatementContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *KillStatementContext) CONNECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION, 0)
}

func (s *KillStatementContext) QUERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUERY, 0)
}

func (s *KillStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *KillStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *KillStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterKillStatement(s)
	}
}

func (s *KillStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitKillStatement(s)
	}
}

func (p *MySqlParser) KillStatement() (localctx IKillStatementContext) {
	this := p
	_ = this

	localctx = NewKillStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 472, MySqlParserRULE_killStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5427)
		p.Match(MySqlParserKILL)
	}
	p.SetState(5429)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCONNECTION || _la == MySqlParserQUERY {
		{
			p.SetState(5428)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*KillStatementContext).connectionFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCONNECTION || _la == MySqlParserQUERY) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*KillStatementContext).connectionFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	p.SetState(5432)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for ok := true; ok; ok = (((_la-1089)&-(0x1f+1)) == 0 && ((1<<uint((_la-1089)))&((1<<(MySqlParserZERO_DECIMAL-1089))|(1<<(MySqlParserONE_DECIMAL-1089))|(1<<(MySqlParserTWO_DECIMAL-1089))|(1<<(MySqlParserDECIMAL_LITERAL-1089))|(1<<(MySqlParserREAL_LITERAL-1089)))) != 0) {
		{
			p.SetState(5431)
			p.DecimalLiteral()
		}

		p.SetState(5434)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ILoadIndexIntoCacheContext is an interface to support dynamic dispatch.
type ILoadIndexIntoCacheContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLoadIndexIntoCacheContext differentiates from other interfaces.
	IsLoadIndexIntoCacheContext()
}

type LoadIndexIntoCacheContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLoadIndexIntoCacheContext() *LoadIndexIntoCacheContext {
	var p = new(LoadIndexIntoCacheContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_loadIndexIntoCache
	return p
}

func (*LoadIndexIntoCacheContext) IsLoadIndexIntoCacheContext() {}

func NewLoadIndexIntoCacheContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LoadIndexIntoCacheContext {
	var p = new(LoadIndexIntoCacheContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_loadIndexIntoCache

	return p
}

func (s *LoadIndexIntoCacheContext) GetParser() antlr.Parser { return s.parser }

func (s *LoadIndexIntoCacheContext) LOAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOAD, 0)
}

func (s *LoadIndexIntoCacheContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *LoadIndexIntoCacheContext) INTO() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTO, 0)
}

func (s *LoadIndexIntoCacheContext) CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCACHE, 0)
}

func (s *LoadIndexIntoCacheContext) AllLoadedTableIndexes() []ILoadedTableIndexesContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ILoadedTableIndexesContext)(nil)).Elem())
	var tst = make([]ILoadedTableIndexesContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ILoadedTableIndexesContext)
		}
	}

	return tst
}

func (s *LoadIndexIntoCacheContext) LoadedTableIndexes(i int) ILoadedTableIndexesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILoadedTableIndexesContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ILoadedTableIndexesContext)
}

func (s *LoadIndexIntoCacheContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *LoadIndexIntoCacheContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *LoadIndexIntoCacheContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LoadIndexIntoCacheContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LoadIndexIntoCacheContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLoadIndexIntoCache(s)
	}
}

func (s *LoadIndexIntoCacheContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLoadIndexIntoCache(s)
	}
}

func (p *MySqlParser) LoadIndexIntoCache() (localctx ILoadIndexIntoCacheContext) {
	this := p
	_ = this

	localctx = NewLoadIndexIntoCacheContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 474, MySqlParserRULE_loadIndexIntoCache)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5436)
		p.Match(MySqlParserLOAD)
	}
	{
		p.SetState(5437)
		p.Match(MySqlParserINDEX)
	}
	{
		p.SetState(5438)
		p.Match(MySqlParserINTO)
	}
	{
		p.SetState(5439)
		p.Match(MySqlParserCACHE)
	}
	{
		p.SetState(5440)
		p.LoadedTableIndexes()
	}
	p.SetState(5445)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(5441)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5442)
			p.LoadedTableIndexes()
		}

		p.SetState(5447)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IResetStatementContext is an interface to support dynamic dispatch.
type IResetStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsResetStatementContext differentiates from other interfaces.
	IsResetStatementContext()
}

type ResetStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyResetStatementContext() *ResetStatementContext {
	var p = new(ResetStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_resetStatement
	return p
}

func (*ResetStatementContext) IsResetStatementContext() {}

func NewResetStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResetStatementContext {
	var p = new(ResetStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_resetStatement

	return p
}

func (s *ResetStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ResetStatementContext) RESET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESET, 0)
}

func (s *ResetStatementContext) QUERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUERY, 0)
}

func (s *ResetStatementContext) CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCACHE, 0)
}

func (s *ResetStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ResetStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ResetStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterResetStatement(s)
	}
}

func (s *ResetStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitResetStatement(s)
	}
}

func (p *MySqlParser) ResetStatement() (localctx IResetStatementContext) {
	this := p
	_ = this

	localctx = NewResetStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 476, MySqlParserRULE_resetStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5448)
		p.Match(MySqlParserRESET)
	}
	{
		p.SetState(5449)
		p.Match(MySqlParserQUERY)
	}
	{
		p.SetState(5450)
		p.Match(MySqlParserCACHE)
	}

	return localctx
}

// IShutdownStatementContext is an interface to support dynamic dispatch.
type IShutdownStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsShutdownStatementContext differentiates from other interfaces.
	IsShutdownStatementContext()
}

type ShutdownStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyShutdownStatementContext() *ShutdownStatementContext {
	var p = new(ShutdownStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_shutdownStatement
	return p
}

func (*ShutdownStatementContext) IsShutdownStatementContext() {}

func NewShutdownStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShutdownStatementContext {
	var p = new(ShutdownStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_shutdownStatement

	return p
}

func (s *ShutdownStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ShutdownStatementContext) SHUTDOWN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHUTDOWN, 0)
}

func (s *ShutdownStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ShutdownStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ShutdownStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterShutdownStatement(s)
	}
}

func (s *ShutdownStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitShutdownStatement(s)
	}
}

func (p *MySqlParser) ShutdownStatement() (localctx IShutdownStatementContext) {
	this := p
	_ = this

	localctx = NewShutdownStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 478, MySqlParserRULE_shutdownStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5452)
		p.Match(MySqlParserSHUTDOWN)
	}

	return localctx
}

// ITableIndexesContext is an interface to support dynamic dispatch.
type ITableIndexesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIndexFormat returns the indexFormat token.
	GetIndexFormat() antlr.Token

	// SetIndexFormat sets the indexFormat token.
	SetIndexFormat(antlr.Token)

	// IsTableIndexesContext differentiates from other interfaces.
	IsTableIndexesContext()
}

type TableIndexesContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	indexFormat antlr.Token
}

func NewEmptyTableIndexesContext() *TableIndexesContext {
	var p = new(TableIndexesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableIndexes
	return p
}

func (*TableIndexesContext) IsTableIndexesContext() {}

func NewTableIndexesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableIndexesContext {
	var p = new(TableIndexesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableIndexes

	return p
}

func (s *TableIndexesContext) GetParser() antlr.Parser { return s.parser }

func (s *TableIndexesContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *TableIndexesContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *TableIndexesContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *TableIndexesContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TableIndexesContext) UidList() IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *TableIndexesContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TableIndexesContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *TableIndexesContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *TableIndexesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableIndexesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TableIndexesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableIndexes(s)
	}
}

func (s *TableIndexesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableIndexes(s)
	}
}

func (p *MySqlParser) TableIndexes() (localctx ITableIndexesContext) {
	this := p
	_ = this

	localctx = NewTableIndexesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 480, MySqlParserRULE_tableIndexes)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5454)
		p.TableName()
	}
	p.SetState(5462)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserINDEX || _la == MySqlParserKEY || _la == MySqlParserLR_BRACKET {
		p.SetState(5456)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(5455)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*TableIndexesContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*TableIndexesContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(5458)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(5459)
			p.UidList()
		}
		{
			p.SetState(5460)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// IFlushOptionContext is an interface to support dynamic dispatch.
type IFlushOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFlushOptionContext differentiates from other interfaces.
	IsFlushOptionContext()
}

type FlushOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFlushOptionContext() *FlushOptionContext {
	var p = new(FlushOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_flushOption
	return p
}

func (*FlushOptionContext) IsFlushOptionContext() {}

func NewFlushOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FlushOptionContext {
	var p = new(FlushOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_flushOption

	return p
}

func (s *FlushOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *FlushOptionContext) CopyFrom(ctx *FlushOptionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *FlushOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FlushOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type TableFlushOptionContext struct {
	*FlushOptionContext
}

func NewTableFlushOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TableFlushOptionContext {
	var p = new(TableFlushOptionContext)

	p.FlushOptionContext = NewEmptyFlushOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FlushOptionContext))

	return p
}

func (s *TableFlushOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableFlushOptionContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *TableFlushOptionContext) Tables() ITablesContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITablesContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITablesContext)
}

func (s *TableFlushOptionContext) FlushTableOption() IFlushTableOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFlushTableOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFlushTableOptionContext)
}

func (s *TableFlushOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableFlushOption(s)
	}
}

func (s *TableFlushOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableFlushOption(s)
	}
}

type ChannelFlushOptionContext struct {
	*FlushOptionContext
}

func NewChannelFlushOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ChannelFlushOptionContext {
	var p = new(ChannelFlushOptionContext)

	p.FlushOptionContext = NewEmptyFlushOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FlushOptionContext))

	return p
}

func (s *ChannelFlushOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ChannelFlushOptionContext) RELAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY, 0)
}

func (s *ChannelFlushOptionContext) LOGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGS, 0)
}

func (s *ChannelFlushOptionContext) ChannelOption() IChannelOptionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IChannelOptionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IChannelOptionContext)
}

func (s *ChannelFlushOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterChannelFlushOption(s)
	}
}

func (s *ChannelFlushOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitChannelFlushOption(s)
	}
}

type SimpleFlushOptionContext struct {
	*FlushOptionContext
}

func NewSimpleFlushOptionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleFlushOptionContext {
	var p = new(SimpleFlushOptionContext)

	p.FlushOptionContext = NewEmptyFlushOptionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FlushOptionContext))

	return p
}

func (s *SimpleFlushOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleFlushOptionContext) DES_KEY_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDES_KEY_FILE, 0)
}

func (s *SimpleFlushOptionContext) HOSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOSTS, 0)
}

func (s *SimpleFlushOptionContext) LOGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGS, 0)
}

func (s *SimpleFlushOptionContext) OPTIMIZER_COSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIMIZER_COSTS, 0)
}

func (s *SimpleFlushOptionContext) PRIVILEGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIVILEGES, 0)
}

func (s *SimpleFlushOptionContext) QUERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUERY, 0)
}

func (s *SimpleFlushOptionContext) CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCACHE, 0)
}

func (s *SimpleFlushOptionContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *SimpleFlushOptionContext) USER_RESOURCES() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER_RESOURCES, 0)
}

func (s *SimpleFlushOptionContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *SimpleFlushOptionContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *SimpleFlushOptionContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *SimpleFlushOptionContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *SimpleFlushOptionContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *SimpleFlushOptionContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *SimpleFlushOptionContext) ERROR() antlr.TerminalNode {
	return s.GetToken(MySqlParserERROR, 0)
}

func (s *SimpleFlushOptionContext) GENERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGENERAL, 0)
}

func (s *SimpleFlushOptionContext) RELAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY, 0)
}

func (s *SimpleFlushOptionContext) SLOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLOW, 0)
}

func (s *SimpleFlushOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleFlushOption(s)
	}
}

func (s *SimpleFlushOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleFlushOption(s)
	}
}

func (p *MySqlParser) FlushOption() (localctx IFlushOptionContext) {
	this := p
	_ = this

	localctx = NewFlushOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 482, MySqlParserRULE_flushOption)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5494)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 787, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSimpleFlushOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(5482)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserDES_KEY_FILE:
			{
				p.SetState(5464)
				p.Match(MySqlParserDES_KEY_FILE)
			}

		case MySqlParserHOSTS:
			{
				p.SetState(5465)
				p.Match(MySqlParserHOSTS)
			}

		case MySqlParserBINARY, MySqlParserENGINE, MySqlParserERROR, MySqlParserGENERAL, MySqlParserLOGS, MySqlParserRELAY, MySqlParserSLOW:
			p.SetState(5467)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserBINARY || (((_la-391)&-(0x1f+1)) == 0 && ((1<<uint((_la-391)))&((1<<(MySqlParserENGINE-391))|(1<<(MySqlParserERROR-391))|(1<<(MySqlParserGENERAL-391)))) != 0) || _la == MySqlParserRELAY || _la == MySqlParserSLOW {
				{
					p.SetState(5466)
					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserBINARY || (((_la-391)&-(0x1f+1)) == 0 && ((1<<uint((_la-391)))&((1<<(MySqlParserENGINE-391))|(1<<(MySqlParserERROR-391))|(1<<(MySqlParserGENERAL-391)))) != 0) || _la == MySqlParserRELAY || _la == MySqlParserSLOW) {
						p.GetErrorHandler().RecoverInline(p)
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			{
				p.SetState(5469)
				p.Match(MySqlParserLOGS)
			}

		case MySqlParserOPTIMIZER_COSTS:
			{
				p.SetState(5470)
				p.Match(MySqlParserOPTIMIZER_COSTS)
			}

		case MySqlParserPRIVILEGES:
			{
				p.SetState(5471)
				p.Match(MySqlParserPRIVILEGES)
			}

		case MySqlParserQUERY:
			{
				p.SetState(5472)
				p.Match(MySqlParserQUERY)
			}
			{
				p.SetState(5473)
				p.Match(MySqlParserCACHE)
			}

		case MySqlParserSTATUS:
			{
				p.SetState(5474)
				p.Match(MySqlParserSTATUS)
			}

		case MySqlParserUSER_RESOURCES:
			{
				p.SetState(5475)
				p.Match(MySqlParserUSER_RESOURCES)
			}

		case MySqlParserTABLES:
			{
				p.SetState(5476)
				p.Match(MySqlParserTABLES)
			}
			p.SetState(5480)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserWITH {
				{
					p.SetState(5477)
					p.Match(MySqlParserWITH)
				}
				{
					p.SetState(5478)
					p.Match(MySqlParserREAD)
				}
				{
					p.SetState(5479)
					p.Match(MySqlParserLOCK)
				}

			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case 2:
		localctx = NewChannelFlushOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5484)
			p.Match(MySqlParserRELAY)
		}
		{
			p.SetState(5485)
			p.Match(MySqlParserLOGS)
		}
		p.SetState(5487)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(5486)
				p.ChannelOption()
			}

		}

	case 3:
		localctx = NewTableFlushOptionContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5489)
			p.Match(MySqlParserTABLES)
		}
		{
			p.SetState(5490)
			p.Tables()
		}
		p.SetState(5492)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR || _la == MySqlParserWITH {
			{
				p.SetState(5491)
				p.FlushTableOption()
			}

		}

	}

	return localctx
}

// IFlushTableOptionContext is an interface to support dynamic dispatch.
type IFlushTableOptionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFlushTableOptionContext differentiates from other interfaces.
	IsFlushTableOptionContext()
}

type FlushTableOptionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFlushTableOptionContext() *FlushTableOptionContext {
	var p = new(FlushTableOptionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_flushTableOption
	return p
}

func (*FlushTableOptionContext) IsFlushTableOptionContext() {}

func NewFlushTableOptionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FlushTableOptionContext {
	var p = new(FlushTableOptionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_flushTableOption

	return p
}

func (s *FlushTableOptionContext) GetParser() antlr.Parser { return s.parser }

func (s *FlushTableOptionContext) WITH() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITH, 0)
}

func (s *FlushTableOptionContext) READ() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAD, 0)
}

func (s *FlushTableOptionContext) LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCK, 0)
}

func (s *FlushTableOptionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *FlushTableOptionContext) EXPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPORT, 0)
}

func (s *FlushTableOptionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FlushTableOptionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FlushTableOptionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFlushTableOption(s)
	}
}

func (s *FlushTableOptionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFlushTableOption(s)
	}
}

func (p *MySqlParser) FlushTableOption() (localctx IFlushTableOptionContext) {
	this := p
	_ = this

	localctx = NewFlushTableOptionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 484, MySqlParserRULE_flushTableOption)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5501)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserWITH:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5496)
			p.Match(MySqlParserWITH)
		}
		{
			p.SetState(5497)
			p.Match(MySqlParserREAD)
		}
		{
			p.SetState(5498)
			p.Match(MySqlParserLOCK)
		}

	case MySqlParserFOR:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5499)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(5500)
			p.Match(MySqlParserEXPORT)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// ILoadedTableIndexesContext is an interface to support dynamic dispatch.
type ILoadedTableIndexesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetIndexFormat returns the indexFormat token.
	GetIndexFormat() antlr.Token

	// SetIndexFormat sets the indexFormat token.
	SetIndexFormat(antlr.Token)

	// GetPartitionList returns the partitionList rule contexts.
	GetPartitionList() IUidListContext

	// GetIndexList returns the indexList rule contexts.
	GetIndexList() IUidListContext

	// SetPartitionList sets the partitionList rule contexts.
	SetPartitionList(IUidListContext)

	// SetIndexList sets the indexList rule contexts.
	SetIndexList(IUidListContext)

	// IsLoadedTableIndexesContext differentiates from other interfaces.
	IsLoadedTableIndexesContext()
}

type LoadedTableIndexesContext struct {
	*antlr.BaseParserRuleContext
	parser        antlr.Parser
	partitionList IUidListContext
	indexFormat   antlr.Token
	indexList     IUidListContext
}

func NewEmptyLoadedTableIndexesContext() *LoadedTableIndexesContext {
	var p = new(LoadedTableIndexesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_loadedTableIndexes
	return p
}

func (*LoadedTableIndexesContext) IsLoadedTableIndexesContext() {}

func NewLoadedTableIndexesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LoadedTableIndexesContext {
	var p = new(LoadedTableIndexesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_loadedTableIndexes

	return p
}

func (s *LoadedTableIndexesContext) GetParser() antlr.Parser { return s.parser }

func (s *LoadedTableIndexesContext) GetIndexFormat() antlr.Token { return s.indexFormat }

func (s *LoadedTableIndexesContext) SetIndexFormat(v antlr.Token) { s.indexFormat = v }

func (s *LoadedTableIndexesContext) GetPartitionList() IUidListContext { return s.partitionList }

func (s *LoadedTableIndexesContext) GetIndexList() IUidListContext { return s.indexList }

func (s *LoadedTableIndexesContext) SetPartitionList(v IUidListContext) { s.partitionList = v }

func (s *LoadedTableIndexesContext) SetIndexList(v IUidListContext) { s.indexList = v }

func (s *LoadedTableIndexesContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *LoadedTableIndexesContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *LoadedTableIndexesContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *LoadedTableIndexesContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *LoadedTableIndexesContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *LoadedTableIndexesContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *LoadedTableIndexesContext) IGNORE() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE, 0)
}

func (s *LoadedTableIndexesContext) LEAVES() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEAVES, 0)
}

func (s *LoadedTableIndexesContext) AllUidList() []IUidListContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidListContext)(nil)).Elem())
	var tst = make([]IUidListContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidListContext)
		}
	}

	return tst
}

func (s *LoadedTableIndexesContext) UidList(i int) IUidListContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidListContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidListContext)
}

func (s *LoadedTableIndexesContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *LoadedTableIndexesContext) INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEX, 0)
}

func (s *LoadedTableIndexesContext) KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY, 0)
}

func (s *LoadedTableIndexesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LoadedTableIndexesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LoadedTableIndexesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLoadedTableIndexes(s)
	}
}

func (s *LoadedTableIndexesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLoadedTableIndexes(s)
	}
}

func (p *MySqlParser) LoadedTableIndexes() (localctx ILoadedTableIndexesContext) {
	this := p
	_ = this

	localctx = NewLoadedTableIndexesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 486, MySqlParserRULE_loadedTableIndexes)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5503)
		p.TableName()
	}
	p.SetState(5511)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(5504)
			p.Match(MySqlParserPARTITION)
		}
		{
			p.SetState(5505)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(5508)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
			{
				p.SetState(5506)

				var _x = p.UidList()

				localctx.(*LoadedTableIndexesContext).partitionList = _x
			}

		case MySqlParserALL:
			{
				p.SetState(5507)
				p.Match(MySqlParserALL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		{
			p.SetState(5510)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(5520)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 792, p.GetParserRuleContext()) == 1 {
		p.SetState(5514)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINDEX || _la == MySqlParserKEY {
			{
				p.SetState(5513)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*LoadedTableIndexesContext).indexFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserINDEX || _la == MySqlParserKEY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*LoadedTableIndexesContext).indexFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(5516)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(5517)

			var _x = p.UidList()

			localctx.(*LoadedTableIndexesContext).indexList = _x
		}
		{
			p.SetState(5518)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(5524)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserIGNORE {
		{
			p.SetState(5522)
			p.Match(MySqlParserIGNORE)
		}
		{
			p.SetState(5523)
			p.Match(MySqlParserLEAVES)
		}

	}

	return localctx
}

// ISimpleDescribeStatementContext is an interface to support dynamic dispatch.
type ISimpleDescribeStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetCommand returns the command token.
	GetCommand() antlr.Token

	// GetPattern returns the pattern token.
	GetPattern() antlr.Token

	// SetCommand sets the command token.
	SetCommand(antlr.Token)

	// SetPattern sets the pattern token.
	SetPattern(antlr.Token)

	// GetColumn returns the column rule contexts.
	GetColumn() IUidContext

	// SetColumn sets the column rule contexts.
	SetColumn(IUidContext)

	// IsSimpleDescribeStatementContext differentiates from other interfaces.
	IsSimpleDescribeStatementContext()
}

type SimpleDescribeStatementContext struct {
	*antlr.BaseParserRuleContext
	parser  antlr.Parser
	command antlr.Token
	column  IUidContext
	pattern antlr.Token
}

func NewEmptySimpleDescribeStatementContext() *SimpleDescribeStatementContext {
	var p = new(SimpleDescribeStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_simpleDescribeStatement
	return p
}

func (*SimpleDescribeStatementContext) IsSimpleDescribeStatementContext() {}

func NewSimpleDescribeStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleDescribeStatementContext {
	var p = new(SimpleDescribeStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_simpleDescribeStatement

	return p
}

func (s *SimpleDescribeStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SimpleDescribeStatementContext) GetCommand() antlr.Token { return s.command }

func (s *SimpleDescribeStatementContext) GetPattern() antlr.Token { return s.pattern }

func (s *SimpleDescribeStatementContext) SetCommand(v antlr.Token) { s.command = v }

func (s *SimpleDescribeStatementContext) SetPattern(v antlr.Token) { s.pattern = v }

func (s *SimpleDescribeStatementContext) GetColumn() IUidContext { return s.column }

func (s *SimpleDescribeStatementContext) SetColumn(v IUidContext) { s.column = v }

func (s *SimpleDescribeStatementContext) TableName() ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *SimpleDescribeStatementContext) EXPLAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPLAIN, 0)
}

func (s *SimpleDescribeStatementContext) DESCRIBE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESCRIBE, 0)
}

func (s *SimpleDescribeStatementContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *SimpleDescribeStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *SimpleDescribeStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *SimpleDescribeStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleDescribeStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SimpleDescribeStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleDescribeStatement(s)
	}
}

func (s *SimpleDescribeStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleDescribeStatement(s)
	}
}

func (p *MySqlParser) SimpleDescribeStatement() (localctx ISimpleDescribeStatementContext) {
	this := p
	_ = this

	localctx = NewSimpleDescribeStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 488, MySqlParserRULE_simpleDescribeStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5526)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*SimpleDescribeStatementContext).command = _lt

		_la = p.GetTokenStream().LA(1)

		if !(((_la-43)&-(0x1f+1)) == 0 && ((1<<uint((_la-43)))&((1<<(MySqlParserDESC-43))|(1<<(MySqlParserDESCRIBE-43))|(1<<(MySqlParserEXPLAIN-43)))) != 0) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*SimpleDescribeStatementContext).command = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(5527)
		p.TableName()
	}
	p.SetState(5530)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 794, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5528)

			var _x = p.Uid()

			localctx.(*SimpleDescribeStatementContext).column = _x
		}

	} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 794, p.GetParserRuleContext()) == 2 {
		{
			p.SetState(5529)

			var _m = p.Match(MySqlParserSTRING_LITERAL)

			localctx.(*SimpleDescribeStatementContext).pattern = _m
		}

	}

	return localctx
}

// IFullDescribeStatementContext is an interface to support dynamic dispatch.
type IFullDescribeStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetCommand returns the command token.
	GetCommand() antlr.Token

	// GetFormatType returns the formatType token.
	GetFormatType() antlr.Token

	// GetFormatValue returns the formatValue token.
	GetFormatValue() antlr.Token

	// SetCommand sets the command token.
	SetCommand(antlr.Token)

	// SetFormatType sets the formatType token.
	SetFormatType(antlr.Token)

	// SetFormatValue sets the formatValue token.
	SetFormatValue(antlr.Token)

	// IsFullDescribeStatementContext differentiates from other interfaces.
	IsFullDescribeStatementContext()
}

type FullDescribeStatementContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	command     antlr.Token
	formatType  antlr.Token
	formatValue antlr.Token
}

func NewEmptyFullDescribeStatementContext() *FullDescribeStatementContext {
	var p = new(FullDescribeStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_fullDescribeStatement
	return p
}

func (*FullDescribeStatementContext) IsFullDescribeStatementContext() {}

func NewFullDescribeStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullDescribeStatementContext {
	var p = new(FullDescribeStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_fullDescribeStatement

	return p
}

func (s *FullDescribeStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *FullDescribeStatementContext) GetCommand() antlr.Token { return s.command }

func (s *FullDescribeStatementContext) GetFormatType() antlr.Token { return s.formatType }

func (s *FullDescribeStatementContext) GetFormatValue() antlr.Token { return s.formatValue }

func (s *FullDescribeStatementContext) SetCommand(v antlr.Token) { s.command = v }

func (s *FullDescribeStatementContext) SetFormatType(v antlr.Token) { s.formatType = v }

func (s *FullDescribeStatementContext) SetFormatValue(v antlr.Token) { s.formatValue = v }

func (s *FullDescribeStatementContext) DescribeObjectClause() IDescribeObjectClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDescribeObjectClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDescribeObjectClauseContext)
}

func (s *FullDescribeStatementContext) EXPLAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPLAIN, 0)
}

func (s *FullDescribeStatementContext) DESCRIBE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESCRIBE, 0)
}

func (s *FullDescribeStatementContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *FullDescribeStatementContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *FullDescribeStatementContext) EXTENDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENDED, 0)
}

func (s *FullDescribeStatementContext) PARTITIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONS, 0)
}

func (s *FullDescribeStatementContext) FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFORMAT, 0)
}

func (s *FullDescribeStatementContext) TRADITIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRADITIONAL, 0)
}

func (s *FullDescribeStatementContext) JSON() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON, 0)
}

func (s *FullDescribeStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FullDescribeStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FullDescribeStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFullDescribeStatement(s)
	}
}

func (s *FullDescribeStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFullDescribeStatement(s)
	}
}

func (p *MySqlParser) FullDescribeStatement() (localctx IFullDescribeStatementContext) {
	this := p
	_ = this

	localctx = NewFullDescribeStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 490, MySqlParserRULE_fullDescribeStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5532)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*FullDescribeStatementContext).command = _lt

		_la = p.GetTokenStream().LA(1)

		if !(((_la-43)&-(0x1f+1)) == 0 && ((1<<uint((_la-43)))&((1<<(MySqlParserDESC-43))|(1<<(MySqlParserDESCRIBE-43))|(1<<(MySqlParserEXPLAIN-43)))) != 0) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*FullDescribeStatementContext).command = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(5536)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserEXTENDED || _la == MySqlParserPARTITIONS || _la == MySqlParserFORMAT {
		{
			p.SetState(5533)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*FullDescribeStatementContext).formatType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserEXTENDED || _la == MySqlParserPARTITIONS || _la == MySqlParserFORMAT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*FullDescribeStatementContext).formatType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5534)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(5535)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*FullDescribeStatementContext).formatValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserJSON || _la == MySqlParserTRADITIONAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*FullDescribeStatementContext).formatValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5538)
		p.DescribeObjectClause()
	}

	return localctx
}

// IHelpStatementContext is an interface to support dynamic dispatch.
type IHelpStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHelpStatementContext differentiates from other interfaces.
	IsHelpStatementContext()
}

type HelpStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHelpStatementContext() *HelpStatementContext {
	var p = new(HelpStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_helpStatement
	return p
}

func (*HelpStatementContext) IsHelpStatementContext() {}

func NewHelpStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HelpStatementContext {
	var p = new(HelpStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_helpStatement

	return p
}

func (s *HelpStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *HelpStatementContext) HELP() antlr.TerminalNode {
	return s.GetToken(MySqlParserHELP, 0)
}

func (s *HelpStatementContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *HelpStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HelpStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HelpStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHelpStatement(s)
	}
}

func (s *HelpStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHelpStatement(s)
	}
}

func (p *MySqlParser) HelpStatement() (localctx IHelpStatementContext) {
	this := p
	_ = this

	localctx = NewHelpStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 492, MySqlParserRULE_helpStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5540)
		p.Match(MySqlParserHELP)
	}
	{
		p.SetState(5541)
		p.Match(MySqlParserSTRING_LITERAL)
	}

	return localctx
}

// IUseStatementContext is an interface to support dynamic dispatch.
type IUseStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUseStatementContext differentiates from other interfaces.
	IsUseStatementContext()
}

type UseStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUseStatementContext() *UseStatementContext {
	var p = new(UseStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_useStatement
	return p
}

func (*UseStatementContext) IsUseStatementContext() {}

func NewUseStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UseStatementContext {
	var p = new(UseStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_useStatement

	return p
}

func (s *UseStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *UseStatementContext) USE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSE, 0)
}

func (s *UseStatementContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *UseStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UseStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UseStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUseStatement(s)
	}
}

func (s *UseStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUseStatement(s)
	}
}

func (p *MySqlParser) UseStatement() (localctx IUseStatementContext) {
	this := p
	_ = this

	localctx = NewUseStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 494, MySqlParserRULE_useStatement)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5543)
		p.Match(MySqlParserUSE)
	}
	{
		p.SetState(5544)
		p.Uid()
	}

	return localctx
}

// ISignalStatementContext is an interface to support dynamic dispatch.
type ISignalStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSignalStatementContext differentiates from other interfaces.
	IsSignalStatementContext()
}

type SignalStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySignalStatementContext() *SignalStatementContext {
	var p = new(SignalStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_signalStatement
	return p
}

func (*SignalStatementContext) IsSignalStatementContext() {}

func NewSignalStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SignalStatementContext {
	var p = new(SignalStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_signalStatement

	return p
}

func (s *SignalStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *SignalStatementContext) SIGNAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIGNAL, 0)
}

func (s *SignalStatementContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *SignalStatementContext) REVERSE_QUOTE_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE_QUOTE_ID, 0)
}

func (s *SignalStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *SignalStatementContext) AllSignalConditionInformation() []ISignalConditionInformationContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISignalConditionInformationContext)(nil)).Elem())
	var tst = make([]ISignalConditionInformationContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISignalConditionInformationContext)
		}
	}

	return tst
}

func (s *SignalStatementContext) SignalConditionInformation(i int) ISignalConditionInformationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISignalConditionInformationContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISignalConditionInformationContext)
}

func (s *SignalStatementContext) SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLSTATE, 0)
}

func (s *SignalStatementContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *SignalStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SignalStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SignalStatementContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *SignalStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SignalStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SignalStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSignalStatement(s)
	}
}

func (s *SignalStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSignalStatement(s)
	}
}

func (p *MySqlParser) SignalStatement() (localctx ISignalStatementContext) {
	this := p
	_ = this

	localctx = NewSignalStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 496, MySqlParserRULE_signalStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5546)
		p.Match(MySqlParserSIGNAL)
	}
	p.SetState(5554)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSQLSTATE:
		{
			p.SetState(5547)
			p.Match(MySqlParserSQLSTATE)
		}
		p.SetState(5549)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVALUE {
			{
				p.SetState(5548)
				p.Match(MySqlParserVALUE)
			}

		}
		{
			p.SetState(5551)
			p.StringLiteral()
		}

	case MySqlParserID:
		{
			p.SetState(5552)
			p.Match(MySqlParserID)
		}

	case MySqlParserREVERSE_QUOTE_ID:
		{
			p.SetState(5553)
			p.Match(MySqlParserREVERSE_QUOTE_ID)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}
	p.SetState(5565)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 799, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5556)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5557)
			p.SignalConditionInformation()
		}
		p.SetState(5562)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5558)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5559)
				p.SignalConditionInformation()
			}

			p.SetState(5564)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// IResignalStatementContext is an interface to support dynamic dispatch.
type IResignalStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsResignalStatementContext differentiates from other interfaces.
	IsResignalStatementContext()
}

type ResignalStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyResignalStatementContext() *ResignalStatementContext {
	var p = new(ResignalStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_resignalStatement
	return p
}

func (*ResignalStatementContext) IsResignalStatementContext() {}

func NewResignalStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResignalStatementContext {
	var p = new(ResignalStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_resignalStatement

	return p
}

func (s *ResignalStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *ResignalStatementContext) RESIGNAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESIGNAL, 0)
}

func (s *ResignalStatementContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *ResignalStatementContext) REVERSE_QUOTE_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE_QUOTE_ID, 0)
}

func (s *ResignalStatementContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *ResignalStatementContext) AllSignalConditionInformation() []ISignalConditionInformationContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISignalConditionInformationContext)(nil)).Elem())
	var tst = make([]ISignalConditionInformationContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ISignalConditionInformationContext)
		}
	}

	return tst
}

func (s *ResignalStatementContext) SignalConditionInformation(i int) ISignalConditionInformationContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISignalConditionInformationContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ISignalConditionInformationContext)
}

func (s *ResignalStatementContext) SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQLSTATE, 0)
}

func (s *ResignalStatementContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *ResignalStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ResignalStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ResignalStatementContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *ResignalStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ResignalStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ResignalStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterResignalStatement(s)
	}
}

func (s *ResignalStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitResignalStatement(s)
	}
}

func (p *MySqlParser) ResignalStatement() (localctx IResignalStatementContext) {
	this := p
	_ = this

	localctx = NewResignalStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 498, MySqlParserRULE_resignalStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5567)
		p.Match(MySqlParserRESIGNAL)
	}
	p.SetState(5575)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSQLSTATE:
		{
			p.SetState(5568)
			p.Match(MySqlParserSQLSTATE)
		}
		p.SetState(5570)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVALUE {
			{
				p.SetState(5569)
				p.Match(MySqlParserVALUE)
			}

		}
		{
			p.SetState(5572)
			p.StringLiteral()
		}

	case MySqlParserID:
		{
			p.SetState(5573)
			p.Match(MySqlParserID)
		}

	case MySqlParserREVERSE_QUOTE_ID:
		{
			p.SetState(5574)
			p.Match(MySqlParserREVERSE_QUOTE_ID)
		}

	case MySqlParserEOF, MySqlParserALTER, MySqlParserANALYZE, MySqlParserCALL, MySqlParserCHANGE, MySqlParserCHECK, MySqlParserCREATE, MySqlParserDELETE, MySqlParserDESC, MySqlParserDESCRIBE, MySqlParserDROP, MySqlParserEXPLAIN, MySqlParserGET, MySqlParserGRANT, MySqlParserINSERT, MySqlParserKILL, MySqlParserLOAD, MySqlParserLOCK, MySqlParserOPTIMIZE, MySqlParserPURGE, MySqlParserRELEASE, MySqlParserRENAME, MySqlParserREPLACE, MySqlParserRESIGNAL, MySqlParserREVOKE, MySqlParserSELECT, MySqlParserSET, MySqlParserSHOW, MySqlParserSIGNAL, MySqlParserUNLOCK, MySqlParserUPDATE, MySqlParserUSE, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserCACHE, MySqlParserCHECKSUM, MySqlParserCOMMIT, MySqlParserDEALLOCATE, MySqlParserDO, MySqlParserFLUSH, MySqlParserHANDLER, MySqlParserHELP, MySqlParserINSTALL, MySqlParserPREPARE, MySqlParserREPAIR, MySqlParserRESET, MySqlParserROLLBACK, MySqlParserSAVEPOINT, MySqlParserSTART, MySqlParserSTOP, MySqlParserTRUNCATE, MySqlParserUNINSTALL, MySqlParserXA, MySqlParserEXECUTE, MySqlParserSHUTDOWN, MySqlParserMINUS, MySqlParserLR_BRACKET, MySqlParserSEMI:

	default:
	}
	p.SetState(5586)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 803, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5577)
			p.Match(MySqlParserSET)
		}
		{
			p.SetState(5578)
			p.SignalConditionInformation()
		}
		p.SetState(5583)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5579)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5580)
				p.SignalConditionInformation()
			}

			p.SetState(5585)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	}

	return localctx
}

// ISignalConditionInformationContext is an interface to support dynamic dispatch.
type ISignalConditionInformationContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSignalConditionInformationContext differentiates from other interfaces.
	IsSignalConditionInformationContext()
}

type SignalConditionInformationContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySignalConditionInformationContext() *SignalConditionInformationContext {
	var p = new(SignalConditionInformationContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_signalConditionInformation
	return p
}

func (*SignalConditionInformationContext) IsSignalConditionInformationContext() {}

func NewSignalConditionInformationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SignalConditionInformationContext {
	var p = new(SignalConditionInformationContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_signalConditionInformation

	return p
}

func (s *SignalConditionInformationContext) GetParser() antlr.Parser { return s.parser }

func (s *SignalConditionInformationContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *SignalConditionInformationContext) CLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLASS_ORIGIN, 0)
}

func (s *SignalConditionInformationContext) SUBCLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBCLASS_ORIGIN, 0)
}

func (s *SignalConditionInformationContext) MESSAGE_TEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMESSAGE_TEXT, 0)
}

func (s *SignalConditionInformationContext) MYSQL_ERRNO() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL_ERRNO, 0)
}

func (s *SignalConditionInformationContext) CONSTRAINT_CATALOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_CATALOG, 0)
}

func (s *SignalConditionInformationContext) CONSTRAINT_SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_SCHEMA, 0)
}

func (s *SignalConditionInformationContext) CONSTRAINT_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_NAME, 0)
}

func (s *SignalConditionInformationContext) CATALOG_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCATALOG_NAME, 0)
}

func (s *SignalConditionInformationContext) SCHEMA_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA_NAME, 0)
}

func (s *SignalConditionInformationContext) TABLE_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_NAME, 0)
}

func (s *SignalConditionInformationContext) COLUMN_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN_NAME, 0)
}

func (s *SignalConditionInformationContext) CURSOR_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURSOR_NAME, 0)
}

func (s *SignalConditionInformationContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *SignalConditionInformationContext) DECIMAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECIMAL_LITERAL, 0)
}

func (s *SignalConditionInformationContext) MysqlVariable() IMysqlVariableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMysqlVariableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMysqlVariableContext)
}

func (s *SignalConditionInformationContext) SimpleId() ISimpleIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleIdContext)
}

func (s *SignalConditionInformationContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SignalConditionInformationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SignalConditionInformationContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSignalConditionInformation(s)
	}
}

func (s *SignalConditionInformationContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSignalConditionInformation(s)
	}
}

func (p *MySqlParser) SignalConditionInformation() (localctx ISignalConditionInformationContext) {
	this := p
	_ = this

	localctx = NewSignalConditionInformationContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 500, MySqlParserRULE_signalConditionInformation)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5588)
		_la = p.GetTokenStream().LA(1)

		if !((((_la-345)&-(0x1f+1)) == 0 && ((1<<uint((_la-345)))&((1<<(MySqlParserCLASS_ORIGIN-345))|(1<<(MySqlParserCOLUMN_NAME-345))|(1<<(MySqlParserCONSTRAINT_CATALOG-345))|(1<<(MySqlParserCONSTRAINT_SCHEMA-345))|(1<<(MySqlParserCONSTRAINT_NAME-345))|(1<<(MySqlParserCURSOR_NAME-345)))) != 0) || _la == MySqlParserMESSAGE_TEXT || _la == MySqlParserMYSQL_ERRNO || _la == MySqlParserSUBCLASS_ORIGIN || _la == MySqlParserTABLE_NAME || _la == MySqlParserCATALOG_NAME || _la == MySqlParserSCHEMA_NAME) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(5589)
		p.Match(MySqlParserEQUAL_SYMBOL)
	}
	p.SetState(5594)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 804, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(5590)
			p.StringLiteral()
		}

	case 2:
		{
			p.SetState(5591)
			p.Match(MySqlParserDECIMAL_LITERAL)
		}

	case 3:
		{
			p.SetState(5592)
			p.MysqlVariable()
		}

	case 4:
		{
			p.SetState(5593)
			p.SimpleId()
		}

	}

	return localctx
}

// IDiagnosticsStatementContext is an interface to support dynamic dispatch.
type IDiagnosticsStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDiagnosticsStatementContext differentiates from other interfaces.
	IsDiagnosticsStatementContext()
}

type DiagnosticsStatementContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDiagnosticsStatementContext() *DiagnosticsStatementContext {
	var p = new(DiagnosticsStatementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_diagnosticsStatement
	return p
}

func (*DiagnosticsStatementContext) IsDiagnosticsStatementContext() {}

func NewDiagnosticsStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DiagnosticsStatementContext {
	var p = new(DiagnosticsStatementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_diagnosticsStatement

	return p
}

func (s *DiagnosticsStatementContext) GetParser() antlr.Parser { return s.parser }

func (s *DiagnosticsStatementContext) GET() antlr.TerminalNode {
	return s.GetToken(MySqlParserGET, 0)
}

func (s *DiagnosticsStatementContext) DIAGNOSTICS() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIAGNOSTICS, 0)
}

func (s *DiagnosticsStatementContext) CURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT, 0)
}

func (s *DiagnosticsStatementContext) STACKED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTACKED, 0)
}

func (s *DiagnosticsStatementContext) AllVariableClause() []IVariableClauseContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IVariableClauseContext)(nil)).Elem())
	var tst = make([]IVariableClauseContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IVariableClauseContext)
		}
	}

	return tst
}

func (s *DiagnosticsStatementContext) VariableClause(i int) IVariableClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableClauseContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IVariableClauseContext)
}

func (s *DiagnosticsStatementContext) AllEQUAL_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserEQUAL_SYMBOL)
}

func (s *DiagnosticsStatementContext) EQUAL_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, i)
}

func (s *DiagnosticsStatementContext) CONDITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONDITION, 0)
}

func (s *DiagnosticsStatementContext) AllDiagnosticsConditionInformationName() []IDiagnosticsConditionInformationNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDiagnosticsConditionInformationNameContext)(nil)).Elem())
	var tst = make([]IDiagnosticsConditionInformationNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDiagnosticsConditionInformationNameContext)
		}
	}

	return tst
}

func (s *DiagnosticsStatementContext) DiagnosticsConditionInformationName(i int) IDiagnosticsConditionInformationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDiagnosticsConditionInformationNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDiagnosticsConditionInformationNameContext)
}

func (s *DiagnosticsStatementContext) AllNUMBER() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNUMBER)
}

func (s *DiagnosticsStatementContext) NUMBER(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMBER, i)
}

func (s *DiagnosticsStatementContext) AllROW_COUNT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserROW_COUNT)
}

func (s *DiagnosticsStatementContext) ROW_COUNT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserROW_COUNT, i)
}

func (s *DiagnosticsStatementContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *DiagnosticsStatementContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *DiagnosticsStatementContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *DiagnosticsStatementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DiagnosticsStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DiagnosticsStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDiagnosticsStatement(s)
	}
}

func (s *DiagnosticsStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDiagnosticsStatement(s)
	}
}

func (p *MySqlParser) DiagnosticsStatement() (localctx IDiagnosticsStatementContext) {
	this := p
	_ = this

	localctx = NewDiagnosticsStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 502, MySqlParserRULE_diagnosticsStatement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5596)
		p.Match(MySqlParserGET)
	}
	p.SetState(5598)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCURRENT || _la == MySqlParserSTACKED {
		{
			p.SetState(5597)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCURRENT || _la == MySqlParserSTACKED) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}
	{
		p.SetState(5600)
		p.Match(MySqlParserDIAGNOSTICS)
	}
	p.SetState(5632)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserAT_SIGN, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserLOCAL_ID, MySqlParserGLOBAL_ID, MySqlParserOPTIONAL:
		{
			p.SetState(5601)
			p.VariableClause()
		}
		{
			p.SetState(5602)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(5603)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNUMBER || _la == MySqlParserROW_COUNT) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5611)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5604)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5605)
				p.VariableClause()
			}
			{
				p.SetState(5606)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}
			{
				p.SetState(5607)
				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserNUMBER || _la == MySqlParserROW_COUNT) {
					p.GetErrorHandler().RecoverInline(p)
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

			p.SetState(5613)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case MySqlParserCONDITION:
		{
			p.SetState(5614)
			p.Match(MySqlParserCONDITION)
		}
		p.SetState(5617)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
			{
				p.SetState(5615)
				p.DecimalLiteral()
			}

		case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserAT_SIGN, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserLOCAL_ID, MySqlParserGLOBAL_ID, MySqlParserOPTIONAL:
			{
				p.SetState(5616)
				p.VariableClause()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		{
			p.SetState(5619)
			p.VariableClause()
		}
		{
			p.SetState(5620)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(5621)
			p.DiagnosticsConditionInformationName()
		}
		p.SetState(5629)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(5622)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5623)
				p.VariableClause()
			}
			{
				p.SetState(5624)
				p.Match(MySqlParserEQUAL_SYMBOL)
			}
			{
				p.SetState(5625)
				p.DiagnosticsConditionInformationName()
			}

			p.SetState(5631)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IDiagnosticsConditionInformationNameContext is an interface to support dynamic dispatch.
type IDiagnosticsConditionInformationNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDiagnosticsConditionInformationNameContext differentiates from other interfaces.
	IsDiagnosticsConditionInformationNameContext()
}

type DiagnosticsConditionInformationNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDiagnosticsConditionInformationNameContext() *DiagnosticsConditionInformationNameContext {
	var p = new(DiagnosticsConditionInformationNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_diagnosticsConditionInformationName
	return p
}

func (*DiagnosticsConditionInformationNameContext) IsDiagnosticsConditionInformationNameContext() {}

func NewDiagnosticsConditionInformationNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DiagnosticsConditionInformationNameContext {
	var p = new(DiagnosticsConditionInformationNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_diagnosticsConditionInformationName

	return p
}

func (s *DiagnosticsConditionInformationNameContext) GetParser() antlr.Parser { return s.parser }

func (s *DiagnosticsConditionInformationNameContext) CLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLASS_ORIGIN, 0)
}

func (s *DiagnosticsConditionInformationNameContext) SUBCLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBCLASS_ORIGIN, 0)
}

func (s *DiagnosticsConditionInformationNameContext) RETURNED_SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNED_SQLSTATE, 0)
}

func (s *DiagnosticsConditionInformationNameContext) MESSAGE_TEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMESSAGE_TEXT, 0)
}

func (s *DiagnosticsConditionInformationNameContext) MYSQL_ERRNO() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL_ERRNO, 0)
}

func (s *DiagnosticsConditionInformationNameContext) CONSTRAINT_CATALOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_CATALOG, 0)
}

func (s *DiagnosticsConditionInformationNameContext) CONSTRAINT_SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_SCHEMA, 0)
}

func (s *DiagnosticsConditionInformationNameContext) CONSTRAINT_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) CATALOG_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCATALOG_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) SCHEMA_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) TABLE_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) COLUMN_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) CURSOR_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURSOR_NAME, 0)
}

func (s *DiagnosticsConditionInformationNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DiagnosticsConditionInformationNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DiagnosticsConditionInformationNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDiagnosticsConditionInformationName(s)
	}
}

func (s *DiagnosticsConditionInformationNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDiagnosticsConditionInformationName(s)
	}
}

func (p *MySqlParser) DiagnosticsConditionInformationName() (localctx IDiagnosticsConditionInformationNameContext) {
	this := p
	_ = this

	localctx = NewDiagnosticsConditionInformationNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 504, MySqlParserRULE_diagnosticsConditionInformationName)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5634)
		_la = p.GetTokenStream().LA(1)

		if !((((_la-345)&-(0x1f+1)) == 0 && ((1<<uint((_la-345)))&((1<<(MySqlParserCLASS_ORIGIN-345))|(1<<(MySqlParserCOLUMN_NAME-345))|(1<<(MySqlParserCONSTRAINT_CATALOG-345))|(1<<(MySqlParserCONSTRAINT_SCHEMA-345))|(1<<(MySqlParserCONSTRAINT_NAME-345))|(1<<(MySqlParserCURSOR_NAME-345)))) != 0) || _la == MySqlParserMESSAGE_TEXT || _la == MySqlParserMYSQL_ERRNO || _la == MySqlParserRETURNED_SQLSTATE || _la == MySqlParserSUBCLASS_ORIGIN || _la == MySqlParserTABLE_NAME || _la == MySqlParserCATALOG_NAME || _la == MySqlParserSCHEMA_NAME) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IDescribeObjectClauseContext is an interface to support dynamic dispatch.
type IDescribeObjectClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDescribeObjectClauseContext differentiates from other interfaces.
	IsDescribeObjectClauseContext()
}

type DescribeObjectClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDescribeObjectClauseContext() *DescribeObjectClauseContext {
	var p = new(DescribeObjectClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_describeObjectClause
	return p
}

func (*DescribeObjectClauseContext) IsDescribeObjectClauseContext() {}

func NewDescribeObjectClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DescribeObjectClauseContext {
	var p = new(DescribeObjectClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_describeObjectClause

	return p
}

func (s *DescribeObjectClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *DescribeObjectClauseContext) CopyFrom(ctx *DescribeObjectClauseContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *DescribeObjectClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DescribeObjectClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type DescribeStatementsContext struct {
	*DescribeObjectClauseContext
}

func NewDescribeStatementsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DescribeStatementsContext {
	var p = new(DescribeStatementsContext)

	p.DescribeObjectClauseContext = NewEmptyDescribeObjectClauseContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DescribeObjectClauseContext))

	return p
}

func (s *DescribeStatementsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DescribeStatementsContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *DescribeStatementsContext) DeleteStatement() IDeleteStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDeleteStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDeleteStatementContext)
}

func (s *DescribeStatementsContext) InsertStatement() IInsertStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IInsertStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IInsertStatementContext)
}

func (s *DescribeStatementsContext) ReplaceStatement() IReplaceStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IReplaceStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IReplaceStatementContext)
}

func (s *DescribeStatementsContext) UpdateStatement() IUpdateStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUpdateStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUpdateStatementContext)
}

func (s *DescribeStatementsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDescribeStatements(s)
	}
}

func (s *DescribeStatementsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDescribeStatements(s)
	}
}

type DescribeConnectionContext struct {
	*DescribeObjectClauseContext
}

func NewDescribeConnectionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DescribeConnectionContext {
	var p = new(DescribeConnectionContext)

	p.DescribeObjectClauseContext = NewEmptyDescribeObjectClauseContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DescribeObjectClauseContext))

	return p
}

func (s *DescribeConnectionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DescribeConnectionContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *DescribeConnectionContext) CONNECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION, 0)
}

func (s *DescribeConnectionContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DescribeConnectionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDescribeConnection(s)
	}
}

func (s *DescribeConnectionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDescribeConnection(s)
	}
}

func (p *MySqlParser) DescribeObjectClause() (localctx IDescribeObjectClauseContext) {
	this := p
	_ = this

	localctx = NewDescribeObjectClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 506, MySqlParserRULE_describeObjectClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5646)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDELETE, MySqlParserINSERT, MySqlParserREPLACE, MySqlParserSELECT, MySqlParserUPDATE, MySqlParserLR_BRACKET:
		localctx = NewDescribeStatementsContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		p.SetState(5641)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserSELECT, MySqlParserLR_BRACKET:
			{
				p.SetState(5636)
				p.SelectStatement()
			}

		case MySqlParserDELETE:
			{
				p.SetState(5637)
				p.DeleteStatement()
			}

		case MySqlParserINSERT:
			{
				p.SetState(5638)
				p.InsertStatement()
			}

		case MySqlParserREPLACE:
			{
				p.SetState(5639)
				p.ReplaceStatement()
			}

		case MySqlParserUPDATE:
			{
				p.SetState(5640)
				p.UpdateStatement()
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}

	case MySqlParserFOR:
		localctx = NewDescribeConnectionContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5643)
			p.Match(MySqlParserFOR)
		}
		{
			p.SetState(5644)
			p.Match(MySqlParserCONNECTION)
		}
		{
			p.SetState(5645)
			p.Uid()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IFullIdContext is an interface to support dynamic dispatch.
type IFullIdContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFullIdContext differentiates from other interfaces.
	IsFullIdContext()
}

type FullIdContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFullIdContext() *FullIdContext {
	var p = new(FullIdContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_fullId
	return p
}

func (*FullIdContext) IsFullIdContext() {}

func NewFullIdContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullIdContext {
	var p = new(FullIdContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_fullId

	return p
}

func (s *FullIdContext) GetParser() antlr.Parser { return s.parser }

func (s *FullIdContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *FullIdContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *FullIdContext) DOT_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT_ID, 0)
}

func (s *FullIdContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *FullIdContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FullIdContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FullIdContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFullId(s)
	}
}

func (s *FullIdContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFullId(s)
	}
}

func (p *MySqlParser) FullId() (localctx IFullIdContext) {
	this := p
	_ = this

	localctx = NewFullIdContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 508, MySqlParserRULE_fullId)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5648)
		p.Uid()
	}
	p.SetState(5652)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 812, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(5649)
			p.Match(MySqlParserDOT_ID)
		}

	} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 812, p.GetParserRuleContext()) == 2 {
		{
			p.SetState(5650)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(5651)
			p.Uid()
		}

	}

	return localctx
}

// ITableNameContext is an interface to support dynamic dispatch.
type ITableNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTableNameContext differentiates from other interfaces.
	IsTableNameContext()
}

type TableNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTableNameContext() *TableNameContext {
	var p = new(TableNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tableName
	return p
}

func (*TableNameContext) IsTableNameContext() {}

func NewTableNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TableNameContext {
	var p = new(TableNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tableName

	return p
}

func (s *TableNameContext) GetParser() antlr.Parser { return s.parser }

func (s *TableNameContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *TableNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TableNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TableNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTableName(s)
	}
}

func (s *TableNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTableName(s)
	}
}

func (p *MySqlParser) TableName() (localctx ITableNameContext) {
	this := p
	_ = this

	localctx = NewTableNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 510, MySqlParserRULE_tableName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5654)
		p.FullId()
	}

	return localctx
}

// IFullColumnNameContext is an interface to support dynamic dispatch.
type IFullColumnNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFullColumnNameContext differentiates from other interfaces.
	IsFullColumnNameContext()
}

type FullColumnNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFullColumnNameContext() *FullColumnNameContext {
	var p = new(FullColumnNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_fullColumnName
	return p
}

func (*FullColumnNameContext) IsFullColumnNameContext() {}

func NewFullColumnNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullColumnNameContext {
	var p = new(FullColumnNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_fullColumnName

	return p
}

func (s *FullColumnNameContext) GetParser() antlr.Parser { return s.parser }

func (s *FullColumnNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *FullColumnNameContext) AllDottedId() []IDottedIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDottedIdContext)(nil)).Elem())
	var tst = make([]IDottedIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDottedIdContext)
		}
	}

	return tst
}

func (s *FullColumnNameContext) DottedId(i int) IDottedIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDottedIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDottedIdContext)
}

func (s *FullColumnNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FullColumnNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FullColumnNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFullColumnName(s)
	}
}

func (s *FullColumnNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFullColumnName(s)
	}
}

func (p *MySqlParser) FullColumnName() (localctx IFullColumnNameContext) {
	this := p
	_ = this

	localctx = NewFullColumnNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 512, MySqlParserRULE_fullColumnName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5668)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 816, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5656)
			p.Uid()
		}
		p.SetState(5661)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 814, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5657)
				p.DottedId()
			}
			p.SetState(5659)
			p.GetErrorHandler().Sync(p)

			if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 813, p.GetParserRuleContext()) == 1 {
				{
					p.SetState(5658)
					p.DottedId()
				}

			}

		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		p.SetState(5663)
		p.MatchWildcard()

		{
			p.SetState(5664)
			p.DottedId()
		}
		p.SetState(5666)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 815, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5665)
				p.DottedId()
			}

		}

	}

	return localctx
}

// IIndexColumnNameContext is an interface to support dynamic dispatch.
type IIndexColumnNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetSortType returns the sortType token.
	GetSortType() antlr.Token

	// SetSortType sets the sortType token.
	SetSortType(antlr.Token)

	// IsIndexColumnNameContext differentiates from other interfaces.
	IsIndexColumnNameContext()
}

type IndexColumnNameContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	sortType antlr.Token
}

func NewEmptyIndexColumnNameContext() *IndexColumnNameContext {
	var p = new(IndexColumnNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexColumnName
	return p
}

func (*IndexColumnNameContext) IsIndexColumnNameContext() {}

func NewIndexColumnNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexColumnNameContext {
	var p = new(IndexColumnNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexColumnName

	return p
}

func (s *IndexColumnNameContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexColumnNameContext) GetSortType() antlr.Token { return s.sortType }

func (s *IndexColumnNameContext) SetSortType(v antlr.Token) { s.sortType = v }

func (s *IndexColumnNameContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *IndexColumnNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *IndexColumnNameContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *IndexColumnNameContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *IndexColumnNameContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *IndexColumnNameContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *IndexColumnNameContext) ASC() antlr.TerminalNode {
	return s.GetToken(MySqlParserASC, 0)
}

func (s *IndexColumnNameContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *IndexColumnNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexColumnNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexColumnNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexColumnName(s)
	}
}

func (s *IndexColumnNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexColumnName(s)
	}
}

func (p *MySqlParser) IndexColumnName() (localctx IIndexColumnNameContext) {
	this := p
	_ = this

	localctx = NewIndexColumnNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 514, MySqlParserRULE_indexColumnName)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(5681)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 819, p.GetParserRuleContext()) {
	case 1:
		p.SetState(5672)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 817, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(5670)
				p.Uid()
			}

		case 2:
			{
				p.SetState(5671)
				p.Match(MySqlParserSTRING_LITERAL)
			}

		}
		p.SetState(5678)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(5674)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(5675)
				p.DecimalLiteral()
			}
			{
				p.SetState(5676)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 2:
		{
			p.SetState(5680)
			p.expression(0)
		}

	}
	p.SetState(5684)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserASC || _la == MySqlParserDESC {
		{
			p.SetState(5683)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*IndexColumnNameContext).sortType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserASC || _la == MySqlParserDESC) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*IndexColumnNameContext).sortType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IUserNameContext is an interface to support dynamic dispatch.
type IUserNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUserNameContext differentiates from other interfaces.
	IsUserNameContext()
}

type UserNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUserNameContext() *UserNameContext {
	var p = new(UserNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userName
	return p
}

func (*UserNameContext) IsUserNameContext() {}

func NewUserNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserNameContext {
	var p = new(UserNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userName

	return p
}

func (s *UserNameContext) GetParser() antlr.Parser { return s.parser }

func (s *UserNameContext) STRING_USER_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_USER_NAME, 0)
}

func (s *UserNameContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *UserNameContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *UserNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserName(s)
	}
}

func (s *UserNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserName(s)
	}
}

func (p *MySqlParser) UserName() (localctx IUserNameContext) {
	this := p
	_ = this

	localctx = NewUserNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 516, MySqlParserRULE_userName)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5686)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-1099)&-(0x1f+1)) == 0 && ((1<<uint((_la-1099)))&((1<<(MySqlParserSTRING_LITERAL-1099))|(1<<(MySqlParserID-1099))|(1<<(MySqlParserSTRING_USER_NAME-1099)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IMysqlVariableContext is an interface to support dynamic dispatch.
type IMysqlVariableContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsMysqlVariableContext differentiates from other interfaces.
	IsMysqlVariableContext()
}

type MysqlVariableContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyMysqlVariableContext() *MysqlVariableContext {
	var p = new(MysqlVariableContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_mysqlVariable
	return p
}

func (*MysqlVariableContext) IsMysqlVariableContext() {}

func NewMysqlVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MysqlVariableContext {
	var p = new(MysqlVariableContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_mysqlVariable

	return p
}

func (s *MysqlVariableContext) GetParser() antlr.Parser { return s.parser }

func (s *MysqlVariableContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *MysqlVariableContext) GLOBAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL_ID, 0)
}

func (s *MysqlVariableContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MysqlVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *MysqlVariableContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMysqlVariable(s)
	}
}

func (s *MysqlVariableContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMysqlVariable(s)
	}
}

func (p *MySqlParser) MysqlVariable() (localctx IMysqlVariableContext) {
	this := p
	_ = this

	localctx = NewMysqlVariableContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 518, MySqlParserRULE_mysqlVariable)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5688)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserLOCAL_ID || _la == MySqlParserGLOBAL_ID) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// ICharsetNameContext is an interface to support dynamic dispatch.
type ICharsetNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCharsetNameContext differentiates from other interfaces.
	IsCharsetNameContext()
}

type CharsetNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCharsetNameContext() *CharsetNameContext {
	var p = new(CharsetNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_charsetName
	return p
}

func (*CharsetNameContext) IsCharsetNameContext() {}

func NewCharsetNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharsetNameContext {
	var p = new(CharsetNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_charsetName

	return p
}

func (s *CharsetNameContext) GetParser() antlr.Parser { return s.parser }

func (s *CharsetNameContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *CharsetNameContext) CharsetNameBase() ICharsetNameBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameBaseContext)
}

func (s *CharsetNameContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CharsetNameContext) CHARSET_REVERSE_QOUTE_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARSET_REVERSE_QOUTE_STRING, 0)
}

func (s *CharsetNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CharsetNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CharsetNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCharsetName(s)
	}
}

func (s *CharsetNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCharsetName(s)
	}
}

func (p *MySqlParser) CharsetName() (localctx ICharsetNameContext) {
	this := p
	_ = this

	localctx = NewCharsetNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 520, MySqlParserRULE_charsetName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5694)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 821, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5690)
			p.Match(MySqlParserBINARY)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5691)
			p.CharsetNameBase()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5692)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5693)
			p.Match(MySqlParserCHARSET_REVERSE_QOUTE_STRING)
		}

	}

	return localctx
}

// ICollationNameContext is an interface to support dynamic dispatch.
type ICollationNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCollationNameContext differentiates from other interfaces.
	IsCollationNameContext()
}

type CollationNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCollationNameContext() *CollationNameContext {
	var p = new(CollationNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_collationName
	return p
}

func (*CollationNameContext) IsCollationNameContext() {}

func NewCollationNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CollationNameContext {
	var p = new(CollationNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_collationName

	return p
}

func (s *CollationNameContext) GetParser() antlr.Parser { return s.parser }

func (s *CollationNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *CollationNameContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *CollationNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CollationNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CollationNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCollationName(s)
	}
}

func (s *CollationNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCollationName(s)
	}
}

func (p *MySqlParser) CollationName() (localctx ICollationNameContext) {
	this := p
	_ = this

	localctx = NewCollationNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 522, MySqlParserRULE_collationName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5698)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 822, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5696)
			p.Uid()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5697)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	}

	return localctx
}

// IEngineNameContext is an interface to support dynamic dispatch.
type IEngineNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsEngineNameContext differentiates from other interfaces.
	IsEngineNameContext()
}

type EngineNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyEngineNameContext() *EngineNameContext {
	var p = new(EngineNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_engineName
	return p
}

func (*EngineNameContext) IsEngineNameContext() {}

func NewEngineNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EngineNameContext {
	var p = new(EngineNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_engineName

	return p
}

func (s *EngineNameContext) GetParser() antlr.Parser { return s.parser }

func (s *EngineNameContext) ARCHIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserARCHIVE, 0)
}

func (s *EngineNameContext) BLACKHOLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserBLACKHOLE, 0)
}

func (s *EngineNameContext) CSV() antlr.TerminalNode {
	return s.GetToken(MySqlParserCSV, 0)
}

func (s *EngineNameContext) FEDERATED() antlr.TerminalNode {
	return s.GetToken(MySqlParserFEDERATED, 0)
}

func (s *EngineNameContext) INNODB() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNODB, 0)
}

func (s *EngineNameContext) MEMORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMORY, 0)
}

func (s *EngineNameContext) MRG_MYISAM() antlr.TerminalNode {
	return s.GetToken(MySqlParserMRG_MYISAM, 0)
}

func (s *EngineNameContext) MYISAM() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYISAM, 0)
}

func (s *EngineNameContext) NDB() antlr.TerminalNode {
	return s.GetToken(MySqlParserNDB, 0)
}

func (s *EngineNameContext) NDBCLUSTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNDBCLUSTER, 0)
}

func (s *EngineNameContext) PERFORMANCE_SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERFORMANCE_SCHEMA, 0)
}

func (s *EngineNameContext) TOKUDB() antlr.TerminalNode {
	return s.GetToken(MySqlParserTOKUDB, 0)
}

func (s *EngineNameContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *EngineNameContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *EngineNameContext) REVERSE_QUOTE_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE_QUOTE_ID, 0)
}

func (s *EngineNameContext) CONNECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECT, 0)
}

func (s *EngineNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *EngineNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *EngineNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterEngineName(s)
	}
}

func (s *EngineNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitEngineName(s)
	}
}

func (p *MySqlParser) EngineName() (localctx IEngineNameContext) {
	this := p
	_ = this

	localctx = NewEngineNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 524, MySqlParserRULE_engineName)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5700)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserCONNECT || (((_la-742)&-(0x1f+1)) == 0 && ((1<<uint((_la-742)))&((1<<(MySqlParserARCHIVE-742))|(1<<(MySqlParserBLACKHOLE-742))|(1<<(MySqlParserCSV-742))|(1<<(MySqlParserFEDERATED-742))|(1<<(MySqlParserINNODB-742))|(1<<(MySqlParserMEMORY-742))|(1<<(MySqlParserMRG_MYISAM-742))|(1<<(MySqlParserMYISAM-742))|(1<<(MySqlParserNDB-742))|(1<<(MySqlParserNDBCLUSTER-742))|(1<<(MySqlParserPERFORMANCE_SCHEMA-742))|(1<<(MySqlParserTOKUDB-742)))) != 0) || (((_la-1099)&-(0x1f+1)) == 0 && ((1<<uint((_la-1099)))&((1<<(MySqlParserSTRING_LITERAL-1099))|(1<<(MySqlParserID-1099))|(1<<(MySqlParserREVERSE_QUOTE_ID-1099)))) != 0)) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IUuidSetContext is an interface to support dynamic dispatch.
type IUuidSetContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUuidSetContext differentiates from other interfaces.
	IsUuidSetContext()
}

type UuidSetContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUuidSetContext() *UuidSetContext {
	var p = new(UuidSetContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_uuidSet
	return p
}

func (*UuidSetContext) IsUuidSetContext() {}

func NewUuidSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UuidSetContext {
	var p = new(UuidSetContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_uuidSet

	return p
}

func (s *UuidSetContext) GetParser() antlr.Parser { return s.parser }

func (s *UuidSetContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *UuidSetContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *UuidSetContext) AllMINUS() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserMINUS)
}

func (s *UuidSetContext) MINUS(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, i)
}

func (s *UuidSetContext) AllCOLON_SYMB() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOLON_SYMB)
}

func (s *UuidSetContext) COLON_SYMB(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLON_SYMB, i)
}

func (s *UuidSetContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UuidSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UuidSetContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUuidSet(s)
	}
}

func (s *UuidSetContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUuidSet(s)
	}
}

func (p *MySqlParser) UuidSet() (localctx IUuidSetContext) {
	this := p
	_ = this

	localctx = NewUuidSetContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 526, MySqlParserRULE_uuidSet)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5702)
		p.DecimalLiteral()
	}
	{
		p.SetState(5703)
		p.Match(MySqlParserMINUS)
	}
	{
		p.SetState(5704)
		p.DecimalLiteral()
	}
	{
		p.SetState(5705)
		p.Match(MySqlParserMINUS)
	}
	{
		p.SetState(5706)
		p.DecimalLiteral()
	}
	{
		p.SetState(5707)
		p.Match(MySqlParserMINUS)
	}
	{
		p.SetState(5708)
		p.DecimalLiteral()
	}
	{
		p.SetState(5709)
		p.Match(MySqlParserMINUS)
	}
	{
		p.SetState(5710)
		p.DecimalLiteral()
	}
	p.SetState(5716)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for ok := true; ok; ok = _la == MySqlParserCOLON_SYMB {
		{
			p.SetState(5711)
			p.Match(MySqlParserCOLON_SYMB)
		}
		{
			p.SetState(5712)
			p.DecimalLiteral()
		}
		{
			p.SetState(5713)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(5714)
			p.DecimalLiteral()
		}

		p.SetState(5718)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IXidContext is an interface to support dynamic dispatch.
type IXidContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetGlobalTableUid returns the globalTableUid rule contexts.
	GetGlobalTableUid() IXuidStringIdContext

	// GetQualifier returns the qualifier rule contexts.
	GetQualifier() IXuidStringIdContext

	// GetIdFormat returns the idFormat rule contexts.
	GetIdFormat() IDecimalLiteralContext

	// SetGlobalTableUid sets the globalTableUid rule contexts.
	SetGlobalTableUid(IXuidStringIdContext)

	// SetQualifier sets the qualifier rule contexts.
	SetQualifier(IXuidStringIdContext)

	// SetIdFormat sets the idFormat rule contexts.
	SetIdFormat(IDecimalLiteralContext)

	// IsXidContext differentiates from other interfaces.
	IsXidContext()
}

type XidContext struct {
	*antlr.BaseParserRuleContext
	parser         antlr.Parser
	globalTableUid IXuidStringIdContext
	qualifier      IXuidStringIdContext
	idFormat       IDecimalLiteralContext
}

func NewEmptyXidContext() *XidContext {
	var p = new(XidContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xid
	return p
}

func (*XidContext) IsXidContext() {}

func NewXidContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XidContext {
	var p = new(XidContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xid

	return p
}

func (s *XidContext) GetParser() antlr.Parser { return s.parser }

func (s *XidContext) GetGlobalTableUid() IXuidStringIdContext { return s.globalTableUid }

func (s *XidContext) GetQualifier() IXuidStringIdContext { return s.qualifier }

func (s *XidContext) GetIdFormat() IDecimalLiteralContext { return s.idFormat }

func (s *XidContext) SetGlobalTableUid(v IXuidStringIdContext) { s.globalTableUid = v }

func (s *XidContext) SetQualifier(v IXuidStringIdContext) { s.qualifier = v }

func (s *XidContext) SetIdFormat(v IDecimalLiteralContext) { s.idFormat = v }

func (s *XidContext) AllXuidStringId() []IXuidStringIdContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IXuidStringIdContext)(nil)).Elem())
	var tst = make([]IXuidStringIdContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IXuidStringIdContext)
		}
	}

	return tst
}

func (s *XidContext) XuidStringId(i int) IXuidStringIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IXuidStringIdContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IXuidStringIdContext)
}

func (s *XidContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *XidContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *XidContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *XidContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XidContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XidContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXid(s)
	}
}

func (s *XidContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXid(s)
	}
}

func (p *MySqlParser) Xid() (localctx IXidContext) {
	this := p
	_ = this

	localctx = NewXidContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 528, MySqlParserRULE_xid)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5720)

		var _x = p.XuidStringId()

		localctx.(*XidContext).globalTableUid = _x
	}
	p.SetState(5727)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMA {
		{
			p.SetState(5721)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5722)

			var _x = p.XuidStringId()

			localctx.(*XidContext).qualifier = _x
		}
		p.SetState(5725)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOMMA {
			{
				p.SetState(5723)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(5724)

				var _x = p.DecimalLiteral()

				localctx.(*XidContext).idFormat = _x
			}

		}

	}

	return localctx
}

// IXuidStringIdContext is an interface to support dynamic dispatch.
type IXuidStringIdContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsXuidStringIdContext differentiates from other interfaces.
	IsXuidStringIdContext()
}

type XuidStringIdContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyXuidStringIdContext() *XuidStringIdContext {
	var p = new(XuidStringIdContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_xuidStringId
	return p
}

func (*XuidStringIdContext) IsXuidStringIdContext() {}

func NewXuidStringIdContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *XuidStringIdContext {
	var p = new(XuidStringIdContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_xuidStringId

	return p
}

func (s *XuidStringIdContext) GetParser() antlr.Parser { return s.parser }

func (s *XuidStringIdContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *XuidStringIdContext) BIT_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_STRING, 0)
}

func (s *XuidStringIdContext) AllHEXADECIMAL_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserHEXADECIMAL_LITERAL)
}

func (s *XuidStringIdContext) HEXADECIMAL_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserHEXADECIMAL_LITERAL, i)
}

func (s *XuidStringIdContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *XuidStringIdContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *XuidStringIdContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterXuidStringId(s)
	}
}

func (s *XuidStringIdContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitXuidStringId(s)
	}
}

func (p *MySqlParser) XuidStringId() (localctx IXuidStringIdContext) {
	this := p
	_ = this

	localctx = NewXuidStringIdContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 530, MySqlParserRULE_xuidStringId)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5736)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserSTRING_LITERAL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5729)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	case MySqlParserBIT_STRING:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5730)
			p.Match(MySqlParserBIT_STRING)
		}

	case MySqlParserHEXADECIMAL_LITERAL:
		p.EnterOuterAlt(localctx, 3)
		p.SetState(5732)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserHEXADECIMAL_LITERAL {
			{
				p.SetState(5731)
				p.Match(MySqlParserHEXADECIMAL_LITERAL)
			}

			p.SetState(5734)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IAuthPluginContext is an interface to support dynamic dispatch.
type IAuthPluginContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsAuthPluginContext differentiates from other interfaces.
	IsAuthPluginContext()
}

type AuthPluginContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyAuthPluginContext() *AuthPluginContext {
	var p = new(AuthPluginContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_authPlugin
	return p
}

func (*AuthPluginContext) IsAuthPluginContext() {}

func NewAuthPluginContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AuthPluginContext {
	var p = new(AuthPluginContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_authPlugin

	return p
}

func (s *AuthPluginContext) GetParser() antlr.Parser { return s.parser }

func (s *AuthPluginContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *AuthPluginContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *AuthPluginContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AuthPluginContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AuthPluginContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAuthPlugin(s)
	}
}

func (s *AuthPluginContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAuthPlugin(s)
	}
}

func (p *MySqlParser) AuthPlugin() (localctx IAuthPluginContext) {
	this := p
	_ = this

	localctx = NewAuthPluginContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 532, MySqlParserRULE_authPlugin)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5740)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 828, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5738)
			p.Uid()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5739)
			p.Match(MySqlParserSTRING_LITERAL)
		}

	}

	return localctx
}

// IUidContext is an interface to support dynamic dispatch.
type IUidContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUidContext differentiates from other interfaces.
	IsUidContext()
}

type UidContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUidContext() *UidContext {
	var p = new(UidContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_uid
	return p
}

func (*UidContext) IsUidContext() {}

func NewUidContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UidContext {
	var p = new(UidContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_uid

	return p
}

func (s *UidContext) GetParser() antlr.Parser { return s.parser }

func (s *UidContext) SimpleId() ISimpleIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISimpleIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISimpleIdContext)
}

func (s *UidContext) REVERSE_QUOTE_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE_QUOTE_ID, 0)
}

func (s *UidContext) CHARSET_REVERSE_QOUTE_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARSET_REVERSE_QOUTE_STRING, 0)
}

func (s *UidContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UidContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UidContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUid(s)
	}
}

func (s *UidContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUid(s)
	}
}

func (p *MySqlParser) Uid() (localctx IUidContext) {
	this := p
	_ = this

	localctx = NewUidContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 534, MySqlParserRULE_uid)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5745)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 829, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5742)
			p.SimpleId()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5743)
			p.Match(MySqlParserREVERSE_QUOTE_ID)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5744)
			p.Match(MySqlParserCHARSET_REVERSE_QOUTE_STRING)
		}

	}

	return localctx
}

// ISimpleIdContext is an interface to support dynamic dispatch.
type ISimpleIdContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSimpleIdContext differentiates from other interfaces.
	IsSimpleIdContext()
}

type SimpleIdContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySimpleIdContext() *SimpleIdContext {
	var p = new(SimpleIdContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_simpleId
	return p
}

func (*SimpleIdContext) IsSimpleIdContext() {}

func NewSimpleIdContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleIdContext {
	var p = new(SimpleIdContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_simpleId

	return p
}

func (s *SimpleIdContext) GetParser() antlr.Parser { return s.parser }

func (s *SimpleIdContext) ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserID, 0)
}

func (s *SimpleIdContext) CharsetNameBase() ICharsetNameBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameBaseContext)
}

func (s *SimpleIdContext) TransactionLevelBase() ITransactionLevelBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITransactionLevelBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ITransactionLevelBaseContext)
}

func (s *SimpleIdContext) EngineName() IEngineNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IEngineNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IEngineNameContext)
}

func (s *SimpleIdContext) PrivilegesBase() IPrivilegesBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPrivilegesBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPrivilegesBaseContext)
}

func (s *SimpleIdContext) IntervalTypeBase() IIntervalTypeBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeBaseContext)
}

func (s *SimpleIdContext) DataTypeBase() IDataTypeBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDataTypeBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDataTypeBaseContext)
}

func (s *SimpleIdContext) KeywordsCanBeId() IKeywordsCanBeIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IKeywordsCanBeIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IKeywordsCanBeIdContext)
}

func (s *SimpleIdContext) FunctionNameBase() IFunctionNameBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionNameBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionNameBaseContext)
}

func (s *SimpleIdContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleIdContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SimpleIdContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleId(s)
	}
}

func (s *SimpleIdContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleId(s)
	}
}

func (p *MySqlParser) SimpleId() (localctx ISimpleIdContext) {
	this := p
	_ = this

	localctx = NewSimpleIdContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 536, MySqlParserRULE_simpleId)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5756)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 830, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5747)
			p.Match(MySqlParserID)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5748)
			p.CharsetNameBase()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5749)
			p.TransactionLevelBase()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5750)
			p.EngineName()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5751)
			p.PrivilegesBase()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5752)
			p.IntervalTypeBase()
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5753)
			p.DataTypeBase()
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(5754)
			p.KeywordsCanBeId()
		}

	case 9:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(5755)
			p.FunctionNameBase()
		}

	}

	return localctx
}

// IDottedIdContext is an interface to support dynamic dispatch.
type IDottedIdContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDottedIdContext differentiates from other interfaces.
	IsDottedIdContext()
}

type DottedIdContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDottedIdContext() *DottedIdContext {
	var p = new(DottedIdContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dottedId
	return p
}

func (*DottedIdContext) IsDottedIdContext() {}

func NewDottedIdContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DottedIdContext {
	var p = new(DottedIdContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dottedId

	return p
}

func (s *DottedIdContext) GetParser() antlr.Parser { return s.parser }

func (s *DottedIdContext) DOT_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT_ID, 0)
}

func (s *DottedIdContext) DOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOT, 0)
}

func (s *DottedIdContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *DottedIdContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DottedIdContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DottedIdContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDottedId(s)
	}
}

func (s *DottedIdContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDottedId(s)
	}
}

func (p *MySqlParser) DottedId() (localctx IDottedIdContext) {
	this := p
	_ = this

	localctx = NewDottedIdContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 538, MySqlParserRULE_dottedId)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5761)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDOT_ID:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5758)
			p.Match(MySqlParserDOT_ID)
		}

	case MySqlParserDOT:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5759)
			p.Match(MySqlParserDOT)
		}
		{
			p.SetState(5760)
			p.Uid()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IDecimalLiteralContext is an interface to support dynamic dispatch.
type IDecimalLiteralContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDecimalLiteralContext differentiates from other interfaces.
	IsDecimalLiteralContext()
}

type DecimalLiteralContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDecimalLiteralContext() *DecimalLiteralContext {
	var p = new(DecimalLiteralContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_decimalLiteral
	return p
}

func (*DecimalLiteralContext) IsDecimalLiteralContext() {}

func NewDecimalLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DecimalLiteralContext {
	var p = new(DecimalLiteralContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_decimalLiteral

	return p
}

func (s *DecimalLiteralContext) GetParser() antlr.Parser { return s.parser }

func (s *DecimalLiteralContext) DECIMAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECIMAL_LITERAL, 0)
}

func (s *DecimalLiteralContext) ZERO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserZERO_DECIMAL, 0)
}

func (s *DecimalLiteralContext) ONE_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE_DECIMAL, 0)
}

func (s *DecimalLiteralContext) TWO_DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTWO_DECIMAL, 0)
}

func (s *DecimalLiteralContext) REAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAL_LITERAL, 0)
}

func (s *DecimalLiteralContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DecimalLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DecimalLiteralContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDecimalLiteral(s)
	}
}

func (s *DecimalLiteralContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDecimalLiteral(s)
	}
}

func (p *MySqlParser) DecimalLiteral() (localctx IDecimalLiteralContext) {
	this := p
	_ = this

	localctx = NewDecimalLiteralContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 540, MySqlParserRULE_decimalLiteral)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5763)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-1089)&-(0x1f+1)) == 0 && ((1<<uint((_la-1089)))&((1<<(MySqlParserZERO_DECIMAL-1089))|(1<<(MySqlParserONE_DECIMAL-1089))|(1<<(MySqlParserTWO_DECIMAL-1089))|(1<<(MySqlParserDECIMAL_LITERAL-1089))|(1<<(MySqlParserREAL_LITERAL-1089)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IFileSizeLiteralContext is an interface to support dynamic dispatch.
type IFileSizeLiteralContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFileSizeLiteralContext differentiates from other interfaces.
	IsFileSizeLiteralContext()
}

type FileSizeLiteralContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFileSizeLiteralContext() *FileSizeLiteralContext {
	var p = new(FileSizeLiteralContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_fileSizeLiteral
	return p
}

func (*FileSizeLiteralContext) IsFileSizeLiteralContext() {}

func NewFileSizeLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FileSizeLiteralContext {
	var p = new(FileSizeLiteralContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_fileSizeLiteral

	return p
}

func (s *FileSizeLiteralContext) GetParser() antlr.Parser { return s.parser }

func (s *FileSizeLiteralContext) FILESIZE_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILESIZE_LITERAL, 0)
}

func (s *FileSizeLiteralContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *FileSizeLiteralContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FileSizeLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FileSizeLiteralContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFileSizeLiteral(s)
	}
}

func (s *FileSizeLiteralContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFileSizeLiteral(s)
	}
}

func (p *MySqlParser) FileSizeLiteral() (localctx IFileSizeLiteralContext) {
	this := p
	_ = this

	localctx = NewFileSizeLiteralContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 542, MySqlParserRULE_fileSizeLiteral)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5767)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserFILESIZE_LITERAL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5765)
			p.Match(MySqlParserFILESIZE_LITERAL)
		}

	case MySqlParserZERO_DECIMAL, MySqlParserONE_DECIMAL, MySqlParserTWO_DECIMAL, MySqlParserDECIMAL_LITERAL, MySqlParserREAL_LITERAL:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5766)
			p.DecimalLiteral()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IStringLiteralContext is an interface to support dynamic dispatch.
type IStringLiteralContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsStringLiteralContext differentiates from other interfaces.
	IsStringLiteralContext()
}

type StringLiteralContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyStringLiteralContext() *StringLiteralContext {
	var p = new(StringLiteralContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_stringLiteral
	return p
}

func (*StringLiteralContext) IsStringLiteralContext() {}

func NewStringLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StringLiteralContext {
	var p = new(StringLiteralContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_stringLiteral

	return p
}

func (s *StringLiteralContext) GetParser() antlr.Parser { return s.parser }

func (s *StringLiteralContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *StringLiteralContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *StringLiteralContext) START_NATIONAL_STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART_NATIONAL_STRING_LITERAL, 0)
}

func (s *StringLiteralContext) STRING_CHARSET_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_CHARSET_NAME, 0)
}

func (s *StringLiteralContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *StringLiteralContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *StringLiteralContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StringLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *StringLiteralContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStringLiteral(s)
	}
}

func (s *StringLiteralContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStringLiteral(s)
	}
}

func (p *MySqlParser) StringLiteral() (localctx IStringLiteralContext) {
	this := p
	_ = this

	localctx = NewStringLiteralContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 544, MySqlParserRULE_stringLiteral)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(5792)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 839, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		p.SetState(5774)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserSTRING_LITERAL, MySqlParserSTRING_CHARSET_NAME:
			p.SetState(5770)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserSTRING_CHARSET_NAME {
				{
					p.SetState(5769)
					p.Match(MySqlParserSTRING_CHARSET_NAME)
				}

			}
			{
				p.SetState(5772)
				p.Match(MySqlParserSTRING_LITERAL)
			}

		case MySqlParserSTART_NATIONAL_STRING_LITERAL:
			{
				p.SetState(5773)
				p.Match(MySqlParserSTART_NATIONAL_STRING_LITERAL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		p.SetState(5777)
		p.GetErrorHandler().Sync(p)
		_alt = 1
		for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			switch _alt {
			case 1:
				{
					p.SetState(5776)
					p.Match(MySqlParserSTRING_LITERAL)
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}

			p.SetState(5779)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 835, p.GetParserRuleContext())
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		p.SetState(5786)
		p.GetErrorHandler().Sync(p)

		switch p.GetTokenStream().LA(1) {
		case MySqlParserSTRING_LITERAL, MySqlParserSTRING_CHARSET_NAME:
			p.SetState(5782)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if _la == MySqlParserSTRING_CHARSET_NAME {
				{
					p.SetState(5781)
					p.Match(MySqlParserSTRING_CHARSET_NAME)
				}

			}
			{
				p.SetState(5784)
				p.Match(MySqlParserSTRING_LITERAL)
			}

		case MySqlParserSTART_NATIONAL_STRING_LITERAL:
			{
				p.SetState(5785)
				p.Match(MySqlParserSTART_NATIONAL_STRING_LITERAL)
			}

		default:
			panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		}
		p.SetState(5790)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 838, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5788)
				p.Match(MySqlParserCOLLATE)
			}
			{
				p.SetState(5789)
				p.CollationName()
			}

		}

	}

	return localctx
}

// IBooleanLiteralContext is an interface to support dynamic dispatch.
type IBooleanLiteralContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBooleanLiteralContext differentiates from other interfaces.
	IsBooleanLiteralContext()
}

type BooleanLiteralContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBooleanLiteralContext() *BooleanLiteralContext {
	var p = new(BooleanLiteralContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_booleanLiteral
	return p
}

func (*BooleanLiteralContext) IsBooleanLiteralContext() {}

func NewBooleanLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BooleanLiteralContext {
	var p = new(BooleanLiteralContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_booleanLiteral

	return p
}

func (s *BooleanLiteralContext) GetParser() antlr.Parser { return s.parser }

func (s *BooleanLiteralContext) TRUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRUE, 0)
}

func (s *BooleanLiteralContext) FALSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFALSE, 0)
}

func (s *BooleanLiteralContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BooleanLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BooleanLiteralContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBooleanLiteral(s)
	}
}

func (s *BooleanLiteralContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBooleanLiteral(s)
	}
}

func (p *MySqlParser) BooleanLiteral() (localctx IBooleanLiteralContext) {
	this := p
	_ = this

	localctx = NewBooleanLiteralContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 546, MySqlParserRULE_booleanLiteral)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5794)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserFALSE || _la == MySqlParserTRUE) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IHexadecimalLiteralContext is an interface to support dynamic dispatch.
type IHexadecimalLiteralContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsHexadecimalLiteralContext differentiates from other interfaces.
	IsHexadecimalLiteralContext()
}

type HexadecimalLiteralContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyHexadecimalLiteralContext() *HexadecimalLiteralContext {
	var p = new(HexadecimalLiteralContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_hexadecimalLiteral
	return p
}

func (*HexadecimalLiteralContext) IsHexadecimalLiteralContext() {}

func NewHexadecimalLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HexadecimalLiteralContext {
	var p = new(HexadecimalLiteralContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_hexadecimalLiteral

	return p
}

func (s *HexadecimalLiteralContext) GetParser() antlr.Parser { return s.parser }

func (s *HexadecimalLiteralContext) HEXADECIMAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserHEXADECIMAL_LITERAL, 0)
}

func (s *HexadecimalLiteralContext) STRING_CHARSET_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_CHARSET_NAME, 0)
}

func (s *HexadecimalLiteralContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *HexadecimalLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *HexadecimalLiteralContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterHexadecimalLiteral(s)
	}
}

func (s *HexadecimalLiteralContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitHexadecimalLiteral(s)
	}
}

func (p *MySqlParser) HexadecimalLiteral() (localctx IHexadecimalLiteralContext) {
	this := p
	_ = this

	localctx = NewHexadecimalLiteralContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 548, MySqlParserRULE_hexadecimalLiteral)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(5797)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserSTRING_CHARSET_NAME {
		{
			p.SetState(5796)
			p.Match(MySqlParserSTRING_CHARSET_NAME)
		}

	}
	{
		p.SetState(5799)
		p.Match(MySqlParserHEXADECIMAL_LITERAL)
	}

	return localctx
}

// INullNotnullContext is an interface to support dynamic dispatch.
type INullNotnullContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsNullNotnullContext differentiates from other interfaces.
	IsNullNotnullContext()
}

type NullNotnullContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyNullNotnullContext() *NullNotnullContext {
	var p = new(NullNotnullContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_nullNotnull
	return p
}

func (*NullNotnullContext) IsNullNotnullContext() {}

func NewNullNotnullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullNotnullContext {
	var p = new(NullNotnullContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_nullNotnull

	return p
}

func (s *NullNotnullContext) GetParser() antlr.Parser { return s.parser }

func (s *NullNotnullContext) NULL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_LITERAL, 0)
}

func (s *NullNotnullContext) NULL_SPEC_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_SPEC_LITERAL, 0)
}

func (s *NullNotnullContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *NullNotnullContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NullNotnullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *NullNotnullContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNullNotnull(s)
	}
}

func (s *NullNotnullContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNullNotnull(s)
	}
}

func (p *MySqlParser) NullNotnull() (localctx INullNotnullContext) {
	this := p
	_ = this

	localctx = NewNullNotnullContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 550, MySqlParserRULE_nullNotnull)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(5802)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserNOT {
		{
			p.SetState(5801)
			p.Match(MySqlParserNOT)
		}

	}
	{
		p.SetState(5804)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserNULL_LITERAL || _la == MySqlParserNULL_SPEC_LITERAL) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IConstantContext is an interface to support dynamic dispatch.
type IConstantContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetNullLiteral returns the nullLiteral token.
	GetNullLiteral() antlr.Token

	// SetNullLiteral sets the nullLiteral token.
	SetNullLiteral(antlr.Token)

	// IsConstantContext differentiates from other interfaces.
	IsConstantContext()
}

type ConstantContext struct {
	*antlr.BaseParserRuleContext
	parser      antlr.Parser
	nullLiteral antlr.Token
}

func NewEmptyConstantContext() *ConstantContext {
	var p = new(ConstantContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_constant
	return p
}

func (*ConstantContext) IsConstantContext() {}

func NewConstantContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConstantContext {
	var p = new(ConstantContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_constant

	return p
}

func (s *ConstantContext) GetParser() antlr.Parser { return s.parser }

func (s *ConstantContext) GetNullLiteral() antlr.Token { return s.nullLiteral }

func (s *ConstantContext) SetNullLiteral(v antlr.Token) { s.nullLiteral = v }

func (s *ConstantContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *ConstantContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *ConstantContext) MINUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, 0)
}

func (s *ConstantContext) HexadecimalLiteral() IHexadecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IHexadecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IHexadecimalLiteralContext)
}

func (s *ConstantContext) BooleanLiteral() IBooleanLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBooleanLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBooleanLiteralContext)
}

func (s *ConstantContext) REAL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAL_LITERAL, 0)
}

func (s *ConstantContext) BIT_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_STRING, 0)
}

func (s *ConstantContext) NULL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_LITERAL, 0)
}

func (s *ConstantContext) NULL_SPEC_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_SPEC_LITERAL, 0)
}

func (s *ConstantContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *ConstantContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConstantContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ConstantContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterConstant(s)
	}
}

func (s *ConstantContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitConstant(s)
	}
}

func (p *MySqlParser) Constant() (localctx IConstantContext) {
	this := p
	_ = this

	localctx = NewConstantContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 552, MySqlParserRULE_constant)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(5818)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 843, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5806)
			p.StringLiteral()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5807)
			p.DecimalLiteral()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5808)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(5809)
			p.DecimalLiteral()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5810)
			p.HexadecimalLiteral()
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5811)
			p.BooleanLiteral()
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5812)
			p.Match(MySqlParserREAL_LITERAL)
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5813)
			p.Match(MySqlParserBIT_STRING)
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		p.SetState(5815)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNOT {
			{
				p.SetState(5814)
				p.Match(MySqlParserNOT)
			}

		}
		{
			p.SetState(5817)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ConstantContext).nullLiteral = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNULL_LITERAL || _la == MySqlParserNULL_SPEC_LITERAL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ConstantContext).nullLiteral = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IDataTypeContext is an interface to support dynamic dispatch.
type IDataTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDataTypeContext differentiates from other interfaces.
	IsDataTypeContext()
}

type DataTypeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDataTypeContext() *DataTypeContext {
	var p = new(DataTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dataType
	return p
}

func (*DataTypeContext) IsDataTypeContext() {}

func NewDataTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DataTypeContext {
	var p = new(DataTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dataType

	return p
}

func (s *DataTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *DataTypeContext) CopyFrom(ctx *DataTypeContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *DataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DataTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SpatialDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewSpatialDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SpatialDataTypeContext {
	var p = new(SpatialDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *SpatialDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *SpatialDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *SpatialDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SpatialDataTypeContext) GEOMETRYCOLLECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYCOLLECTION, 0)
}

func (s *SpatialDataTypeContext) GEOMCOLLECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMCOLLECTION, 0)
}

func (s *SpatialDataTypeContext) LINESTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINESTRING, 0)
}

func (s *SpatialDataTypeContext) MULTILINESTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTILINESTRING, 0)
}

func (s *SpatialDataTypeContext) MULTIPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOINT, 0)
}

func (s *SpatialDataTypeContext) MULTIPOLYGON() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOLYGON, 0)
}

func (s *SpatialDataTypeContext) POINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOINT, 0)
}

func (s *SpatialDataTypeContext) POLYGON() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYGON, 0)
}

func (s *SpatialDataTypeContext) JSON() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON, 0)
}

func (s *SpatialDataTypeContext) GEOMETRY() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRY, 0)
}

func (s *SpatialDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSpatialDataType(s)
	}
}

func (s *SpatialDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSpatialDataType(s)
	}
}

type LongVarbinaryDataTypeContext struct {
	*DataTypeContext
}

func NewLongVarbinaryDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LongVarbinaryDataTypeContext {
	var p = new(LongVarbinaryDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *LongVarbinaryDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LongVarbinaryDataTypeContext) LONG() antlr.TerminalNode {
	return s.GetToken(MySqlParserLONG, 0)
}

func (s *LongVarbinaryDataTypeContext) VARBINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARBINARY, 0)
}

func (s *LongVarbinaryDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLongVarbinaryDataType(s)
	}
}

func (s *LongVarbinaryDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLongVarbinaryDataType(s)
	}
}

type CollectionDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewCollectionDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CollectionDataTypeContext {
	var p = new(CollectionDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *CollectionDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *CollectionDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *CollectionDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CollectionDataTypeContext) CollectionOptions() ICollectionOptionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectionOptionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollectionOptionsContext)
}

func (s *CollectionDataTypeContext) ENUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserENUM, 0)
}

func (s *CollectionDataTypeContext) SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET, 0)
}

func (s *CollectionDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *CollectionDataTypeContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *CollectionDataTypeContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *CollectionDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCollectionDataType(s)
	}
}

func (s *CollectionDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCollectionDataType(s)
	}
}

type NationalVaryingStringDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewNationalVaryingStringDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NationalVaryingStringDataTypeContext {
	var p = new(NationalVaryingStringDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *NationalVaryingStringDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *NationalVaryingStringDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *NationalVaryingStringDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NationalVaryingStringDataTypeContext) NATIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNATIONAL, 0)
}

func (s *NationalVaryingStringDataTypeContext) VARYING() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARYING, 0)
}

func (s *NationalVaryingStringDataTypeContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *NationalVaryingStringDataTypeContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *NationalVaryingStringDataTypeContext) LengthOneDimension() ILengthOneDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthOneDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthOneDimensionContext)
}

func (s *NationalVaryingStringDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *NationalVaryingStringDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNationalVaryingStringDataType(s)
	}
}

func (s *NationalVaryingStringDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNationalVaryingStringDataType(s)
	}
}

type DimensionDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewDimensionDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DimensionDataTypeContext {
	var p = new(DimensionDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *DimensionDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *DimensionDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *DimensionDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DimensionDataTypeContext) TINYINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserTINYINT, 0)
}

func (s *DimensionDataTypeContext) SMALLINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSMALLINT, 0)
}

func (s *DimensionDataTypeContext) MEDIUMINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEDIUMINT, 0)
}

func (s *DimensionDataTypeContext) INT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT, 0)
}

func (s *DimensionDataTypeContext) INTEGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTEGER, 0)
}

func (s *DimensionDataTypeContext) BIGINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIGINT, 0)
}

func (s *DimensionDataTypeContext) MIDDLEINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIDDLEINT, 0)
}

func (s *DimensionDataTypeContext) INT1() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT1, 0)
}

func (s *DimensionDataTypeContext) INT2() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT2, 0)
}

func (s *DimensionDataTypeContext) INT3() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT3, 0)
}

func (s *DimensionDataTypeContext) INT4() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT4, 0)
}

func (s *DimensionDataTypeContext) INT8() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT8, 0)
}

func (s *DimensionDataTypeContext) LengthOneDimension() ILengthOneDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthOneDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthOneDimensionContext)
}

func (s *DimensionDataTypeContext) AllSIGNED() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSIGNED)
}

func (s *DimensionDataTypeContext) SIGNED(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSIGNED, i)
}

func (s *DimensionDataTypeContext) AllUNSIGNED() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserUNSIGNED)
}

func (s *DimensionDataTypeContext) UNSIGNED(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserUNSIGNED, i)
}

func (s *DimensionDataTypeContext) AllZEROFILL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserZEROFILL)
}

func (s *DimensionDataTypeContext) ZEROFILL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserZEROFILL, i)
}

func (s *DimensionDataTypeContext) REAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserREAL, 0)
}

func (s *DimensionDataTypeContext) LengthTwoDimension() ILengthTwoDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthTwoDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthTwoDimensionContext)
}

func (s *DimensionDataTypeContext) DOUBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDOUBLE, 0)
}

func (s *DimensionDataTypeContext) PRECISION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRECISION, 0)
}

func (s *DimensionDataTypeContext) DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECIMAL, 0)
}

func (s *DimensionDataTypeContext) DEC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEC, 0)
}

func (s *DimensionDataTypeContext) FIXED() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIXED, 0)
}

func (s *DimensionDataTypeContext) NUMERIC() antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMERIC, 0)
}

func (s *DimensionDataTypeContext) FLOAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLOAT, 0)
}

func (s *DimensionDataTypeContext) FLOAT4() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLOAT4, 0)
}

func (s *DimensionDataTypeContext) FLOAT8() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLOAT8, 0)
}

func (s *DimensionDataTypeContext) LengthTwoOptionalDimension() ILengthTwoOptionalDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthTwoOptionalDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthTwoOptionalDimensionContext)
}

func (s *DimensionDataTypeContext) BIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT, 0)
}

func (s *DimensionDataTypeContext) TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME, 0)
}

func (s *DimensionDataTypeContext) TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMESTAMP, 0)
}

func (s *DimensionDataTypeContext) DATETIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATETIME, 0)
}

func (s *DimensionDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *DimensionDataTypeContext) VARBINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARBINARY, 0)
}

func (s *DimensionDataTypeContext) BLOB() antlr.TerminalNode {
	return s.GetToken(MySqlParserBLOB, 0)
}

func (s *DimensionDataTypeContext) YEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEAR, 0)
}

func (s *DimensionDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDimensionDataType(s)
	}
}

func (s *DimensionDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDimensionDataType(s)
	}
}

type StringDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewStringDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *StringDataTypeContext {
	var p = new(StringDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *StringDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *StringDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *StringDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *StringDataTypeContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *StringDataTypeContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *StringDataTypeContext) VARCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARCHAR, 0)
}

func (s *StringDataTypeContext) TINYTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserTINYTEXT, 0)
}

func (s *StringDataTypeContext) TEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEXT, 0)
}

func (s *StringDataTypeContext) MEDIUMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEDIUMTEXT, 0)
}

func (s *StringDataTypeContext) LONGTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLONGTEXT, 0)
}

func (s *StringDataTypeContext) NCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserNCHAR, 0)
}

func (s *StringDataTypeContext) NVARCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserNVARCHAR, 0)
}

func (s *StringDataTypeContext) LONG() antlr.TerminalNode {
	return s.GetToken(MySqlParserLONG, 0)
}

func (s *StringDataTypeContext) VARYING() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARYING, 0)
}

func (s *StringDataTypeContext) LengthOneDimension() ILengthOneDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthOneDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthOneDimensionContext)
}

func (s *StringDataTypeContext) AllBINARY() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserBINARY)
}

func (s *StringDataTypeContext) BINARY(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, i)
}

func (s *StringDataTypeContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *StringDataTypeContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *StringDataTypeContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *StringDataTypeContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *StringDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterStringDataType(s)
	}
}

func (s *StringDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitStringDataType(s)
	}
}

type LongVarcharDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewLongVarcharDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LongVarcharDataTypeContext {
	var p = new(LongVarcharDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *LongVarcharDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *LongVarcharDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *LongVarcharDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LongVarcharDataTypeContext) LONG() antlr.TerminalNode {
	return s.GetToken(MySqlParserLONG, 0)
}

func (s *LongVarcharDataTypeContext) VARCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARCHAR, 0)
}

func (s *LongVarcharDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *LongVarcharDataTypeContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *LongVarcharDataTypeContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *LongVarcharDataTypeContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *LongVarcharDataTypeContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *LongVarcharDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLongVarcharDataType(s)
	}
}

func (s *LongVarcharDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLongVarcharDataType(s)
	}
}

type NationalStringDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewNationalStringDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NationalStringDataTypeContext {
	var p = new(NationalStringDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *NationalStringDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *NationalStringDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *NationalStringDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NationalStringDataTypeContext) NATIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNATIONAL, 0)
}

func (s *NationalStringDataTypeContext) VARCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARCHAR, 0)
}

func (s *NationalStringDataTypeContext) CHARACTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER, 0)
}

func (s *NationalStringDataTypeContext) LengthOneDimension() ILengthOneDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthOneDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthOneDimensionContext)
}

func (s *NationalStringDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *NationalStringDataTypeContext) NCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserNCHAR, 0)
}

func (s *NationalStringDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNationalStringDataType(s)
	}
}

func (s *NationalStringDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNationalStringDataType(s)
	}
}

type SimpleDataTypeContext struct {
	*DataTypeContext
	typeName antlr.Token
}

func NewSimpleDataTypeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleDataTypeContext {
	var p = new(SimpleDataTypeContext)

	p.DataTypeContext = NewEmptyDataTypeContext()
	p.parser = parser
	p.CopyFrom(ctx.(*DataTypeContext))

	return p
}

func (s *SimpleDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *SimpleDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *SimpleDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleDataTypeContext) DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE, 0)
}

func (s *SimpleDataTypeContext) TINYBLOB() antlr.TerminalNode {
	return s.GetToken(MySqlParserTINYBLOB, 0)
}

func (s *SimpleDataTypeContext) MEDIUMBLOB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEDIUMBLOB, 0)
}

func (s *SimpleDataTypeContext) LONGBLOB() antlr.TerminalNode {
	return s.GetToken(MySqlParserLONGBLOB, 0)
}

func (s *SimpleDataTypeContext) BOOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserBOOL, 0)
}

func (s *SimpleDataTypeContext) BOOLEAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBOOLEAN, 0)
}

func (s *SimpleDataTypeContext) SERIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERIAL, 0)
}

func (s *SimpleDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleDataType(s)
	}
}

func (s *SimpleDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleDataType(s)
	}
}

func (p *MySqlParser) DataType() (localctx IDataTypeContext) {
	this := p
	_ = this

	localctx = NewDataTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 554, MySqlParserRULE_dataType)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.SetState(5942)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 871, p.GetParserRuleContext()) {
	case 1:
		localctx = NewStringDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(5820)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*StringDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCHARACTER || (((_la-211)&-(0x1f+1)) == 0 && ((1<<uint((_la-211)))&((1<<(MySqlParserCHAR-211))|(1<<(MySqlParserVARCHAR-211))|(1<<(MySqlParserNVARCHAR-211))|(1<<(MySqlParserLONG-211))|(1<<(MySqlParserTINYTEXT-211))|(1<<(MySqlParserTEXT-211))|(1<<(MySqlParserMEDIUMTEXT-211))|(1<<(MySqlParserLONGTEXT-211)))) != 0) || _la == MySqlParserNCHAR) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*StringDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5822)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVARYING {
			{
				p.SetState(5821)
				p.Match(MySqlParserVARYING)
			}

		}
		p.SetState(5825)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 845, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5824)
				p.LengthOneDimension()
			}

		}
		p.SetState(5828)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 846, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5827)
				p.Match(MySqlParserBINARY)
			}

		}
		p.SetState(5833)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 847, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5830)
				p.CharSet()
			}
			{
				p.SetState(5831)
				p.CharsetName()
			}

		}
		p.SetState(5838)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 848, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5835)
				p.Match(MySqlParserCOLLATE)
			}
			{
				p.SetState(5836)
				p.CollationName()
			}

		} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 848, p.GetParserRuleContext()) == 2 {
			{
				p.SetState(5837)
				p.Match(MySqlParserBINARY)
			}

		}

	case 2:
		localctx = NewNationalStringDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(5840)
			p.Match(MySqlParserNATIONAL)
		}
		{
			p.SetState(5841)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*NationalStringDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCHARACTER || _la == MySqlParserVARCHAR) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*NationalStringDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5843)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 849, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5842)
				p.LengthOneDimension()
			}

		}
		p.SetState(5846)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 850, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5845)
				p.Match(MySqlParserBINARY)
			}

		}

	case 3:
		localctx = NewNationalStringDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(5848)
			p.Match(MySqlParserNCHAR)
		}
		{
			p.SetState(5849)

			var _m = p.Match(MySqlParserVARCHAR)

			localctx.(*NationalStringDataTypeContext).typeName = _m
		}
		p.SetState(5851)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 851, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5850)
				p.LengthOneDimension()
			}

		}
		p.SetState(5854)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 852, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5853)
				p.Match(MySqlParserBINARY)
			}

		}

	case 4:
		localctx = NewNationalVaryingStringDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(5856)
			p.Match(MySqlParserNATIONAL)
		}
		{
			p.SetState(5857)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*NationalVaryingStringDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCHARACTER || _la == MySqlParserCHAR) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*NationalVaryingStringDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5858)
			p.Match(MySqlParserVARYING)
		}
		p.SetState(5860)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 853, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5859)
				p.LengthOneDimension()
			}

		}
		p.SetState(5863)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 854, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5862)
				p.Match(MySqlParserBINARY)
			}

		}

	case 5:
		localctx = NewDimensionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(5865)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DimensionDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(((_la-185)&-(0x1f+1)) == 0 && ((1<<uint((_la-185)))&((1<<(MySqlParserTINYINT-185))|(1<<(MySqlParserSMALLINT-185))|(1<<(MySqlParserMEDIUMINT-185))|(1<<(MySqlParserMIDDLEINT-185))|(1<<(MySqlParserINT-185))|(1<<(MySqlParserINT1-185))|(1<<(MySqlParserINT2-185))|(1<<(MySqlParserINT3-185))|(1<<(MySqlParserINT4-185))|(1<<(MySqlParserINT8-185))|(1<<(MySqlParserINTEGER-185))|(1<<(MySqlParserBIGINT-185)))) != 0) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DimensionDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5867)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 855, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5866)
				p.LengthOneDimension()
			}

		}
		p.SetState(5872)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 856, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(5869)
					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserUNSIGNED || _la == MySqlParserZEROFILL || _la == MySqlParserSIGNED) {
						p.GetErrorHandler().RecoverInline(p)
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			p.SetState(5874)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 856, p.GetParserRuleContext())
		}

	case 6:
		localctx = NewDimensionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(5875)

			var _m = p.Match(MySqlParserREAL)

			localctx.(*DimensionDataTypeContext).typeName = _m
		}
		p.SetState(5877)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 857, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5876)
				p.LengthTwoDimension()
			}

		}
		p.SetState(5882)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 858, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(5879)
					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserUNSIGNED || _la == MySqlParserZEROFILL || _la == MySqlParserSIGNED) {
						p.GetErrorHandler().RecoverInline(p)
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			p.SetState(5884)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 858, p.GetParserRuleContext())
		}

	case 7:
		localctx = NewDimensionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(5885)

			var _m = p.Match(MySqlParserDOUBLE)

			localctx.(*DimensionDataTypeContext).typeName = _m
		}
		p.SetState(5887)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserPRECISION {
			{
				p.SetState(5886)
				p.Match(MySqlParserPRECISION)
			}

		}
		p.SetState(5890)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 860, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5889)
				p.LengthTwoDimension()
			}

		}
		p.SetState(5895)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 861, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(5892)
					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserUNSIGNED || _la == MySqlParserZEROFILL || _la == MySqlParserSIGNED) {
						p.GetErrorHandler().RecoverInline(p)
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			p.SetState(5897)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 861, p.GetParserRuleContext())
		}

	case 8:
		localctx = NewDimensionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(5898)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DimensionDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !((((_la-200)&-(0x1f+1)) == 0 && ((1<<uint((_la-200)))&((1<<(MySqlParserFLOAT-200))|(1<<(MySqlParserFLOAT4-200))|(1<<(MySqlParserFLOAT8-200))|(1<<(MySqlParserDECIMAL-200))|(1<<(MySqlParserDEC-200))|(1<<(MySqlParserNUMERIC-200)))) != 0) || _la == MySqlParserFIXED) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DimensionDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5900)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 862, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5899)
				p.LengthTwoOptionalDimension()
			}

		}
		p.SetState(5905)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 863, p.GetParserRuleContext())

		for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
			if _alt == 1 {
				{
					p.SetState(5902)
					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserUNSIGNED || _la == MySqlParserZEROFILL || _la == MySqlParserSIGNED) {
						p.GetErrorHandler().RecoverInline(p)
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}

			}
			p.SetState(5907)
			p.GetErrorHandler().Sync(p)
			_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 863, p.GetParserRuleContext())
		}

	case 9:
		localctx = NewSimpleDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(5908)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*SimpleDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !((((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTINYBLOB-206))|(1<<(MySqlParserMEDIUMBLOB-206))|(1<<(MySqlParserLONGBLOB-206))|(1<<(MySqlParserSERIAL-206)))) != 0) || _la == MySqlParserBOOL || _la == MySqlParserBOOLEAN) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*SimpleDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 10:
		localctx = NewDimensionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(5909)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*DimensionDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !((((_la-207)&-(0x1f+1)) == 0 && ((1<<uint((_la-207)))&((1<<(MySqlParserTIME-207))|(1<<(MySqlParserTIMESTAMP-207))|(1<<(MySqlParserDATETIME-207))|(1<<(MySqlParserYEAR-207))|(1<<(MySqlParserBINARY-207))|(1<<(MySqlParserVARBINARY-207))|(1<<(MySqlParserBLOB-207)))) != 0) || _la == MySqlParserBIT) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*DimensionDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5911)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 864, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5910)
				p.LengthOneDimension()
			}

		}

	case 11:
		localctx = NewCollectionDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(5913)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*CollectionDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSET || _la == MySqlParserENUM) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*CollectionDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(5914)
			p.CollectionOptions()
		}
		p.SetState(5916)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 865, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5915)
				p.Match(MySqlParserBINARY)
			}

		}
		p.SetState(5921)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 866, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5918)
				p.CharSet()
			}
			{
				p.SetState(5919)
				p.CharsetName()
			}

		}

	case 12:
		localctx = NewSpatialDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(5923)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*SpatialDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserJSON || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserGEOMCOLLECTION-758))|(1<<(MySqlParserGEOMETRY-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758)))) != 0)) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*SpatialDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 13:
		localctx = NewLongVarcharDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(5924)

			var _m = p.Match(MySqlParserLONG)

			localctx.(*LongVarcharDataTypeContext).typeName = _m
		}
		p.SetState(5926)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserVARCHAR {
			{
				p.SetState(5925)
				p.Match(MySqlParserVARCHAR)
			}

		}
		p.SetState(5929)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 868, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5928)
				p.Match(MySqlParserBINARY)
			}

		}
		p.SetState(5934)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 869, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5931)
				p.CharSet()
			}
			{
				p.SetState(5932)
				p.CharsetName()
			}

		}
		p.SetState(5938)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 870, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(5936)
				p.Match(MySqlParserCOLLATE)
			}
			{
				p.SetState(5937)
				p.CollationName()
			}

		}

	case 14:
		localctx = NewLongVarbinaryDataTypeContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(5940)
			p.Match(MySqlParserLONG)
		}
		{
			p.SetState(5941)
			p.Match(MySqlParserVARBINARY)
		}

	}

	return localctx
}

// ICollectionOptionsContext is an interface to support dynamic dispatch.
type ICollectionOptionsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCollectionOptionsContext differentiates from other interfaces.
	IsCollectionOptionsContext()
}

type CollectionOptionsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCollectionOptionsContext() *CollectionOptionsContext {
	var p = new(CollectionOptionsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_collectionOptions
	return p
}

func (*CollectionOptionsContext) IsCollectionOptionsContext() {}

func NewCollectionOptionsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CollectionOptionsContext {
	var p = new(CollectionOptionsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_collectionOptions

	return p
}

func (s *CollectionOptionsContext) GetParser() antlr.Parser { return s.parser }

func (s *CollectionOptionsContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CollectionOptionsContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *CollectionOptionsContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *CollectionOptionsContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CollectionOptionsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *CollectionOptionsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *CollectionOptionsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CollectionOptionsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CollectionOptionsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCollectionOptions(s)
	}
}

func (s *CollectionOptionsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCollectionOptions(s)
	}
}

func (p *MySqlParser) CollectionOptions() (localctx ICollectionOptionsContext) {
	this := p
	_ = this

	localctx = NewCollectionOptionsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 556, MySqlParserRULE_collectionOptions)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5944)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(5945)
		p.Match(MySqlParserSTRING_LITERAL)
	}
	p.SetState(5950)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(5946)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5947)
			p.Match(MySqlParserSTRING_LITERAL)
		}

		p.SetState(5952)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(5953)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IConvertedDataTypeContext is an interface to support dynamic dispatch.
type IConvertedDataTypeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetTypeName returns the typeName token.
	GetTypeName() antlr.Token

	// SetTypeName sets the typeName token.
	SetTypeName(antlr.Token)

	// IsConvertedDataTypeContext differentiates from other interfaces.
	IsConvertedDataTypeContext()
}

type ConvertedDataTypeContext struct {
	*antlr.BaseParserRuleContext
	parser   antlr.Parser
	typeName antlr.Token
}

func NewEmptyConvertedDataTypeContext() *ConvertedDataTypeContext {
	var p = new(ConvertedDataTypeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_convertedDataType
	return p
}

func (*ConvertedDataTypeContext) IsConvertedDataTypeContext() {}

func NewConvertedDataTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConvertedDataTypeContext {
	var p = new(ConvertedDataTypeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_convertedDataType

	return p
}

func (s *ConvertedDataTypeContext) GetParser() antlr.Parser { return s.parser }

func (s *ConvertedDataTypeContext) GetTypeName() antlr.Token { return s.typeName }

func (s *ConvertedDataTypeContext) SetTypeName(v antlr.Token) { s.typeName = v }

func (s *ConvertedDataTypeContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *ConvertedDataTypeContext) DECIMAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECIMAL, 0)
}

func (s *ConvertedDataTypeContext) SIGNED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIGNED, 0)
}

func (s *ConvertedDataTypeContext) UNSIGNED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNSIGNED, 0)
}

func (s *ConvertedDataTypeContext) ARRAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserARRAY, 0)
}

func (s *ConvertedDataTypeContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *ConvertedDataTypeContext) NCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserNCHAR, 0)
}

func (s *ConvertedDataTypeContext) DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE, 0)
}

func (s *ConvertedDataTypeContext) DATETIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATETIME, 0)
}

func (s *ConvertedDataTypeContext) TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME, 0)
}

func (s *ConvertedDataTypeContext) JSON() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON, 0)
}

func (s *ConvertedDataTypeContext) INT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINT, 0)
}

func (s *ConvertedDataTypeContext) INTEGER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTEGER, 0)
}

func (s *ConvertedDataTypeContext) LengthOneDimension() ILengthOneDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthOneDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthOneDimensionContext)
}

func (s *ConvertedDataTypeContext) CharSet() ICharSetContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharSetContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharSetContext)
}

func (s *ConvertedDataTypeContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *ConvertedDataTypeContext) LengthTwoOptionalDimension() ILengthTwoOptionalDimensionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILengthTwoOptionalDimensionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILengthTwoOptionalDimensionContext)
}

func (s *ConvertedDataTypeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConvertedDataTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ConvertedDataTypeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterConvertedDataType(s)
	}
}

func (s *ConvertedDataTypeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitConvertedDataType(s)
	}
}

func (p *MySqlParser) ConvertedDataType() (localctx IConvertedDataTypeContext) {
	this := p
	_ = this

	localctx = NewConvertedDataTypeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 558, MySqlParserRULE_convertedDataType)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(5977)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserBINARY, MySqlParserNCHAR:
		{
			p.SetState(5955)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ConvertedDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserBINARY || _la == MySqlParserNCHAR) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ConvertedDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5957)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(5956)
				p.LengthOneDimension()
			}

		}

	case MySqlParserCHAR:
		{
			p.SetState(5959)

			var _m = p.Match(MySqlParserCHAR)

			localctx.(*ConvertedDataTypeContext).typeName = _m
		}
		p.SetState(5961)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(5960)
				p.LengthOneDimension()
			}

		}
		p.SetState(5966)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCHARACTER || _la == MySqlParserCHAR || _la == MySqlParserCHARSET {
			{
				p.SetState(5963)
				p.CharSet()
			}
			{
				p.SetState(5964)
				p.CharsetName()
			}

		}

	case MySqlParserINT, MySqlParserINTEGER, MySqlParserDATE, MySqlParserTIME, MySqlParserDATETIME, MySqlParserJSON:
		{
			p.SetState(5968)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*ConvertedDataTypeContext).typeName = _lt

			_la = p.GetTokenStream().LA(1)

			if !((((_la-189)&-(0x1f+1)) == 0 && ((1<<uint((_la-189)))&((1<<(MySqlParserINT-189))|(1<<(MySqlParserINTEGER-189))|(1<<(MySqlParserDATE-189))|(1<<(MySqlParserTIME-189))|(1<<(MySqlParserDATETIME-189)))) != 0) || _la == MySqlParserJSON) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*ConvertedDataTypeContext).typeName = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case MySqlParserDECIMAL:
		{
			p.SetState(5969)

			var _m = p.Match(MySqlParserDECIMAL)

			localctx.(*ConvertedDataTypeContext).typeName = _m
		}
		p.SetState(5971)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLR_BRACKET {
			{
				p.SetState(5970)
				p.LengthTwoOptionalDimension()
			}

		}

	case MySqlParserUNSIGNED, MySqlParserSIGNED:
		{
			p.SetState(5973)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserUNSIGNED || _la == MySqlParserSIGNED) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(5975)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserINTEGER {
			{
				p.SetState(5974)
				p.Match(MySqlParserINTEGER)
			}

		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}
	p.SetState(5980)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserARRAY {
		{
			p.SetState(5979)
			p.Match(MySqlParserARRAY)
		}

	}

	return localctx
}

// ILengthOneDimensionContext is an interface to support dynamic dispatch.
type ILengthOneDimensionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLengthOneDimensionContext differentiates from other interfaces.
	IsLengthOneDimensionContext()
}

type LengthOneDimensionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLengthOneDimensionContext() *LengthOneDimensionContext {
	var p = new(LengthOneDimensionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lengthOneDimension
	return p
}

func (*LengthOneDimensionContext) IsLengthOneDimensionContext() {}

func NewLengthOneDimensionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LengthOneDimensionContext {
	var p = new(LengthOneDimensionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lengthOneDimension

	return p
}

func (s *LengthOneDimensionContext) GetParser() antlr.Parser { return s.parser }

func (s *LengthOneDimensionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *LengthOneDimensionContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LengthOneDimensionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *LengthOneDimensionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LengthOneDimensionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LengthOneDimensionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLengthOneDimension(s)
	}
}

func (s *LengthOneDimensionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLengthOneDimension(s)
	}
}

func (p *MySqlParser) LengthOneDimension() (localctx ILengthOneDimensionContext) {
	this := p
	_ = this

	localctx = NewLengthOneDimensionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 560, MySqlParserRULE_lengthOneDimension)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5982)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(5983)
		p.DecimalLiteral()
	}
	{
		p.SetState(5984)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// ILengthTwoDimensionContext is an interface to support dynamic dispatch.
type ILengthTwoDimensionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLengthTwoDimensionContext differentiates from other interfaces.
	IsLengthTwoDimensionContext()
}

type LengthTwoDimensionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLengthTwoDimensionContext() *LengthTwoDimensionContext {
	var p = new(LengthTwoDimensionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lengthTwoDimension
	return p
}

func (*LengthTwoDimensionContext) IsLengthTwoDimensionContext() {}

func NewLengthTwoDimensionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LengthTwoDimensionContext {
	var p = new(LengthTwoDimensionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lengthTwoDimension

	return p
}

func (s *LengthTwoDimensionContext) GetParser() antlr.Parser { return s.parser }

func (s *LengthTwoDimensionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *LengthTwoDimensionContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *LengthTwoDimensionContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LengthTwoDimensionContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *LengthTwoDimensionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *LengthTwoDimensionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LengthTwoDimensionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LengthTwoDimensionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLengthTwoDimension(s)
	}
}

func (s *LengthTwoDimensionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLengthTwoDimension(s)
	}
}

func (p *MySqlParser) LengthTwoDimension() (localctx ILengthTwoDimensionContext) {
	this := p
	_ = this

	localctx = NewLengthTwoDimensionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 562, MySqlParserRULE_lengthTwoDimension)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5986)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(5987)
		p.DecimalLiteral()
	}
	{
		p.SetState(5988)
		p.Match(MySqlParserCOMMA)
	}
	{
		p.SetState(5989)
		p.DecimalLiteral()
	}
	{
		p.SetState(5990)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// ILengthTwoOptionalDimensionContext is an interface to support dynamic dispatch.
type ILengthTwoOptionalDimensionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLengthTwoOptionalDimensionContext differentiates from other interfaces.
	IsLengthTwoOptionalDimensionContext()
}

type LengthTwoOptionalDimensionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLengthTwoOptionalDimensionContext() *LengthTwoOptionalDimensionContext {
	var p = new(LengthTwoOptionalDimensionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_lengthTwoOptionalDimension
	return p
}

func (*LengthTwoOptionalDimensionContext) IsLengthTwoOptionalDimensionContext() {}

func NewLengthTwoOptionalDimensionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LengthTwoOptionalDimensionContext {
	var p = new(LengthTwoOptionalDimensionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_lengthTwoOptionalDimension

	return p
}

func (s *LengthTwoOptionalDimensionContext) GetParser() antlr.Parser { return s.parser }

func (s *LengthTwoOptionalDimensionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *LengthTwoOptionalDimensionContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *LengthTwoOptionalDimensionContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LengthTwoOptionalDimensionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *LengthTwoOptionalDimensionContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *LengthTwoOptionalDimensionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LengthTwoOptionalDimensionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LengthTwoOptionalDimensionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLengthTwoOptionalDimension(s)
	}
}

func (s *LengthTwoOptionalDimensionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLengthTwoOptionalDimension(s)
	}
}

func (p *MySqlParser) LengthTwoOptionalDimension() (localctx ILengthTwoOptionalDimensionContext) {
	this := p
	_ = this

	localctx = NewLengthTwoOptionalDimensionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 564, MySqlParserRULE_lengthTwoOptionalDimension)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(5992)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(5993)
		p.DecimalLiteral()
	}
	p.SetState(5996)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserCOMMA {
		{
			p.SetState(5994)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(5995)
			p.DecimalLiteral()
		}

	}
	{
		p.SetState(5998)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IUidListContext is an interface to support dynamic dispatch.
type IUidListContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUidListContext differentiates from other interfaces.
	IsUidListContext()
}

type UidListContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUidListContext() *UidListContext {
	var p = new(UidListContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_uidList
	return p
}

func (*UidListContext) IsUidListContext() {}

func NewUidListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UidListContext {
	var p = new(UidListContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_uidList

	return p
}

func (s *UidListContext) GetParser() antlr.Parser { return s.parser }

func (s *UidListContext) AllUid() []IUidContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IUidContext)(nil)).Elem())
	var tst = make([]IUidContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IUidContext)
		}
	}

	return tst
}

func (s *UidListContext) Uid(i int) IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *UidListContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *UidListContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *UidListContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UidListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UidListContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUidList(s)
	}
}

func (s *UidListContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUidList(s)
	}
}

func (p *MySqlParser) UidList() (localctx IUidListContext) {
	this := p
	_ = this

	localctx = NewUidListContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 566, MySqlParserRULE_uidList)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6000)
		p.Uid()
	}
	p.SetState(6005)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 881, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(6001)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6002)
				p.Uid()
			}

		}
		p.SetState(6007)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 881, p.GetParserRuleContext())
	}

	return localctx
}

// ITablesContext is an interface to support dynamic dispatch.
type ITablesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTablesContext differentiates from other interfaces.
	IsTablesContext()
}

type TablesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTablesContext() *TablesContext {
	var p = new(TablesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_tables
	return p
}

func (*TablesContext) IsTablesContext() {}

func NewTablesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TablesContext {
	var p = new(TablesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_tables

	return p
}

func (s *TablesContext) GetParser() antlr.Parser { return s.parser }

func (s *TablesContext) AllTableName() []ITableNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ITableNameContext)(nil)).Elem())
	var tst = make([]ITableNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ITableNameContext)
		}
	}

	return tst
}

func (s *TablesContext) TableName(i int) ITableNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ITableNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ITableNameContext)
}

func (s *TablesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *TablesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *TablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TablesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTables(s)
	}
}

func (s *TablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTables(s)
	}
}

func (p *MySqlParser) Tables() (localctx ITablesContext) {
	this := p
	_ = this

	localctx = NewTablesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 568, MySqlParserRULE_tables)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6008)
		p.TableName()
	}
	p.SetState(6013)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 882, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			{
				p.SetState(6009)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6010)
				p.TableName()
			}

		}
		p.SetState(6015)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 882, p.GetParserRuleContext())
	}

	return localctx
}

// IIndexColumnNamesContext is an interface to support dynamic dispatch.
type IIndexColumnNamesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIndexColumnNamesContext differentiates from other interfaces.
	IsIndexColumnNamesContext()
}

type IndexColumnNamesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIndexColumnNamesContext() *IndexColumnNamesContext {
	var p = new(IndexColumnNamesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_indexColumnNames
	return p
}

func (*IndexColumnNamesContext) IsIndexColumnNamesContext() {}

func NewIndexColumnNamesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndexColumnNamesContext {
	var p = new(IndexColumnNamesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_indexColumnNames

	return p
}

func (s *IndexColumnNamesContext) GetParser() antlr.Parser { return s.parser }

func (s *IndexColumnNamesContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *IndexColumnNamesContext) AllIndexColumnName() []IIndexColumnNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IIndexColumnNameContext)(nil)).Elem())
	var tst = make([]IIndexColumnNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IIndexColumnNameContext)
		}
	}

	return tst
}

func (s *IndexColumnNamesContext) IndexColumnName(i int) IIndexColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIndexColumnNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IIndexColumnNameContext)
}

func (s *IndexColumnNamesContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *IndexColumnNamesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *IndexColumnNamesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *IndexColumnNamesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IndexColumnNamesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IndexColumnNamesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIndexColumnNames(s)
	}
}

func (s *IndexColumnNamesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIndexColumnNames(s)
	}
}

func (p *MySqlParser) IndexColumnNames() (localctx IIndexColumnNamesContext) {
	this := p
	_ = this

	localctx = NewIndexColumnNamesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 570, MySqlParserRULE_indexColumnNames)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6016)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(6017)
		p.IndexColumnName()
	}
	p.SetState(6022)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6018)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6019)
			p.IndexColumnName()
		}

		p.SetState(6024)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}
	{
		p.SetState(6025)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IExpressionsContext is an interface to support dynamic dispatch.
type IExpressionsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExpressionsContext differentiates from other interfaces.
	IsExpressionsContext()
}

type ExpressionsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExpressionsContext() *ExpressionsContext {
	var p = new(ExpressionsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_expressions
	return p
}

func (*ExpressionsContext) IsExpressionsContext() {}

func NewExpressionsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionsContext {
	var p = new(ExpressionsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_expressions

	return p
}

func (s *ExpressionsContext) GetParser() antlr.Parser { return s.parser }

func (s *ExpressionsContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *ExpressionsContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ExpressionsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ExpressionsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ExpressionsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ExpressionsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExpressions(s)
	}
}

func (s *ExpressionsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExpressions(s)
	}
}

func (p *MySqlParser) Expressions() (localctx IExpressionsContext) {
	this := p
	_ = this

	localctx = NewExpressionsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 572, MySqlParserRULE_expressions)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6027)
		p.expression(0)
	}
	p.SetState(6032)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6028)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6029)
			p.expression(0)
		}

		p.SetState(6034)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IExpressionsWithDefaultsContext is an interface to support dynamic dispatch.
type IExpressionsWithDefaultsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExpressionsWithDefaultsContext differentiates from other interfaces.
	IsExpressionsWithDefaultsContext()
}

type ExpressionsWithDefaultsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExpressionsWithDefaultsContext() *ExpressionsWithDefaultsContext {
	var p = new(ExpressionsWithDefaultsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_expressionsWithDefaults
	return p
}

func (*ExpressionsWithDefaultsContext) IsExpressionsWithDefaultsContext() {}

func NewExpressionsWithDefaultsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionsWithDefaultsContext {
	var p = new(ExpressionsWithDefaultsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_expressionsWithDefaults

	return p
}

func (s *ExpressionsWithDefaultsContext) GetParser() antlr.Parser { return s.parser }

func (s *ExpressionsWithDefaultsContext) AllExpressionOrDefault() []IExpressionOrDefaultContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionOrDefaultContext)(nil)).Elem())
	var tst = make([]IExpressionOrDefaultContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionOrDefaultContext)
		}
	}

	return tst
}

func (s *ExpressionsWithDefaultsContext) ExpressionOrDefault(i int) IExpressionOrDefaultContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionOrDefaultContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionOrDefaultContext)
}

func (s *ExpressionsWithDefaultsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ExpressionsWithDefaultsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ExpressionsWithDefaultsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionsWithDefaultsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ExpressionsWithDefaultsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExpressionsWithDefaults(s)
	}
}

func (s *ExpressionsWithDefaultsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExpressionsWithDefaults(s)
	}
}

func (p *MySqlParser) ExpressionsWithDefaults() (localctx IExpressionsWithDefaultsContext) {
	this := p
	_ = this

	localctx = NewExpressionsWithDefaultsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 574, MySqlParserRULE_expressionsWithDefaults)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6035)
		p.ExpressionOrDefault()
	}
	p.SetState(6040)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6036)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6037)
			p.ExpressionOrDefault()
		}

		p.SetState(6042)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IConstantsContext is an interface to support dynamic dispatch.
type IConstantsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsConstantsContext differentiates from other interfaces.
	IsConstantsContext()
}

type ConstantsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyConstantsContext() *ConstantsContext {
	var p = new(ConstantsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_constants
	return p
}

func (*ConstantsContext) IsConstantsContext() {}

func NewConstantsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConstantsContext {
	var p = new(ConstantsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_constants

	return p
}

func (s *ConstantsContext) GetParser() antlr.Parser { return s.parser }

func (s *ConstantsContext) AllConstant() []IConstantContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IConstantContext)(nil)).Elem())
	var tst = make([]IConstantContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IConstantContext)
		}
	}

	return tst
}

func (s *ConstantsContext) Constant(i int) IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *ConstantsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *ConstantsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *ConstantsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConstantsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ConstantsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterConstants(s)
	}
}

func (s *ConstantsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitConstants(s)
	}
}

func (p *MySqlParser) Constants() (localctx IConstantsContext) {
	this := p
	_ = this

	localctx = NewConstantsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 576, MySqlParserRULE_constants)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6043)
		p.Constant()
	}
	p.SetState(6048)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6044)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6045)
			p.Constant()
		}

		p.SetState(6050)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// ISimpleStringsContext is an interface to support dynamic dispatch.
type ISimpleStringsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSimpleStringsContext differentiates from other interfaces.
	IsSimpleStringsContext()
}

type SimpleStringsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySimpleStringsContext() *SimpleStringsContext {
	var p = new(SimpleStringsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_simpleStrings
	return p
}

func (*SimpleStringsContext) IsSimpleStringsContext() {}

func NewSimpleStringsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleStringsContext {
	var p = new(SimpleStringsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_simpleStrings

	return p
}

func (s *SimpleStringsContext) GetParser() antlr.Parser { return s.parser }

func (s *SimpleStringsContext) AllSTRING_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserSTRING_LITERAL)
}

func (s *SimpleStringsContext) STRING_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, i)
}

func (s *SimpleStringsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *SimpleStringsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *SimpleStringsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleStringsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *SimpleStringsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleStrings(s)
	}
}

func (s *SimpleStringsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleStrings(s)
	}
}

func (p *MySqlParser) SimpleStrings() (localctx ISimpleStringsContext) {
	this := p
	_ = this

	localctx = NewSimpleStringsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 578, MySqlParserRULE_simpleStrings)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6051)
		p.Match(MySqlParserSTRING_LITERAL)
	}
	p.SetState(6056)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6052)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6053)
			p.Match(MySqlParserSTRING_LITERAL)
		}

		p.SetState(6058)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IUserVariablesContext is an interface to support dynamic dispatch.
type IUserVariablesContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUserVariablesContext differentiates from other interfaces.
	IsUserVariablesContext()
}

type UserVariablesContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUserVariablesContext() *UserVariablesContext {
	var p = new(UserVariablesContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_userVariables
	return p
}

func (*UserVariablesContext) IsUserVariablesContext() {}

func NewUserVariablesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UserVariablesContext {
	var p = new(UserVariablesContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_userVariables

	return p
}

func (s *UserVariablesContext) GetParser() antlr.Parser { return s.parser }

func (s *UserVariablesContext) AllLOCAL_ID() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLOCAL_ID)
}

func (s *UserVariablesContext) LOCAL_ID(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, i)
}

func (s *UserVariablesContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *UserVariablesContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *UserVariablesContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UserVariablesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UserVariablesContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUserVariables(s)
	}
}

func (s *UserVariablesContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUserVariables(s)
	}
}

func (p *MySqlParser) UserVariables() (localctx IUserVariablesContext) {
	this := p
	_ = this

	localctx = NewUserVariablesContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 580, MySqlParserRULE_userVariables)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6059)
		p.Match(MySqlParserLOCAL_ID)
	}
	p.SetState(6064)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6060)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6061)
			p.Match(MySqlParserLOCAL_ID)
		}

		p.SetState(6066)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IDefaultValueContext is an interface to support dynamic dispatch.
type IDefaultValueContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDefaultValueContext differentiates from other interfaces.
	IsDefaultValueContext()
}

type DefaultValueContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDefaultValueContext() *DefaultValueContext {
	var p = new(DefaultValueContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_defaultValue
	return p
}

func (*DefaultValueContext) IsDefaultValueContext() {}

func NewDefaultValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DefaultValueContext {
	var p = new(DefaultValueContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_defaultValue

	return p
}

func (s *DefaultValueContext) GetParser() antlr.Parser { return s.parser }

func (s *DefaultValueContext) NULL_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_LITERAL, 0)
}

func (s *DefaultValueContext) Constant() IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *DefaultValueContext) AllCurrentTimestamp() []ICurrentTimestampContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICurrentTimestampContext)(nil)).Elem())
	var tst = make([]ICurrentTimestampContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICurrentTimestampContext)
		}
	}

	return tst
}

func (s *DefaultValueContext) CurrentTimestamp(i int) ICurrentTimestampContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICurrentTimestampContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICurrentTimestampContext)
}

func (s *DefaultValueContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *DefaultValueContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *DefaultValueContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *DefaultValueContext) ON() antlr.TerminalNode {
	return s.GetToken(MySqlParserON, 0)
}

func (s *DefaultValueContext) UPDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATE, 0)
}

func (s *DefaultValueContext) UnaryOperator() IUnaryOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUnaryOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUnaryOperatorContext)
}

func (s *DefaultValueContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DefaultValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DefaultValueContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDefaultValue(s)
	}
}

func (s *DefaultValueContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDefaultValue(s)
	}
}

func (p *MySqlParser) DefaultValue() (localctx IDefaultValueContext) {
	this := p
	_ = this

	localctx = NewDefaultValueContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 582, MySqlParserRULE_defaultValue)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6077)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 890, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(6067)
			p.Match(MySqlParserNULL_LITERAL)
		}

	case 2:
		p.SetState(6069)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 889, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6068)
				p.UnaryOperator()
			}

		}
		{
			p.SetState(6071)
			p.Constant()
		}

	case 3:
		{
			p.SetState(6072)
			p.CurrentTimestamp()
		}

	case 4:
		{
			p.SetState(6073)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6074)
			p.expression(0)
		}
		{
			p.SetState(6075)
			p.Match(MySqlParserRR_BRACKET)
		}

	}
	p.SetState(6082)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 891, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(6079)
			p.Match(MySqlParserON)
		}
		{
			p.SetState(6080)
			p.Match(MySqlParserUPDATE)
		}
		{
			p.SetState(6081)
			p.CurrentTimestamp()
		}

	}

	return localctx
}

// ICurrentTimestampContext is an interface to support dynamic dispatch.
type ICurrentTimestampContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCurrentTimestampContext differentiates from other interfaces.
	IsCurrentTimestampContext()
}

type CurrentTimestampContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCurrentTimestampContext() *CurrentTimestampContext {
	var p = new(CurrentTimestampContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_currentTimestamp
	return p
}

func (*CurrentTimestampContext) IsCurrentTimestampContext() {}

func NewCurrentTimestampContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CurrentTimestampContext {
	var p = new(CurrentTimestampContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_currentTimestamp

	return p
}

func (s *CurrentTimestampContext) GetParser() antlr.Parser { return s.parser }

func (s *CurrentTimestampContext) NOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOW, 0)
}

func (s *CurrentTimestampContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CurrentTimestampContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CurrentTimestampContext) CURRENT_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIMESTAMP, 0)
}

func (s *CurrentTimestampContext) LOCALTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCALTIME, 0)
}

func (s *CurrentTimestampContext) LOCALTIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCALTIMESTAMP, 0)
}

func (s *CurrentTimestampContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *CurrentTimestampContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CurrentTimestampContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CurrentTimestampContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCurrentTimestamp(s)
	}
}

func (s *CurrentTimestampContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCurrentTimestamp(s)
	}
}

func (p *MySqlParser) CurrentTimestamp() (localctx ICurrentTimestampContext) {
	this := p
	_ = this

	localctx = NewCurrentTimestampContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 584, MySqlParserRULE_currentTimestamp)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6098)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserCURRENT_TIMESTAMP, MySqlParserLOCALTIME, MySqlParserLOCALTIMESTAMP:
		{
			p.SetState(6084)
			_la = p.GetTokenStream().LA(1)

			if !(((_la-301)&-(0x1f+1)) == 0 && ((1<<uint((_la-301)))&((1<<(MySqlParserCURRENT_TIMESTAMP-301))|(1<<(MySqlParserLOCALTIME-301))|(1<<(MySqlParserLOCALTIMESTAMP-301)))) != 0) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(6090)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 893, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6085)
				p.Match(MySqlParserLR_BRACKET)
			}
			p.SetState(6087)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			if ((_la-1089)&-(0x1f+1)) == 0 && ((1<<uint((_la-1089)))&((1<<(MySqlParserZERO_DECIMAL-1089))|(1<<(MySqlParserONE_DECIMAL-1089))|(1<<(MySqlParserTWO_DECIMAL-1089))|(1<<(MySqlParserDECIMAL_LITERAL-1089))|(1<<(MySqlParserREAL_LITERAL-1089)))) != 0 {
				{
					p.SetState(6086)
					p.DecimalLiteral()
				}

			}
			{
				p.SetState(6089)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case MySqlParserNOW:
		{
			p.SetState(6092)
			p.Match(MySqlParserNOW)
		}
		{
			p.SetState(6093)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6095)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if ((_la-1089)&-(0x1f+1)) == 0 && ((1<<uint((_la-1089)))&((1<<(MySqlParserZERO_DECIMAL-1089))|(1<<(MySqlParserONE_DECIMAL-1089))|(1<<(MySqlParserTWO_DECIMAL-1089))|(1<<(MySqlParserDECIMAL_LITERAL-1089))|(1<<(MySqlParserREAL_LITERAL-1089)))) != 0 {
			{
				p.SetState(6094)
				p.DecimalLiteral()
			}

		}
		{
			p.SetState(6097)
			p.Match(MySqlParserRR_BRACKET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IExpressionOrDefaultContext is an interface to support dynamic dispatch.
type IExpressionOrDefaultContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExpressionOrDefaultContext differentiates from other interfaces.
	IsExpressionOrDefaultContext()
}

type ExpressionOrDefaultContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExpressionOrDefaultContext() *ExpressionOrDefaultContext {
	var p = new(ExpressionOrDefaultContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_expressionOrDefault
	return p
}

func (*ExpressionOrDefaultContext) IsExpressionOrDefaultContext() {}

func NewExpressionOrDefaultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionOrDefaultContext {
	var p = new(ExpressionOrDefaultContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_expressionOrDefault

	return p
}

func (s *ExpressionOrDefaultContext) GetParser() antlr.Parser { return s.parser }

func (s *ExpressionOrDefaultContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ExpressionOrDefaultContext) DEFAULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, 0)
}

func (s *ExpressionOrDefaultContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionOrDefaultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ExpressionOrDefaultContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExpressionOrDefault(s)
	}
}

func (s *ExpressionOrDefaultContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExpressionOrDefault(s)
	}
}

func (p *MySqlParser) ExpressionOrDefault() (localctx IExpressionOrDefaultContext) {
	this := p
	_ = this

	localctx = NewExpressionOrDefaultContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 586, MySqlParserRULE_expressionOrDefault)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6102)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 896, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6100)
			p.expression(0)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6101)
			p.Match(MySqlParserDEFAULT)
		}

	}

	return localctx
}

// IIfExistsContext is an interface to support dynamic dispatch.
type IIfExistsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIfExistsContext differentiates from other interfaces.
	IsIfExistsContext()
}

type IfExistsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIfExistsContext() *IfExistsContext {
	var p = new(IfExistsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_ifExists
	return p
}

func (*IfExistsContext) IsIfExistsContext() {}

func NewIfExistsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IfExistsContext {
	var p = new(IfExistsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_ifExists

	return p
}

func (s *IfExistsContext) GetParser() antlr.Parser { return s.parser }

func (s *IfExistsContext) IF() antlr.TerminalNode {
	return s.GetToken(MySqlParserIF, 0)
}

func (s *IfExistsContext) EXISTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXISTS, 0)
}

func (s *IfExistsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IfExistsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IfExistsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIfExists(s)
	}
}

func (s *IfExistsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIfExists(s)
	}
}

func (p *MySqlParser) IfExists() (localctx IIfExistsContext) {
	this := p
	_ = this

	localctx = NewIfExistsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 588, MySqlParserRULE_ifExists)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6104)
		p.Match(MySqlParserIF)
	}
	{
		p.SetState(6105)
		p.Match(MySqlParserEXISTS)
	}

	return localctx
}

// IIfNotExistsContext is an interface to support dynamic dispatch.
type IIfNotExistsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIfNotExistsContext differentiates from other interfaces.
	IsIfNotExistsContext()
}

type IfNotExistsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIfNotExistsContext() *IfNotExistsContext {
	var p = new(IfNotExistsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_ifNotExists
	return p
}

func (*IfNotExistsContext) IsIfNotExistsContext() {}

func NewIfNotExistsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IfNotExistsContext {
	var p = new(IfNotExistsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_ifNotExists

	return p
}

func (s *IfNotExistsContext) GetParser() antlr.Parser { return s.parser }

func (s *IfNotExistsContext) IF() antlr.TerminalNode {
	return s.GetToken(MySqlParserIF, 0)
}

func (s *IfNotExistsContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *IfNotExistsContext) EXISTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXISTS, 0)
}

func (s *IfNotExistsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IfNotExistsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IfNotExistsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIfNotExists(s)
	}
}

func (s *IfNotExistsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIfNotExists(s)
	}
}

func (p *MySqlParser) IfNotExists() (localctx IIfNotExistsContext) {
	this := p
	_ = this

	localctx = NewIfNotExistsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 590, MySqlParserRULE_ifNotExists)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6107)
		p.Match(MySqlParserIF)
	}
	{
		p.SetState(6108)
		p.Match(MySqlParserNOT)
	}
	{
		p.SetState(6109)
		p.Match(MySqlParserEXISTS)
	}

	return localctx
}

// IFunctionCallContext is an interface to support dynamic dispatch.
type IFunctionCallContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFunctionCallContext differentiates from other interfaces.
	IsFunctionCallContext()
}

type FunctionCallContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFunctionCallContext() *FunctionCallContext {
	var p = new(FunctionCallContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_functionCall
	return p
}

func (*FunctionCallContext) IsFunctionCallContext() {}

func NewFunctionCallContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionCallContext {
	var p = new(FunctionCallContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_functionCall

	return p
}

func (s *FunctionCallContext) GetParser() antlr.Parser { return s.parser }

func (s *FunctionCallContext) CopyFrom(ctx *FunctionCallContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *FunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionCallContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SpecificFunctionCallContext struct {
	*FunctionCallContext
}

func NewSpecificFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SpecificFunctionCallContext {
	var p = new(SpecificFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *SpecificFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SpecificFunctionCallContext) SpecificFunction() ISpecificFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISpecificFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISpecificFunctionContext)
}

func (s *SpecificFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSpecificFunctionCall(s)
	}
}

func (s *SpecificFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSpecificFunctionCall(s)
	}
}

type PasswordFunctionCallContext struct {
	*FunctionCallContext
}

func NewPasswordFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PasswordFunctionCallContext {
	var p = new(PasswordFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *PasswordFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PasswordFunctionCallContext) PasswordFunctionClause() IPasswordFunctionClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPasswordFunctionClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPasswordFunctionClauseContext)
}

func (s *PasswordFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPasswordFunctionCall(s)
	}
}

func (s *PasswordFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPasswordFunctionCall(s)
	}
}

type UdfFunctionCallContext struct {
	*FunctionCallContext
}

func NewUdfFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UdfFunctionCallContext {
	var p = new(UdfFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *UdfFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UdfFunctionCallContext) FullId() IFullIdContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullIdContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullIdContext)
}

func (s *UdfFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *UdfFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *UdfFunctionCallContext) FunctionArgs() IFunctionArgsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgsContext)
}

func (s *UdfFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUdfFunctionCall(s)
	}
}

func (s *UdfFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUdfFunctionCall(s)
	}
}

type NonAggregateFunctionCallContext struct {
	*FunctionCallContext
}

func NewNonAggregateFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NonAggregateFunctionCallContext {
	var p = new(NonAggregateFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *NonAggregateFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NonAggregateFunctionCallContext) NonAggregateWindowedFunction() INonAggregateWindowedFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*INonAggregateWindowedFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(INonAggregateWindowedFunctionContext)
}

func (s *NonAggregateFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNonAggregateFunctionCall(s)
	}
}

func (s *NonAggregateFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNonAggregateFunctionCall(s)
	}
}

type AggregateFunctionCallContext struct {
	*FunctionCallContext
}

func NewAggregateFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AggregateFunctionCallContext {
	var p = new(AggregateFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *AggregateFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AggregateFunctionCallContext) AggregateWindowedFunction() IAggregateWindowedFunctionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IAggregateWindowedFunctionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IAggregateWindowedFunctionContext)
}

func (s *AggregateFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAggregateFunctionCall(s)
	}
}

func (s *AggregateFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAggregateFunctionCall(s)
	}
}

type ScalarFunctionCallContext struct {
	*FunctionCallContext
}

func NewScalarFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ScalarFunctionCallContext {
	var p = new(ScalarFunctionCallContext)

	p.FunctionCallContext = NewEmptyFunctionCallContext()
	p.parser = parser
	p.CopyFrom(ctx.(*FunctionCallContext))

	return p
}

func (s *ScalarFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ScalarFunctionCallContext) ScalarFunctionName() IScalarFunctionNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IScalarFunctionNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IScalarFunctionNameContext)
}

func (s *ScalarFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *ScalarFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *ScalarFunctionCallContext) FunctionArgs() IFunctionArgsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgsContext)
}

func (s *ScalarFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterScalarFunctionCall(s)
	}
}

func (s *ScalarFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitScalarFunctionCall(s)
	}
}

func (p *MySqlParser) FunctionCall() (localctx IFunctionCallContext) {
	this := p
	_ = this

	localctx = NewFunctionCallContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 592, MySqlParserRULE_functionCall)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6129)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 899, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSpecificFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6111)
			p.SpecificFunction()
		}

	case 2:
		localctx = NewAggregateFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6112)
			p.AggregateWindowedFunction()
		}

	case 3:
		localctx = NewNonAggregateFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6113)
			p.NonAggregateWindowedFunction()
		}

	case 4:
		localctx = NewScalarFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6114)
			p.ScalarFunctionName()
		}
		{
			p.SetState(6115)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6117)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 897, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6116)
				p.FunctionArgs()
			}

		}
		{
			p.SetState(6119)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 5:
		localctx = NewUdfFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6121)
			p.FullId()
		}
		{
			p.SetState(6122)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6124)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 898, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6123)
				p.FunctionArgs()
			}

		}
		{
			p.SetState(6126)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 6:
		localctx = NewPasswordFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(6128)
			p.PasswordFunctionClause()
		}

	}

	return localctx
}

// ISpecificFunctionContext is an interface to support dynamic dispatch.
type ISpecificFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsSpecificFunctionContext differentiates from other interfaces.
	IsSpecificFunctionContext()
}

type SpecificFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptySpecificFunctionContext() *SpecificFunctionContext {
	var p = new(SpecificFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_specificFunction
	return p
}

func (*SpecificFunctionContext) IsSpecificFunctionContext() {}

func NewSpecificFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SpecificFunctionContext {
	var p = new(SpecificFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_specificFunction

	return p
}

func (s *SpecificFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *SpecificFunctionContext) CopyFrom(ctx *SpecificFunctionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *SpecificFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SpecificFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type PositionFunctionCallContext struct {
	*SpecificFunctionContext
	positionString     IStringLiteralContext
	positionExpression IExpressionContext
	inString           IStringLiteralContext
	inExpression       IExpressionContext
}

func NewPositionFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PositionFunctionCallContext {
	var p = new(PositionFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *PositionFunctionCallContext) GetPositionString() IStringLiteralContext {
	return s.positionString
}

func (s *PositionFunctionCallContext) GetPositionExpression() IExpressionContext {
	return s.positionExpression
}

func (s *PositionFunctionCallContext) GetInString() IStringLiteralContext { return s.inString }

func (s *PositionFunctionCallContext) GetInExpression() IExpressionContext { return s.inExpression }

func (s *PositionFunctionCallContext) SetPositionString(v IStringLiteralContext) {
	s.positionString = v
}

func (s *PositionFunctionCallContext) SetPositionExpression(v IExpressionContext) {
	s.positionExpression = v
}

func (s *PositionFunctionCallContext) SetInString(v IStringLiteralContext) { s.inString = v }

func (s *PositionFunctionCallContext) SetInExpression(v IExpressionContext) { s.inExpression = v }

func (s *PositionFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PositionFunctionCallContext) POSITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOSITION, 0)
}

func (s *PositionFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PositionFunctionCallContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *PositionFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PositionFunctionCallContext) AllStringLiteral() []IStringLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem())
	var tst = make([]IStringLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IStringLiteralContext)
		}
	}

	return tst
}

func (s *PositionFunctionCallContext) StringLiteral(i int) IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *PositionFunctionCallContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *PositionFunctionCallContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PositionFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPositionFunctionCall(s)
	}
}

func (s *PositionFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPositionFunctionCall(s)
	}
}

type TrimFunctionCallContext struct {
	*SpecificFunctionContext
	positioinForm    antlr.Token
	sourceString     IStringLiteralContext
	sourceExpression IExpressionContext
	fromString       IStringLiteralContext
	fromExpression   IExpressionContext
}

func NewTrimFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TrimFunctionCallContext {
	var p = new(TrimFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *TrimFunctionCallContext) GetPositioinForm() antlr.Token { return s.positioinForm }

func (s *TrimFunctionCallContext) SetPositioinForm(v antlr.Token) { s.positioinForm = v }

func (s *TrimFunctionCallContext) GetSourceString() IStringLiteralContext { return s.sourceString }

func (s *TrimFunctionCallContext) GetSourceExpression() IExpressionContext { return s.sourceExpression }

func (s *TrimFunctionCallContext) GetFromString() IStringLiteralContext { return s.fromString }

func (s *TrimFunctionCallContext) GetFromExpression() IExpressionContext { return s.fromExpression }

func (s *TrimFunctionCallContext) SetSourceString(v IStringLiteralContext) { s.sourceString = v }

func (s *TrimFunctionCallContext) SetSourceExpression(v IExpressionContext) { s.sourceExpression = v }

func (s *TrimFunctionCallContext) SetFromString(v IStringLiteralContext) { s.fromString = v }

func (s *TrimFunctionCallContext) SetFromExpression(v IExpressionContext) { s.fromExpression = v }

func (s *TrimFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TrimFunctionCallContext) TRIM() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIM, 0)
}

func (s *TrimFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *TrimFunctionCallContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *TrimFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *TrimFunctionCallContext) BOTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserBOTH, 0)
}

func (s *TrimFunctionCallContext) LEADING() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEADING, 0)
}

func (s *TrimFunctionCallContext) TRAILING() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRAILING, 0)
}

func (s *TrimFunctionCallContext) AllStringLiteral() []IStringLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem())
	var tst = make([]IStringLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IStringLiteralContext)
		}
	}

	return tst
}

func (s *TrimFunctionCallContext) StringLiteral(i int) IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *TrimFunctionCallContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *TrimFunctionCallContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *TrimFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTrimFunctionCall(s)
	}
}

func (s *TrimFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTrimFunctionCall(s)
	}
}

type JsonValueFunctionCallContext struct {
	*SpecificFunctionContext
}

func NewJsonValueFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JsonValueFunctionCallContext {
	var p = new(JsonValueFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *JsonValueFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *JsonValueFunctionCallContext) JSON_VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_VALUE, 0)
}

func (s *JsonValueFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *JsonValueFunctionCallContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *JsonValueFunctionCallContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *JsonValueFunctionCallContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *JsonValueFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *JsonValueFunctionCallContext) RETURNING() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNING, 0)
}

func (s *JsonValueFunctionCallContext) ConvertedDataType() IConvertedDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConvertedDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConvertedDataTypeContext)
}

func (s *JsonValueFunctionCallContext) AllON() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserON)
}

func (s *JsonValueFunctionCallContext) ON(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserON, i)
}

func (s *JsonValueFunctionCallContext) EMPTY() antlr.TerminalNode {
	return s.GetToken(MySqlParserEMPTY, 0)
}

func (s *JsonValueFunctionCallContext) AllERROR() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserERROR)
}

func (s *JsonValueFunctionCallContext) ERROR(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserERROR, i)
}

func (s *JsonValueFunctionCallContext) AllNULL_LITERAL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserNULL_LITERAL)
}

func (s *JsonValueFunctionCallContext) NULL_LITERAL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserNULL_LITERAL, i)
}

func (s *JsonValueFunctionCallContext) AllDEFAULT() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserDEFAULT)
}

func (s *JsonValueFunctionCallContext) DEFAULT(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT, i)
}

func (s *JsonValueFunctionCallContext) AllDefaultValue() []IDefaultValueContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDefaultValueContext)(nil)).Elem())
	var tst = make([]IDefaultValueContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDefaultValueContext)
		}
	}

	return tst
}

func (s *JsonValueFunctionCallContext) DefaultValue(i int) IDefaultValueContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDefaultValueContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDefaultValueContext)
}

func (s *JsonValueFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterJsonValueFunctionCall(s)
	}
}

func (s *JsonValueFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitJsonValueFunctionCall(s)
	}
}

type CaseFunctionCallContext struct {
	*SpecificFunctionContext
	elseArg IFunctionArgContext
}

func NewCaseFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CaseFunctionCallContext {
	var p = new(CaseFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *CaseFunctionCallContext) GetElseArg() IFunctionArgContext { return s.elseArg }

func (s *CaseFunctionCallContext) SetElseArg(v IFunctionArgContext) { s.elseArg = v }

func (s *CaseFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CaseFunctionCallContext) CASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASE, 0)
}

func (s *CaseFunctionCallContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *CaseFunctionCallContext) AllCaseFuncAlternative() []ICaseFuncAlternativeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICaseFuncAlternativeContext)(nil)).Elem())
	var tst = make([]ICaseFuncAlternativeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICaseFuncAlternativeContext)
		}
	}

	return tst
}

func (s *CaseFunctionCallContext) CaseFuncAlternative(i int) ICaseFuncAlternativeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICaseFuncAlternativeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICaseFuncAlternativeContext)
}

func (s *CaseFunctionCallContext) ELSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserELSE, 0)
}

func (s *CaseFunctionCallContext) FunctionArg() IFunctionArgContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgContext)
}

func (s *CaseFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCaseFunctionCall(s)
	}
}

func (s *CaseFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCaseFunctionCall(s)
	}
}

type ExtractFunctionCallContext struct {
	*SpecificFunctionContext
	sourceString     IStringLiteralContext
	sourceExpression IExpressionContext
}

func NewExtractFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ExtractFunctionCallContext {
	var p = new(ExtractFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *ExtractFunctionCallContext) GetSourceString() IStringLiteralContext { return s.sourceString }

func (s *ExtractFunctionCallContext) GetSourceExpression() IExpressionContext {
	return s.sourceExpression
}

func (s *ExtractFunctionCallContext) SetSourceString(v IStringLiteralContext) { s.sourceString = v }

func (s *ExtractFunctionCallContext) SetSourceExpression(v IExpressionContext) {
	s.sourceExpression = v
}

func (s *ExtractFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExtractFunctionCallContext) EXTRACT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTRACT, 0)
}

func (s *ExtractFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *ExtractFunctionCallContext) IntervalType() IIntervalTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeContext)
}

func (s *ExtractFunctionCallContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *ExtractFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *ExtractFunctionCallContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *ExtractFunctionCallContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ExtractFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExtractFunctionCall(s)
	}
}

func (s *ExtractFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExtractFunctionCall(s)
	}
}

type DataTypeFunctionCallContext struct {
	*SpecificFunctionContext
	separator antlr.Token
}

func NewDataTypeFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DataTypeFunctionCallContext {
	var p = new(DataTypeFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *DataTypeFunctionCallContext) GetSeparator() antlr.Token { return s.separator }

func (s *DataTypeFunctionCallContext) SetSeparator(v antlr.Token) { s.separator = v }

func (s *DataTypeFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DataTypeFunctionCallContext) CONVERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONVERT, 0)
}

func (s *DataTypeFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *DataTypeFunctionCallContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *DataTypeFunctionCallContext) ConvertedDataType() IConvertedDataTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConvertedDataTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConvertedDataTypeContext)
}

func (s *DataTypeFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *DataTypeFunctionCallContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *DataTypeFunctionCallContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *DataTypeFunctionCallContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *DataTypeFunctionCallContext) CAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserCAST, 0)
}

func (s *DataTypeFunctionCallContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *DataTypeFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDataTypeFunctionCall(s)
	}
}

func (s *DataTypeFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDataTypeFunctionCall(s)
	}
}

type ValuesFunctionCallContext struct {
	*SpecificFunctionContext
}

func NewValuesFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ValuesFunctionCallContext {
	var p = new(ValuesFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *ValuesFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ValuesFunctionCallContext) VALUES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUES, 0)
}

func (s *ValuesFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *ValuesFunctionCallContext) FullColumnName() IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *ValuesFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *ValuesFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterValuesFunctionCall(s)
	}
}

func (s *ValuesFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitValuesFunctionCall(s)
	}
}

type CaseExpressionFunctionCallContext struct {
	*SpecificFunctionContext
	elseArg IFunctionArgContext
}

func NewCaseExpressionFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CaseExpressionFunctionCallContext {
	var p = new(CaseExpressionFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *CaseExpressionFunctionCallContext) GetElseArg() IFunctionArgContext { return s.elseArg }

func (s *CaseExpressionFunctionCallContext) SetElseArg(v IFunctionArgContext) { s.elseArg = v }

func (s *CaseExpressionFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CaseExpressionFunctionCallContext) CASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASE, 0)
}

func (s *CaseExpressionFunctionCallContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *CaseExpressionFunctionCallContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *CaseExpressionFunctionCallContext) AllCaseFuncAlternative() []ICaseFuncAlternativeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICaseFuncAlternativeContext)(nil)).Elem())
	var tst = make([]ICaseFuncAlternativeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ICaseFuncAlternativeContext)
		}
	}

	return tst
}

func (s *CaseExpressionFunctionCallContext) CaseFuncAlternative(i int) ICaseFuncAlternativeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICaseFuncAlternativeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ICaseFuncAlternativeContext)
}

func (s *CaseExpressionFunctionCallContext) ELSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserELSE, 0)
}

func (s *CaseExpressionFunctionCallContext) FunctionArg() IFunctionArgContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgContext)
}

func (s *CaseExpressionFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCaseExpressionFunctionCall(s)
	}
}

func (s *CaseExpressionFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCaseExpressionFunctionCall(s)
	}
}

type SimpleFunctionCallContext struct {
	*SpecificFunctionContext
}

func NewSimpleFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleFunctionCallContext {
	var p = new(SimpleFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *SimpleFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SimpleFunctionCallContext) CURRENT_DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_DATE, 0)
}

func (s *SimpleFunctionCallContext) CURRENT_TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIME, 0)
}

func (s *SimpleFunctionCallContext) CURRENT_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIMESTAMP, 0)
}

func (s *SimpleFunctionCallContext) CURRENT_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_USER, 0)
}

func (s *SimpleFunctionCallContext) LOCALTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCALTIME, 0)
}

func (s *SimpleFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SimpleFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SimpleFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSimpleFunctionCall(s)
	}
}

func (s *SimpleFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSimpleFunctionCall(s)
	}
}

type CharFunctionCallContext struct {
	*SpecificFunctionContext
}

func NewCharFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CharFunctionCallContext {
	var p = new(CharFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *CharFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CharFunctionCallContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *CharFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *CharFunctionCallContext) FunctionArgs() IFunctionArgsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgsContext)
}

func (s *CharFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *CharFunctionCallContext) USING() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSING, 0)
}

func (s *CharFunctionCallContext) CharsetName() ICharsetNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICharsetNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICharsetNameContext)
}

func (s *CharFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCharFunctionCall(s)
	}
}

func (s *CharFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCharFunctionCall(s)
	}
}

type WeightFunctionCallContext struct {
	*SpecificFunctionContext
	stringFormat antlr.Token
}

func NewWeightFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *WeightFunctionCallContext {
	var p = new(WeightFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *WeightFunctionCallContext) GetStringFormat() antlr.Token { return s.stringFormat }

func (s *WeightFunctionCallContext) SetStringFormat(v antlr.Token) { s.stringFormat = v }

func (s *WeightFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WeightFunctionCallContext) WEIGHT_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEIGHT_STRING, 0)
}

func (s *WeightFunctionCallContext) AllLR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLR_BRACKET)
}

func (s *WeightFunctionCallContext) LR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, i)
}

func (s *WeightFunctionCallContext) AllRR_BRACKET() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserRR_BRACKET)
}

func (s *WeightFunctionCallContext) RR_BRACKET(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, i)
}

func (s *WeightFunctionCallContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *WeightFunctionCallContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *WeightFunctionCallContext) AS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAS, 0)
}

func (s *WeightFunctionCallContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *WeightFunctionCallContext) LevelsInWeightString() ILevelsInWeightStringContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILevelsInWeightStringContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILevelsInWeightStringContext)
}

func (s *WeightFunctionCallContext) CHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR, 0)
}

func (s *WeightFunctionCallContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *WeightFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWeightFunctionCall(s)
	}
}

func (s *WeightFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWeightFunctionCall(s)
	}
}

type GetFormatFunctionCallContext struct {
	*SpecificFunctionContext
	datetimeFormat antlr.Token
}

func NewGetFormatFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *GetFormatFunctionCallContext {
	var p = new(GetFormatFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *GetFormatFunctionCallContext) GetDatetimeFormat() antlr.Token { return s.datetimeFormat }

func (s *GetFormatFunctionCallContext) SetDatetimeFormat(v antlr.Token) { s.datetimeFormat = v }

func (s *GetFormatFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *GetFormatFunctionCallContext) GET_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGET_FORMAT, 0)
}

func (s *GetFormatFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *GetFormatFunctionCallContext) COMMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, 0)
}

func (s *GetFormatFunctionCallContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *GetFormatFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *GetFormatFunctionCallContext) DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE, 0)
}

func (s *GetFormatFunctionCallContext) TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME, 0)
}

func (s *GetFormatFunctionCallContext) DATETIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATETIME, 0)
}

func (s *GetFormatFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterGetFormatFunctionCall(s)
	}
}

func (s *GetFormatFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitGetFormatFunctionCall(s)
	}
}

type SubstrFunctionCallContext struct {
	*SpecificFunctionContext
	sourceString     IStringLiteralContext
	sourceExpression IExpressionContext
	fromDecimal      IDecimalLiteralContext
	fromExpression   IExpressionContext
	forDecimal       IDecimalLiteralContext
	forExpression    IExpressionContext
}

func NewSubstrFunctionCallContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubstrFunctionCallContext {
	var p = new(SubstrFunctionCallContext)

	p.SpecificFunctionContext = NewEmptySpecificFunctionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*SpecificFunctionContext))

	return p
}

func (s *SubstrFunctionCallContext) GetSourceString() IStringLiteralContext { return s.sourceString }

func (s *SubstrFunctionCallContext) GetSourceExpression() IExpressionContext {
	return s.sourceExpression
}

func (s *SubstrFunctionCallContext) GetFromDecimal() IDecimalLiteralContext { return s.fromDecimal }

func (s *SubstrFunctionCallContext) GetFromExpression() IExpressionContext { return s.fromExpression }

func (s *SubstrFunctionCallContext) GetForDecimal() IDecimalLiteralContext { return s.forDecimal }

func (s *SubstrFunctionCallContext) GetForExpression() IExpressionContext { return s.forExpression }

func (s *SubstrFunctionCallContext) SetSourceString(v IStringLiteralContext) { s.sourceString = v }

func (s *SubstrFunctionCallContext) SetSourceExpression(v IExpressionContext) { s.sourceExpression = v }

func (s *SubstrFunctionCallContext) SetFromDecimal(v IDecimalLiteralContext) { s.fromDecimal = v }

func (s *SubstrFunctionCallContext) SetFromExpression(v IExpressionContext) { s.fromExpression = v }

func (s *SubstrFunctionCallContext) SetForDecimal(v IDecimalLiteralContext) { s.forDecimal = v }

func (s *SubstrFunctionCallContext) SetForExpression(v IExpressionContext) { s.forExpression = v }

func (s *SubstrFunctionCallContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubstrFunctionCallContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubstrFunctionCallContext) FROM() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM, 0)
}

func (s *SubstrFunctionCallContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubstrFunctionCallContext) SUBSTR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBSTR, 0)
}

func (s *SubstrFunctionCallContext) SUBSTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBSTRING, 0)
}

func (s *SubstrFunctionCallContext) StringLiteral() IStringLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IStringLiteralContext)
}

func (s *SubstrFunctionCallContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *SubstrFunctionCallContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *SubstrFunctionCallContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *SubstrFunctionCallContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *SubstrFunctionCallContext) FOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOR, 0)
}

func (s *SubstrFunctionCallContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubstrFunctionCall(s)
	}
}

func (s *SubstrFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubstrFunctionCall(s)
	}
}

func (p *MySqlParser) SpecificFunction() (localctx ISpecificFunctionContext) {
	this := p
	_ = this

	localctx = NewSpecificFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 594, MySqlParserRULE_specificFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6323)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 925, p.GetParserRuleContext()) {
	case 1:
		localctx = NewSimpleFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6131)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserCURRENT_USER || (((_la-299)&-(0x1f+1)) == 0 && ((1<<uint((_la-299)))&((1<<(MySqlParserCURRENT_DATE-299))|(1<<(MySqlParserCURRENT_TIME-299))|(1<<(MySqlParserCURRENT_TIMESTAMP-299))|(1<<(MySqlParserLOCALTIME-299)))) != 0)) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(6134)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 900, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6132)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(6133)
				p.Match(MySqlParserRR_BRACKET)
			}

		}

	case 2:
		localctx = NewDataTypeFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6136)
			p.Match(MySqlParserCONVERT)
		}
		{
			p.SetState(6137)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6138)
			p.expression(0)
		}
		{
			p.SetState(6139)

			var _m = p.Match(MySqlParserCOMMA)

			localctx.(*DataTypeFunctionCallContext).separator = _m
		}
		{
			p.SetState(6140)
			p.ConvertedDataType()
		}
		{
			p.SetState(6141)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 3:
		localctx = NewDataTypeFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6143)
			p.Match(MySqlParserCONVERT)
		}
		{
			p.SetState(6144)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6145)
			p.expression(0)
		}
		{
			p.SetState(6146)
			p.Match(MySqlParserUSING)
		}
		{
			p.SetState(6147)
			p.CharsetName()
		}
		{
			p.SetState(6148)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 4:
		localctx = NewDataTypeFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6150)
			p.Match(MySqlParserCAST)
		}
		{
			p.SetState(6151)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6152)
			p.expression(0)
		}
		{
			p.SetState(6153)
			p.Match(MySqlParserAS)
		}
		{
			p.SetState(6154)
			p.ConvertedDataType()
		}
		{
			p.SetState(6155)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 5:
		localctx = NewValuesFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6157)
			p.Match(MySqlParserVALUES)
		}
		{
			p.SetState(6158)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6159)
			p.FullColumnName()
		}
		{
			p.SetState(6160)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 6:
		localctx = NewCaseExpressionFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(6162)
			p.Match(MySqlParserCASE)
		}
		{
			p.SetState(6163)
			p.expression(0)
		}
		p.SetState(6165)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserWHEN {
			{
				p.SetState(6164)
				p.CaseFuncAlternative()
			}

			p.SetState(6167)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(6171)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserELSE {
			{
				p.SetState(6169)
				p.Match(MySqlParserELSE)
			}
			{
				p.SetState(6170)

				var _x = p.FunctionArg()

				localctx.(*CaseExpressionFunctionCallContext).elseArg = _x
			}

		}
		{
			p.SetState(6173)
			p.Match(MySqlParserEND)
		}

	case 7:
		localctx = NewCaseFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(6175)
			p.Match(MySqlParserCASE)
		}
		p.SetState(6177)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserWHEN {
			{
				p.SetState(6176)
				p.CaseFuncAlternative()
			}

			p.SetState(6179)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		p.SetState(6183)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserELSE {
			{
				p.SetState(6181)
				p.Match(MySqlParserELSE)
			}
			{
				p.SetState(6182)

				var _x = p.FunctionArg()

				localctx.(*CaseFunctionCallContext).elseArg = _x
			}

		}
		{
			p.SetState(6185)
			p.Match(MySqlParserEND)
		}

	case 8:
		localctx = NewCharFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(6187)
			p.Match(MySqlParserCHAR)
		}
		{
			p.SetState(6188)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6189)
			p.FunctionArgs()
		}
		p.SetState(6192)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserUSING {
			{
				p.SetState(6190)
				p.Match(MySqlParserUSING)
			}
			{
				p.SetState(6191)
				p.CharsetName()
			}

		}
		{
			p.SetState(6194)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 9:
		localctx = NewPositionFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(6196)
			p.Match(MySqlParserPOSITION)
		}
		{
			p.SetState(6197)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6200)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 906, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6198)

				var _x = p.StringLiteral()

				localctx.(*PositionFunctionCallContext).positionString = _x
			}

		case 2:
			{
				p.SetState(6199)

				var _x = p.expression(0)

				localctx.(*PositionFunctionCallContext).positionExpression = _x
			}

		}
		{
			p.SetState(6202)
			p.Match(MySqlParserIN)
		}
		p.SetState(6205)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 907, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6203)

				var _x = p.StringLiteral()

				localctx.(*PositionFunctionCallContext).inString = _x
			}

		case 2:
			{
				p.SetState(6204)

				var _x = p.expression(0)

				localctx.(*PositionFunctionCallContext).inExpression = _x
			}

		}
		{
			p.SetState(6207)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 10:
		localctx = NewSubstrFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(6209)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserSUBSTR || _la == MySqlParserSUBSTRING) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6210)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6213)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 908, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6211)

				var _x = p.StringLiteral()

				localctx.(*SubstrFunctionCallContext).sourceString = _x
			}

		case 2:
			{
				p.SetState(6212)

				var _x = p.expression(0)

				localctx.(*SubstrFunctionCallContext).sourceExpression = _x
			}

		}
		{
			p.SetState(6215)
			p.Match(MySqlParserFROM)
		}
		p.SetState(6218)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 909, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6216)

				var _x = p.DecimalLiteral()

				localctx.(*SubstrFunctionCallContext).fromDecimal = _x
			}

		case 2:
			{
				p.SetState(6217)

				var _x = p.expression(0)

				localctx.(*SubstrFunctionCallContext).fromExpression = _x
			}

		}
		p.SetState(6225)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserFOR {
			{
				p.SetState(6220)
				p.Match(MySqlParserFOR)
			}
			p.SetState(6223)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 910, p.GetParserRuleContext()) {
			case 1:
				{
					p.SetState(6221)

					var _x = p.DecimalLiteral()

					localctx.(*SubstrFunctionCallContext).forDecimal = _x
				}

			case 2:
				{
					p.SetState(6222)

					var _x = p.expression(0)

					localctx.(*SubstrFunctionCallContext).forExpression = _x
				}

			}

		}
		{
			p.SetState(6227)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 11:
		localctx = NewTrimFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(6229)
			p.Match(MySqlParserTRIM)
		}
		{
			p.SetState(6230)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6231)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*TrimFunctionCallContext).positioinForm = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserBOTH || _la == MySqlParserLEADING || _la == MySqlParserTRAILING) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*TrimFunctionCallContext).positioinForm = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		p.SetState(6234)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 912, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6232)

				var _x = p.StringLiteral()

				localctx.(*TrimFunctionCallContext).sourceString = _x
			}

		} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 912, p.GetParserRuleContext()) == 2 {
			{
				p.SetState(6233)

				var _x = p.expression(0)

				localctx.(*TrimFunctionCallContext).sourceExpression = _x
			}

		}
		{
			p.SetState(6236)
			p.Match(MySqlParserFROM)
		}
		p.SetState(6239)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 913, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6237)

				var _x = p.StringLiteral()

				localctx.(*TrimFunctionCallContext).fromString = _x
			}

		case 2:
			{
				p.SetState(6238)

				var _x = p.expression(0)

				localctx.(*TrimFunctionCallContext).fromExpression = _x
			}

		}
		{
			p.SetState(6241)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 12:
		localctx = NewTrimFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(6243)
			p.Match(MySqlParserTRIM)
		}
		{
			p.SetState(6244)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6247)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 914, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6245)

				var _x = p.StringLiteral()

				localctx.(*TrimFunctionCallContext).sourceString = _x
			}

		case 2:
			{
				p.SetState(6246)

				var _x = p.expression(0)

				localctx.(*TrimFunctionCallContext).sourceExpression = _x
			}

		}
		{
			p.SetState(6249)
			p.Match(MySqlParserFROM)
		}
		p.SetState(6252)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 915, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6250)

				var _x = p.StringLiteral()

				localctx.(*TrimFunctionCallContext).fromString = _x
			}

		case 2:
			{
				p.SetState(6251)

				var _x = p.expression(0)

				localctx.(*TrimFunctionCallContext).fromExpression = _x
			}

		}
		{
			p.SetState(6254)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 13:
		localctx = NewWeightFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(6256)
			p.Match(MySqlParserWEIGHT_STRING)
		}
		{
			p.SetState(6257)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6260)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 916, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6258)
				p.StringLiteral()
			}

		case 2:
			{
				p.SetState(6259)
				p.expression(0)
			}

		}
		p.SetState(6268)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserAS {
			{
				p.SetState(6262)
				p.Match(MySqlParserAS)
			}
			{
				p.SetState(6263)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*WeightFunctionCallContext).stringFormat = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserCHAR || _la == MySqlParserBINARY) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*WeightFunctionCallContext).stringFormat = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}
			{
				p.SetState(6264)
				p.Match(MySqlParserLR_BRACKET)
			}
			{
				p.SetState(6265)
				p.DecimalLiteral()
			}
			{
				p.SetState(6266)
				p.Match(MySqlParserRR_BRACKET)
			}

		}
		p.SetState(6271)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserLEVEL {
			{
				p.SetState(6270)
				p.LevelsInWeightString()
			}

		}
		{
			p.SetState(6273)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 14:
		localctx = NewExtractFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(6275)
			p.Match(MySqlParserEXTRACT)
		}
		{
			p.SetState(6276)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6277)
			p.IntervalType()
		}
		{
			p.SetState(6278)
			p.Match(MySqlParserFROM)
		}
		p.SetState(6281)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 919, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6279)

				var _x = p.StringLiteral()

				localctx.(*ExtractFunctionCallContext).sourceString = _x
			}

		case 2:
			{
				p.SetState(6280)

				var _x = p.expression(0)

				localctx.(*ExtractFunctionCallContext).sourceExpression = _x
			}

		}
		{
			p.SetState(6283)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 15:
		localctx = NewGetFormatFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(6285)
			p.Match(MySqlParserGET_FORMAT)
		}
		{
			p.SetState(6286)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6287)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*GetFormatFunctionCallContext).datetimeFormat = _lt

			_la = p.GetTokenStream().LA(1)

			if !(((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserDATETIME-206)))) != 0) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*GetFormatFunctionCallContext).datetimeFormat = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6288)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6289)
			p.StringLiteral()
		}
		{
			p.SetState(6290)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 16:
		localctx = NewJsonValueFunctionCallContext(p, localctx)
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(6292)
			p.Match(MySqlParserJSON_VALUE)
		}
		{
			p.SetState(6293)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6294)
			p.expression(0)
		}
		{
			p.SetState(6295)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6296)
			p.expression(0)
		}
		p.SetState(6299)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserRETURNING {
			{
				p.SetState(6297)
				p.Match(MySqlParserRETURNING)
			}
			{
				p.SetState(6298)
				p.ConvertedDataType()
			}

		}
		p.SetState(6309)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 922, p.GetParserRuleContext()) == 1 {
			p.SetState(6305)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserNULL_LITERAL:
				{
					p.SetState(6301)
					p.Match(MySqlParserNULL_LITERAL)
				}

			case MySqlParserERROR:
				{
					p.SetState(6302)
					p.Match(MySqlParserERROR)
				}

			case MySqlParserDEFAULT:
				{
					p.SetState(6303)
					p.Match(MySqlParserDEFAULT)
				}
				{
					p.SetState(6304)
					p.DefaultValue()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}
			{
				p.SetState(6307)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(6308)
				p.Match(MySqlParserEMPTY)
			}

		}
		p.SetState(6319)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserDEFAULT || _la == MySqlParserNULL_LITERAL || _la == MySqlParserERROR {
			p.SetState(6315)
			p.GetErrorHandler().Sync(p)

			switch p.GetTokenStream().LA(1) {
			case MySqlParserNULL_LITERAL:
				{
					p.SetState(6311)
					p.Match(MySqlParserNULL_LITERAL)
				}

			case MySqlParserERROR:
				{
					p.SetState(6312)
					p.Match(MySqlParserERROR)
				}

			case MySqlParserDEFAULT:
				{
					p.SetState(6313)
					p.Match(MySqlParserDEFAULT)
				}
				{
					p.SetState(6314)
					p.DefaultValue()
				}

			default:
				panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
			}
			{
				p.SetState(6317)
				p.Match(MySqlParserON)
			}
			{
				p.SetState(6318)
				p.Match(MySqlParserERROR)
			}

		}
		{
			p.SetState(6321)
			p.Match(MySqlParserRR_BRACKET)
		}

	}

	return localctx
}

// ICaseFuncAlternativeContext is an interface to support dynamic dispatch.
type ICaseFuncAlternativeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetCondition returns the condition rule contexts.
	GetCondition() IFunctionArgContext

	// GetConsequent returns the consequent rule contexts.
	GetConsequent() IFunctionArgContext

	// SetCondition sets the condition rule contexts.
	SetCondition(IFunctionArgContext)

	// SetConsequent sets the consequent rule contexts.
	SetConsequent(IFunctionArgContext)

	// IsCaseFuncAlternativeContext differentiates from other interfaces.
	IsCaseFuncAlternativeContext()
}

type CaseFuncAlternativeContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	condition  IFunctionArgContext
	consequent IFunctionArgContext
}

func NewEmptyCaseFuncAlternativeContext() *CaseFuncAlternativeContext {
	var p = new(CaseFuncAlternativeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_caseFuncAlternative
	return p
}

func (*CaseFuncAlternativeContext) IsCaseFuncAlternativeContext() {}

func NewCaseFuncAlternativeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseFuncAlternativeContext {
	var p = new(CaseFuncAlternativeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_caseFuncAlternative

	return p
}

func (s *CaseFuncAlternativeContext) GetParser() antlr.Parser { return s.parser }

func (s *CaseFuncAlternativeContext) GetCondition() IFunctionArgContext { return s.condition }

func (s *CaseFuncAlternativeContext) GetConsequent() IFunctionArgContext { return s.consequent }

func (s *CaseFuncAlternativeContext) SetCondition(v IFunctionArgContext) { s.condition = v }

func (s *CaseFuncAlternativeContext) SetConsequent(v IFunctionArgContext) { s.consequent = v }

func (s *CaseFuncAlternativeContext) WHEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserWHEN, 0)
}

func (s *CaseFuncAlternativeContext) THEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHEN, 0)
}

func (s *CaseFuncAlternativeContext) AllFunctionArg() []IFunctionArgContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem())
	var tst = make([]IFunctionArgContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFunctionArgContext)
		}
	}

	return tst
}

func (s *CaseFuncAlternativeContext) FunctionArg(i int) IFunctionArgContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgContext)
}

func (s *CaseFuncAlternativeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CaseFuncAlternativeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CaseFuncAlternativeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCaseFuncAlternative(s)
	}
}

func (s *CaseFuncAlternativeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCaseFuncAlternative(s)
	}
}

func (p *MySqlParser) CaseFuncAlternative() (localctx ICaseFuncAlternativeContext) {
	this := p
	_ = this

	localctx = NewCaseFuncAlternativeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 596, MySqlParserRULE_caseFuncAlternative)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6325)
		p.Match(MySqlParserWHEN)
	}
	{
		p.SetState(6326)

		var _x = p.FunctionArg()

		localctx.(*CaseFuncAlternativeContext).condition = _x
	}
	{
		p.SetState(6327)
		p.Match(MySqlParserTHEN)
	}
	{
		p.SetState(6328)

		var _x = p.FunctionArg()

		localctx.(*CaseFuncAlternativeContext).consequent = _x
	}

	return localctx
}

// ILevelsInWeightStringContext is an interface to support dynamic dispatch.
type ILevelsInWeightStringContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLevelsInWeightStringContext differentiates from other interfaces.
	IsLevelsInWeightStringContext()
}

type LevelsInWeightStringContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLevelsInWeightStringContext() *LevelsInWeightStringContext {
	var p = new(LevelsInWeightStringContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_levelsInWeightString
	return p
}

func (*LevelsInWeightStringContext) IsLevelsInWeightStringContext() {}

func NewLevelsInWeightStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LevelsInWeightStringContext {
	var p = new(LevelsInWeightStringContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_levelsInWeightString

	return p
}

func (s *LevelsInWeightStringContext) GetParser() antlr.Parser { return s.parser }

func (s *LevelsInWeightStringContext) CopyFrom(ctx *LevelsInWeightStringContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *LevelsInWeightStringContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LevelsInWeightStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type LevelWeightRangeContext struct {
	*LevelsInWeightStringContext
	firstLevel IDecimalLiteralContext
	lastLevel  IDecimalLiteralContext
}

func NewLevelWeightRangeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LevelWeightRangeContext {
	var p = new(LevelWeightRangeContext)

	p.LevelsInWeightStringContext = NewEmptyLevelsInWeightStringContext()
	p.parser = parser
	p.CopyFrom(ctx.(*LevelsInWeightStringContext))

	return p
}

func (s *LevelWeightRangeContext) GetFirstLevel() IDecimalLiteralContext { return s.firstLevel }

func (s *LevelWeightRangeContext) GetLastLevel() IDecimalLiteralContext { return s.lastLevel }

func (s *LevelWeightRangeContext) SetFirstLevel(v IDecimalLiteralContext) { s.firstLevel = v }

func (s *LevelWeightRangeContext) SetLastLevel(v IDecimalLiteralContext) { s.lastLevel = v }

func (s *LevelWeightRangeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LevelWeightRangeContext) LEVEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEVEL, 0)
}

func (s *LevelWeightRangeContext) MINUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, 0)
}

func (s *LevelWeightRangeContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *LevelWeightRangeContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LevelWeightRangeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLevelWeightRange(s)
	}
}

func (s *LevelWeightRangeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLevelWeightRange(s)
	}
}

type LevelWeightListContext struct {
	*LevelsInWeightStringContext
}

func NewLevelWeightListContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LevelWeightListContext {
	var p = new(LevelWeightListContext)

	p.LevelsInWeightStringContext = NewEmptyLevelsInWeightStringContext()
	p.parser = parser
	p.CopyFrom(ctx.(*LevelsInWeightStringContext))

	return p
}

func (s *LevelWeightListContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LevelWeightListContext) LEVEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEVEL, 0)
}

func (s *LevelWeightListContext) AllLevelInWeightListElement() []ILevelInWeightListElementContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ILevelInWeightListElementContext)(nil)).Elem())
	var tst = make([]ILevelInWeightListElementContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(ILevelInWeightListElementContext)
		}
	}

	return tst
}

func (s *LevelWeightListContext) LevelInWeightListElement(i int) ILevelInWeightListElementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILevelInWeightListElementContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(ILevelInWeightListElementContext)
}

func (s *LevelWeightListContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *LevelWeightListContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *LevelWeightListContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLevelWeightList(s)
	}
}

func (s *LevelWeightListContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLevelWeightList(s)
	}
}

func (p *MySqlParser) LevelsInWeightString() (localctx ILevelsInWeightStringContext) {
	this := p
	_ = this

	localctx = NewLevelsInWeightStringContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 598, MySqlParserRULE_levelsInWeightString)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6344)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 927, p.GetParserRuleContext()) {
	case 1:
		localctx = NewLevelWeightListContext(p, localctx)
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6330)
			p.Match(MySqlParserLEVEL)
		}
		{
			p.SetState(6331)
			p.LevelInWeightListElement()
		}
		p.SetState(6336)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(6332)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6333)
				p.LevelInWeightListElement()
			}

			p.SetState(6338)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}

	case 2:
		localctx = NewLevelWeightRangeContext(p, localctx)
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6339)
			p.Match(MySqlParserLEVEL)
		}
		{
			p.SetState(6340)

			var _x = p.DecimalLiteral()

			localctx.(*LevelWeightRangeContext).firstLevel = _x
		}
		{
			p.SetState(6341)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(6342)

			var _x = p.DecimalLiteral()

			localctx.(*LevelWeightRangeContext).lastLevel = _x
		}

	}

	return localctx
}

// ILevelInWeightListElementContext is an interface to support dynamic dispatch.
type ILevelInWeightListElementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetOrderType returns the orderType token.
	GetOrderType() antlr.Token

	// SetOrderType sets the orderType token.
	SetOrderType(antlr.Token)

	// IsLevelInWeightListElementContext differentiates from other interfaces.
	IsLevelInWeightListElementContext()
}

type LevelInWeightListElementContext struct {
	*antlr.BaseParserRuleContext
	parser    antlr.Parser
	orderType antlr.Token
}

func NewEmptyLevelInWeightListElementContext() *LevelInWeightListElementContext {
	var p = new(LevelInWeightListElementContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_levelInWeightListElement
	return p
}

func (*LevelInWeightListElementContext) IsLevelInWeightListElementContext() {}

func NewLevelInWeightListElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LevelInWeightListElementContext {
	var p = new(LevelInWeightListElementContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_levelInWeightListElement

	return p
}

func (s *LevelInWeightListElementContext) GetParser() antlr.Parser { return s.parser }

func (s *LevelInWeightListElementContext) GetOrderType() antlr.Token { return s.orderType }

func (s *LevelInWeightListElementContext) SetOrderType(v antlr.Token) { s.orderType = v }

func (s *LevelInWeightListElementContext) DecimalLiteral() IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *LevelInWeightListElementContext) ASC() antlr.TerminalNode {
	return s.GetToken(MySqlParserASC, 0)
}

func (s *LevelInWeightListElementContext) DESC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDESC, 0)
}

func (s *LevelInWeightListElementContext) REVERSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE, 0)
}

func (s *LevelInWeightListElementContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LevelInWeightListElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LevelInWeightListElementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLevelInWeightListElement(s)
	}
}

func (s *LevelInWeightListElementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLevelInWeightListElement(s)
	}
}

func (p *MySqlParser) LevelInWeightListElement() (localctx ILevelInWeightListElementContext) {
	this := p
	_ = this

	localctx = NewLevelInWeightListElementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 600, MySqlParserRULE_levelInWeightListElement)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6346)
		p.DecimalLiteral()
	}
	p.SetState(6348)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserASC || _la == MySqlParserDESC || _la == MySqlParserREVERSE {
		{
			p.SetState(6347)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*LevelInWeightListElementContext).orderType = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserASC || _la == MySqlParserDESC || _la == MySqlParserREVERSE) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*LevelInWeightListElementContext).orderType = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IAggregateWindowedFunctionContext is an interface to support dynamic dispatch.
type IAggregateWindowedFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetAggregator returns the aggregator token.
	GetAggregator() antlr.Token

	// GetStarArg returns the starArg token.
	GetStarArg() antlr.Token

	// GetSeparator returns the separator token.
	GetSeparator() antlr.Token

	// SetAggregator sets the aggregator token.
	SetAggregator(antlr.Token)

	// SetStarArg sets the starArg token.
	SetStarArg(antlr.Token)

	// SetSeparator sets the separator token.
	SetSeparator(antlr.Token)

	// IsAggregateWindowedFunctionContext differentiates from other interfaces.
	IsAggregateWindowedFunctionContext()
}

type AggregateWindowedFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser     antlr.Parser
	aggregator antlr.Token
	starArg    antlr.Token
	separator  antlr.Token
}

func NewEmptyAggregateWindowedFunctionContext() *AggregateWindowedFunctionContext {
	var p = new(AggregateWindowedFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_aggregateWindowedFunction
	return p
}

func (*AggregateWindowedFunctionContext) IsAggregateWindowedFunctionContext() {}

func NewAggregateWindowedFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AggregateWindowedFunctionContext {
	var p = new(AggregateWindowedFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_aggregateWindowedFunction

	return p
}

func (s *AggregateWindowedFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *AggregateWindowedFunctionContext) GetAggregator() antlr.Token { return s.aggregator }

func (s *AggregateWindowedFunctionContext) GetStarArg() antlr.Token { return s.starArg }

func (s *AggregateWindowedFunctionContext) GetSeparator() antlr.Token { return s.separator }

func (s *AggregateWindowedFunctionContext) SetAggregator(v antlr.Token) { s.aggregator = v }

func (s *AggregateWindowedFunctionContext) SetStarArg(v antlr.Token) { s.starArg = v }

func (s *AggregateWindowedFunctionContext) SetSeparator(v antlr.Token) { s.separator = v }

func (s *AggregateWindowedFunctionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *AggregateWindowedFunctionContext) FunctionArg() IFunctionArgContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgContext)
}

func (s *AggregateWindowedFunctionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *AggregateWindowedFunctionContext) AVG() antlr.TerminalNode {
	return s.GetToken(MySqlParserAVG, 0)
}

func (s *AggregateWindowedFunctionContext) MAX() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX, 0)
}

func (s *AggregateWindowedFunctionContext) MIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIN, 0)
}

func (s *AggregateWindowedFunctionContext) SUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUM, 0)
}

func (s *AggregateWindowedFunctionContext) OverClause() IOverClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOverClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOverClauseContext)
}

func (s *AggregateWindowedFunctionContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *AggregateWindowedFunctionContext) DISTINCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISTINCT, 0)
}

func (s *AggregateWindowedFunctionContext) COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOUNT, 0)
}

func (s *AggregateWindowedFunctionContext) FunctionArgs() IFunctionArgsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgsContext)
}

func (s *AggregateWindowedFunctionContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *AggregateWindowedFunctionContext) BIT_AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_AND, 0)
}

func (s *AggregateWindowedFunctionContext) BIT_OR() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_OR, 0)
}

func (s *AggregateWindowedFunctionContext) BIT_XOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_XOR, 0)
}

func (s *AggregateWindowedFunctionContext) STD() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTD, 0)
}

func (s *AggregateWindowedFunctionContext) STDDEV() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV, 0)
}

func (s *AggregateWindowedFunctionContext) STDDEV_POP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV_POP, 0)
}

func (s *AggregateWindowedFunctionContext) STDDEV_SAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV_SAMP, 0)
}

func (s *AggregateWindowedFunctionContext) VAR_POP() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_POP, 0)
}

func (s *AggregateWindowedFunctionContext) VAR_SAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_SAMP, 0)
}

func (s *AggregateWindowedFunctionContext) VARIANCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARIANCE, 0)
}

func (s *AggregateWindowedFunctionContext) GROUP_CONCAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_CONCAT, 0)
}

func (s *AggregateWindowedFunctionContext) ORDER() antlr.TerminalNode {
	return s.GetToken(MySqlParserORDER, 0)
}

func (s *AggregateWindowedFunctionContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *AggregateWindowedFunctionContext) AllOrderByExpression() []IOrderByExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IOrderByExpressionContext)(nil)).Elem())
	var tst = make([]IOrderByExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IOrderByExpressionContext)
		}
	}

	return tst
}

func (s *AggregateWindowedFunctionContext) OrderByExpression(i int) IOrderByExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IOrderByExpressionContext)
}

func (s *AggregateWindowedFunctionContext) SEPARATOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSEPARATOR, 0)
}

func (s *AggregateWindowedFunctionContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *AggregateWindowedFunctionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *AggregateWindowedFunctionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *AggregateWindowedFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *AggregateWindowedFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AggregateWindowedFunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterAggregateWindowedFunction(s)
	}
}

func (s *AggregateWindowedFunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitAggregateWindowedFunction(s)
	}
}

func (p *MySqlParser) AggregateWindowedFunction() (localctx IAggregateWindowedFunctionContext) {
	this := p
	_ = this

	localctx = NewAggregateWindowedFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 602, MySqlParserRULE_aggregateWindowedFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6409)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserAVG, MySqlParserMAX, MySqlParserMIN, MySqlParserSUM:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6350)
			_la = p.GetTokenStream().LA(1)

			if !(((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSUM-272)))) != 0) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6351)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6353)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 929, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6352)

				var _lt = p.GetTokenStream().LT(1)

				localctx.(*AggregateWindowedFunctionContext).aggregator = _lt

				_la = p.GetTokenStream().LA(1)

				if !(_la == MySqlParserALL || _la == MySqlParserDISTINCT) {
					var _ri = p.GetErrorHandler().RecoverInline(p)

					localctx.(*AggregateWindowedFunctionContext).aggregator = _ri
				} else {
					p.GetErrorHandler().ReportMatch(p)
					p.Consume()
				}
			}

		}
		{
			p.SetState(6355)
			p.FunctionArg()
		}
		{
			p.SetState(6356)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(6358)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 930, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6357)
				p.OverClause()
			}

		}

	case MySqlParserCOUNT:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6360)
			p.Match(MySqlParserCOUNT)
		}
		{
			p.SetState(6361)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6369)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 932, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6362)

				var _m = p.Match(MySqlParserSTAR)

				localctx.(*AggregateWindowedFunctionContext).starArg = _m
			}

		case 2:
			p.SetState(6364)
			p.GetErrorHandler().Sync(p)

			if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 931, p.GetParserRuleContext()) == 1 {
				{
					p.SetState(6363)

					var _m = p.Match(MySqlParserALL)

					localctx.(*AggregateWindowedFunctionContext).aggregator = _m
				}

			}
			{
				p.SetState(6366)
				p.FunctionArg()
			}

		case 3:
			{
				p.SetState(6367)

				var _m = p.Match(MySqlParserDISTINCT)

				localctx.(*AggregateWindowedFunctionContext).aggregator = _m
			}
			{
				p.SetState(6368)
				p.FunctionArgs()
			}

		}
		{
			p.SetState(6371)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(6373)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 933, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6372)
				p.OverClause()
			}

		}

	case MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6375)
			_la = p.GetTokenStream().LA(1)

			if !(((_la-273)&-(0x1f+1)) == 0 && ((1<<uint((_la-273)))&((1<<(MySqlParserBIT_AND-273))|(1<<(MySqlParserBIT_OR-273))|(1<<(MySqlParserBIT_XOR-273))|(1<<(MySqlParserSTD-273))|(1<<(MySqlParserSTDDEV-273))|(1<<(MySqlParserSTDDEV_POP-273))|(1<<(MySqlParserSTDDEV_SAMP-273))|(1<<(MySqlParserVAR_POP-273))|(1<<(MySqlParserVAR_SAMP-273))|(1<<(MySqlParserVARIANCE-273)))) != 0) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6376)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6378)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 934, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6377)

				var _m = p.Match(MySqlParserALL)

				localctx.(*AggregateWindowedFunctionContext).aggregator = _m
			}

		}
		{
			p.SetState(6380)
			p.FunctionArg()
		}
		{
			p.SetState(6381)
			p.Match(MySqlParserRR_BRACKET)
		}
		p.SetState(6383)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 935, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6382)
				p.OverClause()
			}

		}

	case MySqlParserGROUP_CONCAT:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6385)
			p.Match(MySqlParserGROUP_CONCAT)
		}
		{
			p.SetState(6386)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6388)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 936, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6387)

				var _m = p.Match(MySqlParserDISTINCT)

				localctx.(*AggregateWindowedFunctionContext).aggregator = _m
			}

		}
		{
			p.SetState(6390)
			p.FunctionArgs()
		}
		p.SetState(6401)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserORDER {
			{
				p.SetState(6391)
				p.Match(MySqlParserORDER)
			}
			{
				p.SetState(6392)
				p.Match(MySqlParserBY)
			}
			{
				p.SetState(6393)
				p.OrderByExpression()
			}
			p.SetState(6398)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)

			for _la == MySqlParserCOMMA {
				{
					p.SetState(6394)
					p.Match(MySqlParserCOMMA)
				}
				{
					p.SetState(6395)
					p.OrderByExpression()
				}

				p.SetState(6400)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)
			}

		}
		p.SetState(6405)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserSEPARATOR {
			{
				p.SetState(6403)
				p.Match(MySqlParserSEPARATOR)
			}
			{
				p.SetState(6404)

				var _m = p.Match(MySqlParserSTRING_LITERAL)

				localctx.(*AggregateWindowedFunctionContext).separator = _m
			}

		}
		{
			p.SetState(6407)
			p.Match(MySqlParserRR_BRACKET)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// INonAggregateWindowedFunctionContext is an interface to support dynamic dispatch.
type INonAggregateWindowedFunctionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsNonAggregateWindowedFunctionContext differentiates from other interfaces.
	IsNonAggregateWindowedFunctionContext()
}

type NonAggregateWindowedFunctionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyNonAggregateWindowedFunctionContext() *NonAggregateWindowedFunctionContext {
	var p = new(NonAggregateWindowedFunctionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_nonAggregateWindowedFunction
	return p
}

func (*NonAggregateWindowedFunctionContext) IsNonAggregateWindowedFunctionContext() {}

func NewNonAggregateWindowedFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NonAggregateWindowedFunctionContext {
	var p = new(NonAggregateWindowedFunctionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_nonAggregateWindowedFunction

	return p
}

func (s *NonAggregateWindowedFunctionContext) GetParser() antlr.Parser { return s.parser }

func (s *NonAggregateWindowedFunctionContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *NonAggregateWindowedFunctionContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *NonAggregateWindowedFunctionContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *NonAggregateWindowedFunctionContext) OverClause() IOverClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOverClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOverClauseContext)
}

func (s *NonAggregateWindowedFunctionContext) LAG() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAG, 0)
}

func (s *NonAggregateWindowedFunctionContext) LEAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEAD, 0)
}

func (s *NonAggregateWindowedFunctionContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *NonAggregateWindowedFunctionContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *NonAggregateWindowedFunctionContext) AllDecimalLiteral() []IDecimalLiteralContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem())
	var tst = make([]IDecimalLiteralContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IDecimalLiteralContext)
		}
	}

	return tst
}

func (s *NonAggregateWindowedFunctionContext) DecimalLiteral(i int) IDecimalLiteralContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IDecimalLiteralContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IDecimalLiteralContext)
}

func (s *NonAggregateWindowedFunctionContext) FIRST_VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST_VALUE, 0)
}

func (s *NonAggregateWindowedFunctionContext) LAST_VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAST_VALUE, 0)
}

func (s *NonAggregateWindowedFunctionContext) CUME_DIST() antlr.TerminalNode {
	return s.GetToken(MySqlParserCUME_DIST, 0)
}

func (s *NonAggregateWindowedFunctionContext) DENSE_RANK() antlr.TerminalNode {
	return s.GetToken(MySqlParserDENSE_RANK, 0)
}

func (s *NonAggregateWindowedFunctionContext) PERCENT_RANK() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERCENT_RANK, 0)
}

func (s *NonAggregateWindowedFunctionContext) RANK() antlr.TerminalNode {
	return s.GetToken(MySqlParserRANK, 0)
}

func (s *NonAggregateWindowedFunctionContext) ROW_NUMBER() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW_NUMBER, 0)
}

func (s *NonAggregateWindowedFunctionContext) NTH_VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNTH_VALUE, 0)
}

func (s *NonAggregateWindowedFunctionContext) NTILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNTILE, 0)
}

func (s *NonAggregateWindowedFunctionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NonAggregateWindowedFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *NonAggregateWindowedFunctionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNonAggregateWindowedFunction(s)
	}
}

func (s *NonAggregateWindowedFunctionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNonAggregateWindowedFunction(s)
	}
}

func (p *MySqlParser) NonAggregateWindowedFunction() (localctx INonAggregateWindowedFunctionContext) {
	this := p
	_ = this

	localctx = NewNonAggregateWindowedFunctionContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 604, MySqlParserRULE_nonAggregateWindowedFunction)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6449)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserLAG, MySqlParserLEAD:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6411)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserLAG || _la == MySqlParserLEAD) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6412)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6413)
			p.expression(0)
		}
		p.SetState(6416)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 941, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6414)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6415)
				p.DecimalLiteral()
			}

		}
		p.SetState(6420)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserCOMMA {
			{
				p.SetState(6418)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6419)
				p.DecimalLiteral()
			}

		}
		{
			p.SetState(6422)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(6423)
			p.OverClause()
		}

	case MySqlParserFIRST_VALUE, MySqlParserLAST_VALUE:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6425)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFIRST_VALUE || _la == MySqlParserLAST_VALUE) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6426)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6427)
			p.expression(0)
		}
		{
			p.SetState(6428)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(6429)
			p.OverClause()
		}

	case MySqlParserCUME_DIST, MySqlParserDENSE_RANK, MySqlParserPERCENT_RANK, MySqlParserRANK, MySqlParserROW_NUMBER:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6431)
			_la = p.GetTokenStream().LA(1)

			if !(((_la-277)&-(0x1f+1)) == 0 && ((1<<uint((_la-277)))&((1<<(MySqlParserCUME_DIST-277))|(1<<(MySqlParserDENSE_RANK-277))|(1<<(MySqlParserPERCENT_RANK-277))|(1<<(MySqlParserRANK-277))|(1<<(MySqlParserROW_NUMBER-277)))) != 0) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6432)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6433)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(6434)
			p.OverClause()
		}

	case MySqlParserNTH_VALUE:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6435)
			p.Match(MySqlParserNTH_VALUE)
		}
		{
			p.SetState(6436)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6437)
			p.expression(0)
		}
		{
			p.SetState(6438)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6439)
			p.DecimalLiteral()
		}
		{
			p.SetState(6440)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(6441)
			p.OverClause()
		}

	case MySqlParserNTILE:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6443)
			p.Match(MySqlParserNTILE)
		}
		{
			p.SetState(6444)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6445)
			p.DecimalLiteral()
		}
		{
			p.SetState(6446)
			p.Match(MySqlParserRR_BRACKET)
		}
		{
			p.SetState(6447)
			p.OverClause()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IOverClauseContext is an interface to support dynamic dispatch.
type IOverClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsOverClauseContext differentiates from other interfaces.
	IsOverClauseContext()
}

type OverClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyOverClauseContext() *OverClauseContext {
	var p = new(OverClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_overClause
	return p
}

func (*OverClauseContext) IsOverClauseContext() {}

func NewOverClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OverClauseContext {
	var p = new(OverClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_overClause

	return p
}

func (s *OverClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *OverClauseContext) OVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserOVER, 0)
}

func (s *OverClauseContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *OverClauseContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *OverClauseContext) WindowName() IWindowNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWindowNameContext)
}

func (s *OverClauseContext) WindowSpec() IWindowSpecContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowSpecContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWindowSpecContext)
}

func (s *OverClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *OverClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *OverClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterOverClause(s)
	}
}

func (s *OverClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitOverClause(s)
	}
}

func (p *MySqlParser) OverClause() (localctx IOverClauseContext) {
	this := p
	_ = this

	localctx = NewOverClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 606, MySqlParserRULE_overClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6451)
		p.Match(MySqlParserOVER)
	}
	p.SetState(6458)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserLR_BRACKET:
		{
			p.SetState(6452)
			p.Match(MySqlParserLR_BRACKET)
		}
		p.SetState(6454)
		p.GetErrorHandler().Sync(p)

		if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 944, p.GetParserRuleContext()) == 1 {
			{
				p.SetState(6453)
				p.WindowSpec()
			}

		}
		{
			p.SetState(6456)
			p.Match(MySqlParserRR_BRACKET)
		}

	case MySqlParserCURRENT, MySqlParserDATABASE, MySqlParserDIAGNOSTICS, MySqlParserEXCEPT, MySqlParserGROUP, MySqlParserLEFT, MySqlParserNUMBER, MySqlParserORDER, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserSTACKED, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserDATETIME, MySqlParserYEAR, MySqlParserBINARY, MySqlParserTEXT, MySqlParserENUM, MySqlParserSERIAL, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserAVG, MySqlParserBIT_AND, MySqlParserBIT_OR, MySqlParserBIT_XOR, MySqlParserCOUNT, MySqlParserGROUP_CONCAT, MySqlParserMAX, MySqlParserMIN, MySqlParserSTD, MySqlParserSTDDEV, MySqlParserSTDDEV_POP, MySqlParserSTDDEV_SAMP, MySqlParserSUM, MySqlParserVAR_POP, MySqlParserVAR_SAMP, MySqlParserVARIANCE, MySqlParserPOSITION, MySqlParserACCOUNT, MySqlParserACTION, MySqlParserAFTER, MySqlParserAGGREGATE, MySqlParserALGORITHM, MySqlParserANY, MySqlParserAT, MySqlParserAUTHORS, MySqlParserAUTOCOMMIT, MySqlParserAUTOEXTEND_SIZE, MySqlParserAUTO_INCREMENT, MySqlParserAVG_ROW_LENGTH, MySqlParserBEGIN, MySqlParserBINLOG, MySqlParserBIT, MySqlParserBLOCK, MySqlParserBOOL, MySqlParserBOOLEAN, MySqlParserBTREE, MySqlParserCACHE, MySqlParserCASCADED, MySqlParserCHAIN, MySqlParserCHANGED, MySqlParserCHANNEL, MySqlParserCHECKSUM, MySqlParserPAGE_CHECKSUM, MySqlParserCIPHER, MySqlParserCLASS_ORIGIN, MySqlParserCLIENT, MySqlParserCLOSE, MySqlParserCOALESCE, MySqlParserCODE, MySqlParserCOLUMNS, MySqlParserCOLUMN_FORMAT, MySqlParserCOLUMN_NAME, MySqlParserCOMMENT, MySqlParserCOMMIT, MySqlParserCOMPACT, MySqlParserCOMPLETION, MySqlParserCOMPRESSED, MySqlParserCOMPRESSION, MySqlParserCONCURRENT, MySqlParserCONNECT, MySqlParserCONNECTION, MySqlParserCONSISTENT, MySqlParserCONSTRAINT_CATALOG, MySqlParserCONSTRAINT_SCHEMA, MySqlParserCONSTRAINT_NAME, MySqlParserCONTAINS, MySqlParserCONTEXT, MySqlParserCONTRIBUTORS, MySqlParserCOPY, MySqlParserCPU, MySqlParserCURSOR_NAME, MySqlParserDATA, MySqlParserDATAFILE, MySqlParserDEALLOCATE, MySqlParserDEFAULT_AUTH, MySqlParserDEFINER, MySqlParserDELAY_KEY_WRITE, MySqlParserDES_KEY_FILE, MySqlParserDIRECTORY, MySqlParserDISABLE, MySqlParserDISCARD, MySqlParserDISK, MySqlParserDO, MySqlParserDUMPFILE, MySqlParserDUPLICATE, MySqlParserDYNAMIC, MySqlParserENABLE, MySqlParserENCRYPTION, MySqlParserEND, MySqlParserENDS, MySqlParserENGINE, MySqlParserENGINES, MySqlParserERROR, MySqlParserERRORS, MySqlParserESCAPE, MySqlParserEVEN, MySqlParserEVENT, MySqlParserEVENTS, MySqlParserEVERY, MySqlParserEXCHANGE, MySqlParserEXCLUSIVE, MySqlParserEXPIRE, MySqlParserEXPORT, MySqlParserEXTENDED, MySqlParserEXTENT_SIZE, MySqlParserFAST, MySqlParserFAULTS, MySqlParserFIELDS, MySqlParserFILE_BLOCK_SIZE, MySqlParserFILTER, MySqlParserFIRST, MySqlParserFIXED, MySqlParserFLUSH, MySqlParserFOLLOWS, MySqlParserFOUND, MySqlParserFULL, MySqlParserFUNCTION, MySqlParserGENERAL, MySqlParserGLOBAL, MySqlParserGRANTS, MySqlParserGROUP_REPLICATION, MySqlParserHANDLER, MySqlParserHASH, MySqlParserHELP, MySqlParserHOST, MySqlParserHOSTS, MySqlParserIDENTIFIED, MySqlParserIGNORE_SERVER_IDS, MySqlParserIMPORT, MySqlParserINDEXES, MySqlParserINITIAL_SIZE, MySqlParserINPLACE, MySqlParserINSERT_METHOD, MySqlParserINSTALL, MySqlParserINSTANCE, MySqlParserINVISIBLE, MySqlParserINVOKER, MySqlParserIO, MySqlParserIO_THREAD, MySqlParserIPC, MySqlParserISOLATION, MySqlParserISSUER, MySqlParserJSON, MySqlParserKEY_BLOCK_SIZE, MySqlParserLANGUAGE, MySqlParserLAST, MySqlParserLEAVES, MySqlParserLESS, MySqlParserLEVEL, MySqlParserLIST, MySqlParserLOCAL, MySqlParserLOGFILE, MySqlParserLOGS, MySqlParserMASTER, MySqlParserMASTER_AUTO_POSITION, MySqlParserMASTER_CONNECT_RETRY, MySqlParserMASTER_DELAY, MySqlParserMASTER_HEARTBEAT_PERIOD, MySqlParserMASTER_HOST, MySqlParserMASTER_LOG_FILE, MySqlParserMASTER_LOG_POS, MySqlParserMASTER_PASSWORD, MySqlParserMASTER_PORT, MySqlParserMASTER_RETRY_COUNT, MySqlParserMASTER_SSL, MySqlParserMASTER_SSL_CA, MySqlParserMASTER_SSL_CAPATH, MySqlParserMASTER_SSL_CERT, MySqlParserMASTER_SSL_CIPHER, MySqlParserMASTER_SSL_CRL, MySqlParserMASTER_SSL_CRLPATH, MySqlParserMASTER_SSL_KEY, MySqlParserMASTER_TLS_VERSION, MySqlParserMASTER_USER, MySqlParserMAX_CONNECTIONS_PER_HOUR, MySqlParserMAX_QUERIES_PER_HOUR, MySqlParserMAX_ROWS, MySqlParserMAX_SIZE, MySqlParserMAX_UPDATES_PER_HOUR, MySqlParserMAX_USER_CONNECTIONS, MySqlParserMEDIUM, MySqlParserMEMBER, MySqlParserMERGE, MySqlParserMESSAGE_TEXT, MySqlParserMID, MySqlParserMIGRATE, MySqlParserMIN_ROWS, MySqlParserMODE, MySqlParserMODIFY, MySqlParserMUTEX, MySqlParserMYSQL, MySqlParserMYSQL_ERRNO, MySqlParserNAME, MySqlParserNAMES, MySqlParserNCHAR, MySqlParserNEVER, MySqlParserNEXT, MySqlParserNO, MySqlParserNODEGROUP, MySqlParserNONE, MySqlParserODBC, MySqlParserOFFLINE, MySqlParserOFFSET, MySqlParserOF, MySqlParserOJ, MySqlParserOLD_PASSWORD, MySqlParserONE, MySqlParserONLINE, MySqlParserONLY, MySqlParserOPEN, MySqlParserOPTIMIZER_COSTS, MySqlParserOPTIONS, MySqlParserOWNER, MySqlParserPACK_KEYS, MySqlParserPAGE, MySqlParserPARSER, MySqlParserPARTIAL, MySqlParserPARTITIONING, MySqlParserPARTITIONS, MySqlParserPASSWORD, MySqlParserPHASE, MySqlParserPLUGIN, MySqlParserPLUGIN_DIR, MySqlParserPLUGINS, MySqlParserPORT, MySqlParserPRECEDES, MySqlParserPREPARE, MySqlParserPRESERVE, MySqlParserPREV, MySqlParserPROCESSLIST, MySqlParserPROFILE, MySqlParserPROFILES, MySqlParserPROXY, MySqlParserQUERY, MySqlParserQUICK, MySqlParserREBUILD, MySqlParserRECOVER, MySqlParserREDO_BUFFER_SIZE, MySqlParserREDUNDANT, MySqlParserRELAY, MySqlParserRELAY_LOG_FILE, MySqlParserRELAY_LOG_POS, MySqlParserRELAYLOG, MySqlParserREMOVE, MySqlParserREORGANIZE, MySqlParserREPAIR, MySqlParserREPLICATE_DO_DB, MySqlParserREPLICATE_DO_TABLE, MySqlParserREPLICATE_IGNORE_DB, MySqlParserREPLICATE_IGNORE_TABLE, MySqlParserREPLICATE_REWRITE_DB, MySqlParserREPLICATE_WILD_DO_TABLE, MySqlParserREPLICATE_WILD_IGNORE_TABLE, MySqlParserREPLICATION, MySqlParserRESET, MySqlParserRESUME, MySqlParserRETURNED_SQLSTATE, MySqlParserRETURNS, MySqlParserROLE, MySqlParserROLLBACK, MySqlParserROLLUP, MySqlParserROTATE, MySqlParserROW, MySqlParserROWS, MySqlParserROW_FORMAT, MySqlParserSAVEPOINT, MySqlParserSCHEDULE, MySqlParserSECURITY, MySqlParserSERVER, MySqlParserSESSION, MySqlParserSHARE, MySqlParserSHARED, MySqlParserSIGNED, MySqlParserSIMPLE, MySqlParserSLAVE, MySqlParserSLOW, MySqlParserSNAPSHOT, MySqlParserSOCKET, MySqlParserSOME, MySqlParserSONAME, MySqlParserSOUNDS, MySqlParserSOURCE, MySqlParserSQL_AFTER_GTIDS, MySqlParserSQL_AFTER_MTS_GAPS, MySqlParserSQL_BEFORE_GTIDS, MySqlParserSQL_BUFFER_RESULT, MySqlParserSQL_CACHE, MySqlParserSQL_NO_CACHE, MySqlParserSQL_THREAD, MySqlParserSTART, MySqlParserSTARTS, MySqlParserSTATS_AUTO_RECALC, MySqlParserSTATS_PERSISTENT, MySqlParserSTATS_SAMPLE_PAGES, MySqlParserSTATUS, MySqlParserSTOP, MySqlParserSTORAGE, MySqlParserSTRING, MySqlParserSUBCLASS_ORIGIN, MySqlParserSUBJECT, MySqlParserSUBPARTITION, MySqlParserSUBPARTITIONS, MySqlParserSUSPEND, MySqlParserSWAPS, MySqlParserSWITCHES, MySqlParserTABLE_NAME, MySqlParserTABLESPACE, MySqlParserTEMPORARY, MySqlParserTEMPTABLE, MySqlParserTHAN, MySqlParserTRADITIONAL, MySqlParserTRANSACTION, MySqlParserTRANSACTIONAL, MySqlParserTRIGGERS, MySqlParserTRUNCATE, MySqlParserUNDEFINED, MySqlParserUNDOFILE, MySqlParserUNDO_BUFFER_SIZE, MySqlParserUNINSTALL, MySqlParserUNKNOWN, MySqlParserUNTIL, MySqlParserUPGRADE, MySqlParserUSER, MySqlParserUSE_FRM, MySqlParserUSER_RESOURCES, MySqlParserVALIDATION, MySqlParserVALUE, MySqlParserVARIABLES, MySqlParserVIEW, MySqlParserVISIBLE, MySqlParserWAIT, MySqlParserWARNINGS, MySqlParserWITHOUT, MySqlParserWORK, MySqlParserWRAPPER, MySqlParserX509, MySqlParserXA, MySqlParserXML, MySqlParserEUR, MySqlParserUSA, MySqlParserJIS, MySqlParserISO, MySqlParserINTERNAL, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserTABLES, MySqlParserROUTINE, MySqlParserEXECUTE, MySqlParserFILE, MySqlParserPROCESS, MySqlParserRELOAD, MySqlParserSHUTDOWN, MySqlParserSUPER, MySqlParserPRIVILEGES, MySqlParserAUDIT_ADMIN, MySqlParserBACKUP_ADMIN, MySqlParserBINLOG_ADMIN, MySqlParserBINLOG_ENCRYPTION_ADMIN, MySqlParserCLONE_ADMIN, MySqlParserCONNECTION_ADMIN, MySqlParserENCRYPTION_KEY_ADMIN, MySqlParserFIREWALL_ADMIN, MySqlParserFIREWALL_USER, MySqlParserGROUP_REPLICATION_ADMIN, MySqlParserINNODB_REDO_LOG_ARCHIVE, MySqlParserNDB_STORED_USER, MySqlParserPERSIST_RO_VARIABLES_ADMIN, MySqlParserREPLICATION_APPLIER, MySqlParserREPLICATION_SLAVE_ADMIN, MySqlParserRESOURCE_GROUP_ADMIN, MySqlParserRESOURCE_GROUP_USER, MySqlParserROLE_ADMIN, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserSET_USER_ID, MySqlParserSHOW_ROUTINE, MySqlParserSYSTEM_VARIABLES_ADMIN, MySqlParserTABLE_ENCRYPTION_ADMIN, MySqlParserVERSION_TOKEN_ADMIN, MySqlParserXA_RECOVER_ADMIN, MySqlParserARMSCII8, MySqlParserASCII, MySqlParserBIG5, MySqlParserCP1250, MySqlParserCP1251, MySqlParserCP1256, MySqlParserCP1257, MySqlParserCP850, MySqlParserCP852, MySqlParserCP866, MySqlParserCP932, MySqlParserDEC8, MySqlParserEUCJPMS, MySqlParserEUCKR, MySqlParserGB18030, MySqlParserGB2312, MySqlParserGBK, MySqlParserGEOSTD8, MySqlParserGREEK, MySqlParserHEBREW, MySqlParserHP8, MySqlParserKEYBCS2, MySqlParserKOI8R, MySqlParserKOI8U, MySqlParserLATIN1, MySqlParserLATIN2, MySqlParserLATIN5, MySqlParserLATIN7, MySqlParserMACCE, MySqlParserMACROMAN, MySqlParserSJIS, MySqlParserSWE7, MySqlParserTIS620, MySqlParserUCS2, MySqlParserUJIS, MySqlParserUTF16, MySqlParserUTF16LE, MySqlParserUTF32, MySqlParserUTF8, MySqlParserUTF8MB3, MySqlParserUTF8MB4, MySqlParserARCHIVE, MySqlParserBLACKHOLE, MySqlParserCSV, MySqlParserFEDERATED, MySqlParserINNODB, MySqlParserMEMORY, MySqlParserMRG_MYISAM, MySqlParserMYISAM, MySqlParserNDB, MySqlParserNDBCLUSTER, MySqlParserPERFORMANCE_SCHEMA, MySqlParserTOKUDB, MySqlParserREPEATABLE, MySqlParserCOMMITTED, MySqlParserUNCOMMITTED, MySqlParserSERIALIZABLE, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCATALOG_NAME, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSCHEMA_NAME, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD, MySqlParserCHARSET_REVERSE_QOUTE_STRING, MySqlParserSTRING_LITERAL, MySqlParserID, MySqlParserREVERSE_QUOTE_ID, MySqlParserOPTIONAL:
		{
			p.SetState(6457)
			p.WindowName()
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IWindowSpecContext is an interface to support dynamic dispatch.
type IWindowSpecContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsWindowSpecContext differentiates from other interfaces.
	IsWindowSpecContext()
}

type WindowSpecContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyWindowSpecContext() *WindowSpecContext {
	var p = new(WindowSpecContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_windowSpec
	return p
}

func (*WindowSpecContext) IsWindowSpecContext() {}

func NewWindowSpecContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WindowSpecContext {
	var p = new(WindowSpecContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_windowSpec

	return p
}

func (s *WindowSpecContext) GetParser() antlr.Parser { return s.parser }

func (s *WindowSpecContext) WindowName() IWindowNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IWindowNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IWindowNameContext)
}

func (s *WindowSpecContext) PartitionClause() IPartitionClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPartitionClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPartitionClauseContext)
}

func (s *WindowSpecContext) OrderByClause() IOrderByClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IOrderByClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IOrderByClauseContext)
}

func (s *WindowSpecContext) FrameClause() IFrameClauseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameClauseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFrameClauseContext)
}

func (s *WindowSpecContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WindowSpecContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *WindowSpecContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWindowSpec(s)
	}
}

func (s *WindowSpecContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWindowSpec(s)
	}
}

func (p *MySqlParser) WindowSpec() (localctx IWindowSpecContext) {
	this := p
	_ = this

	localctx = NewWindowSpecContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 608, MySqlParserRULE_windowSpec)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6461)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 946, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(6460)
			p.WindowName()
		}

	}
	p.SetState(6464)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserPARTITION {
		{
			p.SetState(6463)
			p.PartitionClause()
		}

	}
	p.SetState(6467)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserORDER {
		{
			p.SetState(6466)
			p.OrderByClause()
		}

	}
	p.SetState(6470)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	if _la == MySqlParserRANGE || _la == MySqlParserROWS {
		{
			p.SetState(6469)
			p.FrameClause()
		}

	}

	return localctx
}

// IWindowNameContext is an interface to support dynamic dispatch.
type IWindowNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsWindowNameContext differentiates from other interfaces.
	IsWindowNameContext()
}

type WindowNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyWindowNameContext() *WindowNameContext {
	var p = new(WindowNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_windowName
	return p
}

func (*WindowNameContext) IsWindowNameContext() {}

func NewWindowNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WindowNameContext {
	var p = new(WindowNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_windowName

	return p
}

func (s *WindowNameContext) GetParser() antlr.Parser { return s.parser }

func (s *WindowNameContext) Uid() IUidContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUidContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUidContext)
}

func (s *WindowNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *WindowNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *WindowNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterWindowName(s)
	}
}

func (s *WindowNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitWindowName(s)
	}
}

func (p *MySqlParser) WindowName() (localctx IWindowNameContext) {
	this := p
	_ = this

	localctx = NewWindowNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 610, MySqlParserRULE_windowName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6472)
		p.Uid()
	}

	return localctx
}

// IFrameClauseContext is an interface to support dynamic dispatch.
type IFrameClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFrameClauseContext differentiates from other interfaces.
	IsFrameClauseContext()
}

type FrameClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFrameClauseContext() *FrameClauseContext {
	var p = new(FrameClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_frameClause
	return p
}

func (*FrameClauseContext) IsFrameClauseContext() {}

func NewFrameClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FrameClauseContext {
	var p = new(FrameClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_frameClause

	return p
}

func (s *FrameClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *FrameClauseContext) FrameUnits() IFrameUnitsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameUnitsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFrameUnitsContext)
}

func (s *FrameClauseContext) FrameExtent() IFrameExtentContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameExtentContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFrameExtentContext)
}

func (s *FrameClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FrameClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FrameClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFrameClause(s)
	}
}

func (s *FrameClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFrameClause(s)
	}
}

func (p *MySqlParser) FrameClause() (localctx IFrameClauseContext) {
	this := p
	_ = this

	localctx = NewFrameClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 612, MySqlParserRULE_frameClause)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6474)
		p.FrameUnits()
	}
	{
		p.SetState(6475)
		p.FrameExtent()
	}

	return localctx
}

// IFrameUnitsContext is an interface to support dynamic dispatch.
type IFrameUnitsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFrameUnitsContext differentiates from other interfaces.
	IsFrameUnitsContext()
}

type FrameUnitsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFrameUnitsContext() *FrameUnitsContext {
	var p = new(FrameUnitsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_frameUnits
	return p
}

func (*FrameUnitsContext) IsFrameUnitsContext() {}

func NewFrameUnitsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FrameUnitsContext {
	var p = new(FrameUnitsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_frameUnits

	return p
}

func (s *FrameUnitsContext) GetParser() antlr.Parser { return s.parser }

func (s *FrameUnitsContext) ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserROWS, 0)
}

func (s *FrameUnitsContext) RANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRANGE, 0)
}

func (s *FrameUnitsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FrameUnitsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FrameUnitsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFrameUnits(s)
	}
}

func (s *FrameUnitsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFrameUnits(s)
	}
}

func (p *MySqlParser) FrameUnits() (localctx IFrameUnitsContext) {
	this := p
	_ = this

	localctx = NewFrameUnitsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 614, MySqlParserRULE_frameUnits)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6477)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserRANGE || _la == MySqlParserROWS) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IFrameExtentContext is an interface to support dynamic dispatch.
type IFrameExtentContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFrameExtentContext differentiates from other interfaces.
	IsFrameExtentContext()
}

type FrameExtentContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFrameExtentContext() *FrameExtentContext {
	var p = new(FrameExtentContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_frameExtent
	return p
}

func (*FrameExtentContext) IsFrameExtentContext() {}

func NewFrameExtentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FrameExtentContext {
	var p = new(FrameExtentContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_frameExtent

	return p
}

func (s *FrameExtentContext) GetParser() antlr.Parser { return s.parser }

func (s *FrameExtentContext) FrameRange() IFrameRangeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameRangeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFrameRangeContext)
}

func (s *FrameExtentContext) FrameBetween() IFrameBetweenContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameBetweenContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFrameBetweenContext)
}

func (s *FrameExtentContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FrameExtentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FrameExtentContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFrameExtent(s)
	}
}

func (s *FrameExtentContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFrameExtent(s)
	}
}

func (p *MySqlParser) FrameExtent() (localctx IFrameExtentContext) {
	this := p
	_ = this

	localctx = NewFrameExtentContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 616, MySqlParserRULE_frameExtent)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6481)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 950, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6479)
			p.FrameRange()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6480)
			p.FrameBetween()
		}

	}

	return localctx
}

// IFrameBetweenContext is an interface to support dynamic dispatch.
type IFrameBetweenContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFrameBetweenContext differentiates from other interfaces.
	IsFrameBetweenContext()
}

type FrameBetweenContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFrameBetweenContext() *FrameBetweenContext {
	var p = new(FrameBetweenContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_frameBetween
	return p
}

func (*FrameBetweenContext) IsFrameBetweenContext() {}

func NewFrameBetweenContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FrameBetweenContext {
	var p = new(FrameBetweenContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_frameBetween

	return p
}

func (s *FrameBetweenContext) GetParser() antlr.Parser { return s.parser }

func (s *FrameBetweenContext) BETWEEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBETWEEN, 0)
}

func (s *FrameBetweenContext) AllFrameRange() []IFrameRangeContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFrameRangeContext)(nil)).Elem())
	var tst = make([]IFrameRangeContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFrameRangeContext)
		}
	}

	return tst
}

func (s *FrameBetweenContext) FrameRange(i int) IFrameRangeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFrameRangeContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFrameRangeContext)
}

func (s *FrameBetweenContext) AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, 0)
}

func (s *FrameBetweenContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FrameBetweenContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FrameBetweenContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFrameBetween(s)
	}
}

func (s *FrameBetweenContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFrameBetween(s)
	}
}

func (p *MySqlParser) FrameBetween() (localctx IFrameBetweenContext) {
	this := p
	_ = this

	localctx = NewFrameBetweenContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 618, MySqlParserRULE_frameBetween)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6483)
		p.Match(MySqlParserBETWEEN)
	}
	{
		p.SetState(6484)
		p.FrameRange()
	}
	{
		p.SetState(6485)
		p.Match(MySqlParserAND)
	}
	{
		p.SetState(6486)
		p.FrameRange()
	}

	return localctx
}

// IFrameRangeContext is an interface to support dynamic dispatch.
type IFrameRangeContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFrameRangeContext differentiates from other interfaces.
	IsFrameRangeContext()
}

type FrameRangeContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFrameRangeContext() *FrameRangeContext {
	var p = new(FrameRangeContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_frameRange
	return p
}

func (*FrameRangeContext) IsFrameRangeContext() {}

func NewFrameRangeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FrameRangeContext {
	var p = new(FrameRangeContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_frameRange

	return p
}

func (s *FrameRangeContext) GetParser() antlr.Parser { return s.parser }

func (s *FrameRangeContext) CURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT, 0)
}

func (s *FrameRangeContext) ROW() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW, 0)
}

func (s *FrameRangeContext) UNBOUNDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNBOUNDED, 0)
}

func (s *FrameRangeContext) PRECEDING() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRECEDING, 0)
}

func (s *FrameRangeContext) FOLLOWING() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOLLOWING, 0)
}

func (s *FrameRangeContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *FrameRangeContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FrameRangeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FrameRangeContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFrameRange(s)
	}
}

func (s *FrameRangeContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFrameRange(s)
	}
}

func (p *MySqlParser) FrameRange() (localctx IFrameRangeContext) {
	this := p
	_ = this

	localctx = NewFrameRangeContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 620, MySqlParserRULE_frameRange)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6495)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 951, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6488)
			p.Match(MySqlParserCURRENT)
		}
		{
			p.SetState(6489)
			p.Match(MySqlParserROW)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6490)
			p.Match(MySqlParserUNBOUNDED)
		}
		{
			p.SetState(6491)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFOLLOWING || _la == MySqlParserPRECEDING) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6492)
			p.expression(0)
		}
		{
			p.SetState(6493)
			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFOLLOWING || _la == MySqlParserPRECEDING) {
				p.GetErrorHandler().RecoverInline(p)
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	}

	return localctx
}

// IPartitionClauseContext is an interface to support dynamic dispatch.
type IPartitionClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPartitionClauseContext differentiates from other interfaces.
	IsPartitionClauseContext()
}

type PartitionClauseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPartitionClauseContext() *PartitionClauseContext {
	var p = new(PartitionClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_partitionClause
	return p
}

func (*PartitionClauseContext) IsPartitionClauseContext() {}

func NewPartitionClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PartitionClauseContext {
	var p = new(PartitionClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_partitionClause

	return p
}

func (s *PartitionClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *PartitionClauseContext) PARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITION, 0)
}

func (s *PartitionClauseContext) BY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBY, 0)
}

func (s *PartitionClauseContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *PartitionClauseContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *PartitionClauseContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *PartitionClauseContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *PartitionClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PartitionClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PartitionClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPartitionClause(s)
	}
}

func (s *PartitionClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPartitionClause(s)
	}
}

func (p *MySqlParser) PartitionClause() (localctx IPartitionClauseContext) {
	this := p
	_ = this

	localctx = NewPartitionClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 622, MySqlParserRULE_partitionClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6497)
		p.Match(MySqlParserPARTITION)
	}
	{
		p.SetState(6498)
		p.Match(MySqlParserBY)
	}
	{
		p.SetState(6499)
		p.expression(0)
	}
	p.SetState(6504)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6500)
			p.Match(MySqlParserCOMMA)
		}
		{
			p.SetState(6501)
			p.expression(0)
		}

		p.SetState(6506)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IScalarFunctionNameContext is an interface to support dynamic dispatch.
type IScalarFunctionNameContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsScalarFunctionNameContext differentiates from other interfaces.
	IsScalarFunctionNameContext()
}

type ScalarFunctionNameContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyScalarFunctionNameContext() *ScalarFunctionNameContext {
	var p = new(ScalarFunctionNameContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_scalarFunctionName
	return p
}

func (*ScalarFunctionNameContext) IsScalarFunctionNameContext() {}

func NewScalarFunctionNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ScalarFunctionNameContext {
	var p = new(ScalarFunctionNameContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_scalarFunctionName

	return p
}

func (s *ScalarFunctionNameContext) GetParser() antlr.Parser { return s.parser }

func (s *ScalarFunctionNameContext) FunctionNameBase() IFunctionNameBaseContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionNameBaseContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionNameBaseContext)
}

func (s *ScalarFunctionNameContext) ASCII() antlr.TerminalNode {
	return s.GetToken(MySqlParserASCII, 0)
}

func (s *ScalarFunctionNameContext) CURDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURDATE, 0)
}

func (s *ScalarFunctionNameContext) CURRENT_DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_DATE, 0)
}

func (s *ScalarFunctionNameContext) CURRENT_TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIME, 0)
}

func (s *ScalarFunctionNameContext) CURRENT_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT_TIMESTAMP, 0)
}

func (s *ScalarFunctionNameContext) CURTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURTIME, 0)
}

func (s *ScalarFunctionNameContext) DATE_ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE_ADD, 0)
}

func (s *ScalarFunctionNameContext) DATE_SUB() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE_SUB, 0)
}

func (s *ScalarFunctionNameContext) IF() antlr.TerminalNode {
	return s.GetToken(MySqlParserIF, 0)
}

func (s *ScalarFunctionNameContext) INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT, 0)
}

func (s *ScalarFunctionNameContext) LOCALTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCALTIME, 0)
}

func (s *ScalarFunctionNameContext) LOCALTIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCALTIMESTAMP, 0)
}

func (s *ScalarFunctionNameContext) MID() antlr.TerminalNode {
	return s.GetToken(MySqlParserMID, 0)
}

func (s *ScalarFunctionNameContext) NOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOW, 0)
}

func (s *ScalarFunctionNameContext) REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLACE, 0)
}

func (s *ScalarFunctionNameContext) SUBSTR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBSTR, 0)
}

func (s *ScalarFunctionNameContext) SUBSTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBSTRING, 0)
}

func (s *ScalarFunctionNameContext) SYSDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSYSDATE, 0)
}

func (s *ScalarFunctionNameContext) TRIM() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIM, 0)
}

func (s *ScalarFunctionNameContext) UTC_DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTC_DATE, 0)
}

func (s *ScalarFunctionNameContext) UTC_TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTC_TIME, 0)
}

func (s *ScalarFunctionNameContext) UTC_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTC_TIMESTAMP, 0)
}

func (s *ScalarFunctionNameContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ScalarFunctionNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ScalarFunctionNameContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterScalarFunctionName(s)
	}
}

func (s *ScalarFunctionNameContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitScalarFunctionName(s)
	}
}

func (p *MySqlParser) ScalarFunctionName() (localctx IScalarFunctionNameContext) {
	this := p
	_ = this

	localctx = NewScalarFunctionNameContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 624, MySqlParserRULE_scalarFunctionName)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6530)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserDATABASE, MySqlParserLEFT, MySqlParserRIGHT, MySqlParserSCHEMA, MySqlParserDATE, MySqlParserTIME, MySqlParserTIMESTAMP, MySqlParserYEAR, MySqlParserJSON_ARRAY, MySqlParserJSON_OBJECT, MySqlParserJSON_QUOTE, MySqlParserJSON_CONTAINS, MySqlParserJSON_CONTAINS_PATH, MySqlParserJSON_EXTRACT, MySqlParserJSON_KEYS, MySqlParserJSON_OVERLAPS, MySqlParserJSON_SEARCH, MySqlParserJSON_VALUE, MySqlParserJSON_ARRAY_APPEND, MySqlParserJSON_ARRAY_INSERT, MySqlParserJSON_INSERT, MySqlParserJSON_MERGE, MySqlParserJSON_MERGE_PATCH, MySqlParserJSON_MERGE_PRESERVE, MySqlParserJSON_REMOVE, MySqlParserJSON_REPLACE, MySqlParserJSON_SET, MySqlParserJSON_UNQUOTE, MySqlParserJSON_DEPTH, MySqlParserJSON_LENGTH, MySqlParserJSON_TYPE, MySqlParserJSON_VALID, MySqlParserJSON_TABLE, MySqlParserJSON_SCHEMA_VALID, MySqlParserJSON_SCHEMA_VALIDATION_REPORT, MySqlParserJSON_PRETTY, MySqlParserJSON_STORAGE_FREE, MySqlParserJSON_STORAGE_SIZE, MySqlParserJSON_ARRAYAGG, MySqlParserJSON_OBJECTAGG, MySqlParserCOUNT, MySqlParserPOSITION, MySqlParserINVISIBLE, MySqlParserVISIBLE, MySqlParserQUARTER, MySqlParserMONTH, MySqlParserDAY, MySqlParserHOUR, MySqlParserMINUTE, MySqlParserWEEK, MySqlParserSECOND, MySqlParserMICROSECOND, MySqlParserSESSION_VARIABLES_ADMIN, MySqlParserGEOMETRYCOLLECTION, MySqlParserLINESTRING, MySqlParserMULTILINESTRING, MySqlParserMULTIPOINT, MySqlParserMULTIPOLYGON, MySqlParserPOINT, MySqlParserPOLYGON, MySqlParserABS, MySqlParserACOS, MySqlParserADDDATE, MySqlParserADDTIME, MySqlParserAES_DECRYPT, MySqlParserAES_ENCRYPT, MySqlParserAREA, MySqlParserASBINARY, MySqlParserASIN, MySqlParserASTEXT, MySqlParserASWKB, MySqlParserASWKT, MySqlParserASYMMETRIC_DECRYPT, MySqlParserASYMMETRIC_DERIVE, MySqlParserASYMMETRIC_ENCRYPT, MySqlParserASYMMETRIC_SIGN, MySqlParserASYMMETRIC_VERIFY, MySqlParserATAN, MySqlParserATAN2, MySqlParserBENCHMARK, MySqlParserBIN, MySqlParserBIT_COUNT, MySqlParserBIT_LENGTH, MySqlParserBUFFER, MySqlParserCEIL, MySqlParserCEILING, MySqlParserCENTROID, MySqlParserCHARACTER_LENGTH, MySqlParserCHARSET, MySqlParserCHAR_LENGTH, MySqlParserCOERCIBILITY, MySqlParserCOLLATION, MySqlParserCOMPRESS, MySqlParserCONCAT, MySqlParserCONCAT_WS, MySqlParserCONNECTION_ID, MySqlParserCONV, MySqlParserCONVERT_TZ, MySqlParserCOS, MySqlParserCOT, MySqlParserCRC32, MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, MySqlParserCREATE_ASYMMETRIC_PUB_KEY, MySqlParserCREATE_DH_PARAMETERS, MySqlParserCREATE_DIGEST, MySqlParserCROSSES, MySqlParserDATEDIFF, MySqlParserDATE_FORMAT, MySqlParserDAYNAME, MySqlParserDAYOFMONTH, MySqlParserDAYOFWEEK, MySqlParserDAYOFYEAR, MySqlParserDECODE, MySqlParserDEGREES, MySqlParserDES_DECRYPT, MySqlParserDES_ENCRYPT, MySqlParserDIMENSION, MySqlParserDISJOINT, MySqlParserELT, MySqlParserENCODE, MySqlParserENCRYPT, MySqlParserENDPOINT, MySqlParserENVELOPE, MySqlParserEQUALS, MySqlParserEXP, MySqlParserEXPORT_SET, MySqlParserEXTERIORRING, MySqlParserEXTRACTVALUE, MySqlParserFIELD, MySqlParserFIND_IN_SET, MySqlParserFLOOR, MySqlParserFORMAT, MySqlParserFOUND_ROWS, MySqlParserFROM_BASE64, MySqlParserFROM_DAYS, MySqlParserFROM_UNIXTIME, MySqlParserGEOMCOLLFROMTEXT, MySqlParserGEOMCOLLFROMWKB, MySqlParserGEOMETRYCOLLECTIONFROMTEXT, MySqlParserGEOMETRYCOLLECTIONFROMWKB, MySqlParserGEOMETRYFROMTEXT, MySqlParserGEOMETRYFROMWKB, MySqlParserGEOMETRYN, MySqlParserGEOMETRYTYPE, MySqlParserGEOMFROMTEXT, MySqlParserGEOMFROMWKB, MySqlParserGET_FORMAT, MySqlParserGET_LOCK, MySqlParserGLENGTH, MySqlParserGREATEST, MySqlParserGTID_SUBSET, MySqlParserGTID_SUBTRACT, MySqlParserHEX, MySqlParserIFNULL, MySqlParserINET6_ATON, MySqlParserINET6_NTOA, MySqlParserINET_ATON, MySqlParserINET_NTOA, MySqlParserINSTR, MySqlParserINTERIORRINGN, MySqlParserINTERSECTS, MySqlParserISCLOSED, MySqlParserISEMPTY, MySqlParserISNULL, MySqlParserISSIMPLE, MySqlParserIS_FREE_LOCK, MySqlParserIS_IPV4, MySqlParserIS_IPV4_COMPAT, MySqlParserIS_IPV4_MAPPED, MySqlParserIS_IPV6, MySqlParserIS_USED_LOCK, MySqlParserLAST_INSERT_ID, MySqlParserLCASE, MySqlParserLEAST, MySqlParserLENGTH, MySqlParserLINEFROMTEXT, MySqlParserLINEFROMWKB, MySqlParserLINESTRINGFROMTEXT, MySqlParserLINESTRINGFROMWKB, MySqlParserLN, MySqlParserLOAD_FILE, MySqlParserLOCATE, MySqlParserLOG, MySqlParserLOG10, MySqlParserLOG2, MySqlParserLOWER, MySqlParserLPAD, MySqlParserLTRIM, MySqlParserMAKEDATE, MySqlParserMAKETIME, MySqlParserMAKE_SET, MySqlParserMASTER_POS_WAIT, MySqlParserMBRCONTAINS, MySqlParserMBRDISJOINT, MySqlParserMBREQUAL, MySqlParserMBRINTERSECTS, MySqlParserMBROVERLAPS, MySqlParserMBRTOUCHES, MySqlParserMBRWITHIN, MySqlParserMD5, MySqlParserMLINEFROMTEXT, MySqlParserMLINEFROMWKB, MySqlParserMONTHNAME, MySqlParserMPOINTFROMTEXT, MySqlParserMPOINTFROMWKB, MySqlParserMPOLYFROMTEXT, MySqlParserMPOLYFROMWKB, MySqlParserMULTILINESTRINGFROMTEXT, MySqlParserMULTILINESTRINGFROMWKB, MySqlParserMULTIPOINTFROMTEXT, MySqlParserMULTIPOINTFROMWKB, MySqlParserMULTIPOLYGONFROMTEXT, MySqlParserMULTIPOLYGONFROMWKB, MySqlParserNAME_CONST, MySqlParserNULLIF, MySqlParserNUMGEOMETRIES, MySqlParserNUMINTERIORRINGS, MySqlParserNUMPOINTS, MySqlParserOCT, MySqlParserOCTET_LENGTH, MySqlParserORD, MySqlParserOVERLAPS, MySqlParserPERIOD_ADD, MySqlParserPERIOD_DIFF, MySqlParserPI, MySqlParserPOINTFROMTEXT, MySqlParserPOINTFROMWKB, MySqlParserPOINTN, MySqlParserPOLYFROMTEXT, MySqlParserPOLYFROMWKB, MySqlParserPOLYGONFROMTEXT, MySqlParserPOLYGONFROMWKB, MySqlParserPOW, MySqlParserPOWER, MySqlParserQUOTE, MySqlParserRADIANS, MySqlParserRAND, MySqlParserRANDOM_BYTES, MySqlParserRELEASE_LOCK, MySqlParserREVERSE, MySqlParserROUND, MySqlParserROW_COUNT, MySqlParserRPAD, MySqlParserRTRIM, MySqlParserSEC_TO_TIME, MySqlParserSESSION_USER, MySqlParserSHA, MySqlParserSHA1, MySqlParserSHA2, MySqlParserSIGN, MySqlParserSIN, MySqlParserSLEEP, MySqlParserSOUNDEX, MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, MySqlParserSQRT, MySqlParserSRID, MySqlParserSTARTPOINT, MySqlParserSTRCMP, MySqlParserSTR_TO_DATE, MySqlParserST_AREA, MySqlParserST_ASBINARY, MySqlParserST_ASTEXT, MySqlParserST_ASWKB, MySqlParserST_ASWKT, MySqlParserST_BUFFER, MySqlParserST_CENTROID, MySqlParserST_CONTAINS, MySqlParserST_CROSSES, MySqlParserST_DIFFERENCE, MySqlParserST_DIMENSION, MySqlParserST_DISJOINT, MySqlParserST_DISTANCE, MySqlParserST_ENDPOINT, MySqlParserST_ENVELOPE, MySqlParserST_EQUALS, MySqlParserST_EXTERIORRING, MySqlParserST_GEOMCOLLFROMTEXT, MySqlParserST_GEOMCOLLFROMTXT, MySqlParserST_GEOMCOLLFROMWKB, MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, MySqlParserST_GEOMETRYFROMTEXT, MySqlParserST_GEOMETRYFROMWKB, MySqlParserST_GEOMETRYN, MySqlParserST_GEOMETRYTYPE, MySqlParserST_GEOMFROMTEXT, MySqlParserST_GEOMFROMWKB, MySqlParserST_INTERIORRINGN, MySqlParserST_INTERSECTION, MySqlParserST_INTERSECTS, MySqlParserST_ISCLOSED, MySqlParserST_ISEMPTY, MySqlParserST_ISSIMPLE, MySqlParserST_LINEFROMTEXT, MySqlParserST_LINEFROMWKB, MySqlParserST_LINESTRINGFROMTEXT, MySqlParserST_LINESTRINGFROMWKB, MySqlParserST_NUMGEOMETRIES, MySqlParserST_NUMINTERIORRING, MySqlParserST_NUMINTERIORRINGS, MySqlParserST_NUMPOINTS, MySqlParserST_OVERLAPS, MySqlParserST_POINTFROMTEXT, MySqlParserST_POINTFROMWKB, MySqlParserST_POINTN, MySqlParserST_POLYFROMTEXT, MySqlParserST_POLYFROMWKB, MySqlParserST_POLYGONFROMTEXT, MySqlParserST_POLYGONFROMWKB, MySqlParserST_SRID, MySqlParserST_STARTPOINT, MySqlParserST_SYMDIFFERENCE, MySqlParserST_TOUCHES, MySqlParserST_UNION, MySqlParserST_WITHIN, MySqlParserST_X, MySqlParserST_Y, MySqlParserSUBDATE, MySqlParserSUBSTRING_INDEX, MySqlParserSUBTIME, MySqlParserSYSTEM_USER, MySqlParserTAN, MySqlParserTIMEDIFF, MySqlParserTIMESTAMPADD, MySqlParserTIMESTAMPDIFF, MySqlParserTIME_FORMAT, MySqlParserTIME_TO_SEC, MySqlParserTOUCHES, MySqlParserTO_BASE64, MySqlParserTO_DAYS, MySqlParserTO_SECONDS, MySqlParserUCASE, MySqlParserUNCOMPRESS, MySqlParserUNCOMPRESSED_LENGTH, MySqlParserUNHEX, MySqlParserUNIX_TIMESTAMP, MySqlParserUPDATEXML, MySqlParserUPPER, MySqlParserUUID, MySqlParserUUID_SHORT, MySqlParserVALIDATE_PASSWORD_STRENGTH, MySqlParserVERSION, MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, MySqlParserWEEKDAY, MySqlParserWEEKOFYEAR, MySqlParserWEIGHT_STRING, MySqlParserWITHIN, MySqlParserYEARWEEK, MySqlParserY_FUNCTION, MySqlParserX_FUNCTION, MySqlParserMOD:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6507)
			p.FunctionNameBase()
		}

	case MySqlParserASCII:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6508)
			p.Match(MySqlParserASCII)
		}

	case MySqlParserCURDATE:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6509)
			p.Match(MySqlParserCURDATE)
		}

	case MySqlParserCURRENT_DATE:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6510)
			p.Match(MySqlParserCURRENT_DATE)
		}

	case MySqlParserCURRENT_TIME:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6511)
			p.Match(MySqlParserCURRENT_TIME)
		}

	case MySqlParserCURRENT_TIMESTAMP:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(6512)
			p.Match(MySqlParserCURRENT_TIMESTAMP)
		}

	case MySqlParserCURTIME:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(6513)
			p.Match(MySqlParserCURTIME)
		}

	case MySqlParserDATE_ADD:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(6514)
			p.Match(MySqlParserDATE_ADD)
		}

	case MySqlParserDATE_SUB:
		p.EnterOuterAlt(localctx, 9)
		{
			p.SetState(6515)
			p.Match(MySqlParserDATE_SUB)
		}

	case MySqlParserIF:
		p.EnterOuterAlt(localctx, 10)
		{
			p.SetState(6516)
			p.Match(MySqlParserIF)
		}

	case MySqlParserINSERT:
		p.EnterOuterAlt(localctx, 11)
		{
			p.SetState(6517)
			p.Match(MySqlParserINSERT)
		}

	case MySqlParserLOCALTIME:
		p.EnterOuterAlt(localctx, 12)
		{
			p.SetState(6518)
			p.Match(MySqlParserLOCALTIME)
		}

	case MySqlParserLOCALTIMESTAMP:
		p.EnterOuterAlt(localctx, 13)
		{
			p.SetState(6519)
			p.Match(MySqlParserLOCALTIMESTAMP)
		}

	case MySqlParserMID:
		p.EnterOuterAlt(localctx, 14)
		{
			p.SetState(6520)
			p.Match(MySqlParserMID)
		}

	case MySqlParserNOW:
		p.EnterOuterAlt(localctx, 15)
		{
			p.SetState(6521)
			p.Match(MySqlParserNOW)
		}

	case MySqlParserREPLACE:
		p.EnterOuterAlt(localctx, 16)
		{
			p.SetState(6522)
			p.Match(MySqlParserREPLACE)
		}

	case MySqlParserSUBSTR:
		p.EnterOuterAlt(localctx, 17)
		{
			p.SetState(6523)
			p.Match(MySqlParserSUBSTR)
		}

	case MySqlParserSUBSTRING:
		p.EnterOuterAlt(localctx, 18)
		{
			p.SetState(6524)
			p.Match(MySqlParserSUBSTRING)
		}

	case MySqlParserSYSDATE:
		p.EnterOuterAlt(localctx, 19)
		{
			p.SetState(6525)
			p.Match(MySqlParserSYSDATE)
		}

	case MySqlParserTRIM:
		p.EnterOuterAlt(localctx, 20)
		{
			p.SetState(6526)
			p.Match(MySqlParserTRIM)
		}

	case MySqlParserUTC_DATE:
		p.EnterOuterAlt(localctx, 21)
		{
			p.SetState(6527)
			p.Match(MySqlParserUTC_DATE)
		}

	case MySqlParserUTC_TIME:
		p.EnterOuterAlt(localctx, 22)
		{
			p.SetState(6528)
			p.Match(MySqlParserUTC_TIME)
		}

	case MySqlParserUTC_TIMESTAMP:
		p.EnterOuterAlt(localctx, 23)
		{
			p.SetState(6529)
			p.Match(MySqlParserUTC_TIMESTAMP)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IPasswordFunctionClauseContext is an interface to support dynamic dispatch.
type IPasswordFunctionClauseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// GetFunctionName returns the functionName token.
	GetFunctionName() antlr.Token

	// SetFunctionName sets the functionName token.
	SetFunctionName(antlr.Token)

	// IsPasswordFunctionClauseContext differentiates from other interfaces.
	IsPasswordFunctionClauseContext()
}

type PasswordFunctionClauseContext struct {
	*antlr.BaseParserRuleContext
	parser       antlr.Parser
	functionName antlr.Token
}

func NewEmptyPasswordFunctionClauseContext() *PasswordFunctionClauseContext {
	var p = new(PasswordFunctionClauseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_passwordFunctionClause
	return p
}

func (*PasswordFunctionClauseContext) IsPasswordFunctionClauseContext() {}

func NewPasswordFunctionClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PasswordFunctionClauseContext {
	var p = new(PasswordFunctionClauseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_passwordFunctionClause

	return p
}

func (s *PasswordFunctionClauseContext) GetParser() antlr.Parser { return s.parser }

func (s *PasswordFunctionClauseContext) GetFunctionName() antlr.Token { return s.functionName }

func (s *PasswordFunctionClauseContext) SetFunctionName(v antlr.Token) { s.functionName = v }

func (s *PasswordFunctionClauseContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *PasswordFunctionClauseContext) FunctionArg() IFunctionArgContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionArgContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionArgContext)
}

func (s *PasswordFunctionClauseContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *PasswordFunctionClauseContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *PasswordFunctionClauseContext) OLD_PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserOLD_PASSWORD, 0)
}

func (s *PasswordFunctionClauseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PasswordFunctionClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PasswordFunctionClauseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPasswordFunctionClause(s)
	}
}

func (s *PasswordFunctionClauseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPasswordFunctionClause(s)
	}
}

func (p *MySqlParser) PasswordFunctionClause() (localctx IPasswordFunctionClauseContext) {
	this := p
	_ = this

	localctx = NewPasswordFunctionClauseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 626, MySqlParserRULE_passwordFunctionClause)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6532)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*PasswordFunctionClauseContext).functionName = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserOLD_PASSWORD || _la == MySqlParserPASSWORD) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*PasswordFunctionClauseContext).functionName = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	{
		p.SetState(6533)
		p.Match(MySqlParserLR_BRACKET)
	}
	{
		p.SetState(6534)
		p.FunctionArg()
	}
	{
		p.SetState(6535)
		p.Match(MySqlParserRR_BRACKET)
	}

	return localctx
}

// IFunctionArgsContext is an interface to support dynamic dispatch.
type IFunctionArgsContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFunctionArgsContext differentiates from other interfaces.
	IsFunctionArgsContext()
}

type FunctionArgsContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFunctionArgsContext() *FunctionArgsContext {
	var p = new(FunctionArgsContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_functionArgs
	return p
}

func (*FunctionArgsContext) IsFunctionArgsContext() {}

func NewFunctionArgsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionArgsContext {
	var p = new(FunctionArgsContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_functionArgs

	return p
}

func (s *FunctionArgsContext) GetParser() antlr.Parser { return s.parser }

func (s *FunctionArgsContext) AllConstant() []IConstantContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IConstantContext)(nil)).Elem())
	var tst = make([]IConstantContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IConstantContext)
		}
	}

	return tst
}

func (s *FunctionArgsContext) Constant(i int) IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *FunctionArgsContext) AllFullColumnName() []IFullColumnNameContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem())
	var tst = make([]IFullColumnNameContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFullColumnNameContext)
		}
	}

	return tst
}

func (s *FunctionArgsContext) FullColumnName(i int) IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *FunctionArgsContext) AllFunctionCall() []IFunctionCallContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem())
	var tst = make([]IFunctionCallContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IFunctionCallContext)
		}
	}

	return tst
}

func (s *FunctionArgsContext) FunctionCall(i int) IFunctionCallContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IFunctionCallContext)
}

func (s *FunctionArgsContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *FunctionArgsContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *FunctionArgsContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *FunctionArgsContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *FunctionArgsContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionArgsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FunctionArgsContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFunctionArgs(s)
	}
}

func (s *FunctionArgsContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFunctionArgs(s)
	}
}

func (p *MySqlParser) FunctionArgs() (localctx IFunctionArgsContext) {
	this := p
	_ = this

	localctx = NewFunctionArgsContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 628, MySqlParserRULE_functionArgs)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6541)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 954, p.GetParserRuleContext()) {
	case 1:
		{
			p.SetState(6537)
			p.Constant()
		}

	case 2:
		{
			p.SetState(6538)
			p.FullColumnName()
		}

	case 3:
		{
			p.SetState(6539)
			p.FunctionCall()
		}

	case 4:
		{
			p.SetState(6540)
			p.expression(0)
		}

	}
	p.SetState(6552)
	p.GetErrorHandler().Sync(p)
	_la = p.GetTokenStream().LA(1)

	for _la == MySqlParserCOMMA {
		{
			p.SetState(6543)
			p.Match(MySqlParserCOMMA)
		}
		p.SetState(6548)
		p.GetErrorHandler().Sync(p)
		switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 955, p.GetParserRuleContext()) {
		case 1:
			{
				p.SetState(6544)
				p.Constant()
			}

		case 2:
			{
				p.SetState(6545)
				p.FullColumnName()
			}

		case 3:
			{
				p.SetState(6546)
				p.FunctionCall()
			}

		case 4:
			{
				p.SetState(6547)
				p.expression(0)
			}

		}

		p.SetState(6554)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)
	}

	return localctx
}

// IFunctionArgContext is an interface to support dynamic dispatch.
type IFunctionArgContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFunctionArgContext differentiates from other interfaces.
	IsFunctionArgContext()
}

type FunctionArgContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFunctionArgContext() *FunctionArgContext {
	var p = new(FunctionArgContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_functionArg
	return p
}

func (*FunctionArgContext) IsFunctionArgContext() {}

func NewFunctionArgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionArgContext {
	var p = new(FunctionArgContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_functionArg

	return p
}

func (s *FunctionArgContext) GetParser() antlr.Parser { return s.parser }

func (s *FunctionArgContext) Constant() IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *FunctionArgContext) FullColumnName() IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *FunctionArgContext) FunctionCall() IFunctionCallContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionCallContext)
}

func (s *FunctionArgContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *FunctionArgContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionArgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FunctionArgContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFunctionArg(s)
	}
}

func (s *FunctionArgContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFunctionArg(s)
	}
}

func (p *MySqlParser) FunctionArg() (localctx IFunctionArgContext) {
	this := p
	_ = this

	localctx = NewFunctionArgContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 630, MySqlParserRULE_functionArg)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6559)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 957, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6555)
			p.Constant()
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6556)
			p.FullColumnName()
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6557)
			p.FunctionCall()
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6558)
			p.expression(0)
		}

	}

	return localctx
}

// IExpressionContext is an interface to support dynamic dispatch.
type IExpressionContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExpressionContext differentiates from other interfaces.
	IsExpressionContext()
}

type ExpressionContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExpressionContext() *ExpressionContext {
	var p = new(ExpressionContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_expression
	return p
}

func (*ExpressionContext) IsExpressionContext() {}

func NewExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionContext {
	var p = new(ExpressionContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_expression

	return p
}

func (s *ExpressionContext) GetParser() antlr.Parser { return s.parser }

func (s *ExpressionContext) CopyFrom(ctx *ExpressionContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type IsExpressionContext struct {
	*ExpressionContext
	testValue antlr.Token
}

func NewIsExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IsExpressionContext {
	var p = new(IsExpressionContext)

	p.ExpressionContext = NewEmptyExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionContext))

	return p
}

func (s *IsExpressionContext) GetTestValue() antlr.Token { return s.testValue }

func (s *IsExpressionContext) SetTestValue(v antlr.Token) { s.testValue = v }

func (s *IsExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IsExpressionContext) Predicate() IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *IsExpressionContext) IS() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS, 0)
}

func (s *IsExpressionContext) TRUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRUE, 0)
}

func (s *IsExpressionContext) FALSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFALSE, 0)
}

func (s *IsExpressionContext) UNKNOWN() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNKNOWN, 0)
}

func (s *IsExpressionContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *IsExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIsExpression(s)
	}
}

func (s *IsExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIsExpression(s)
	}
}

type NotExpressionContext struct {
	*ExpressionContext
	notOperator antlr.Token
}

func NewNotExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NotExpressionContext {
	var p = new(NotExpressionContext)

	p.ExpressionContext = NewEmptyExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionContext))

	return p
}

func (s *NotExpressionContext) GetNotOperator() antlr.Token { return s.notOperator }

func (s *NotExpressionContext) SetNotOperator(v antlr.Token) { s.notOperator = v }

func (s *NotExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NotExpressionContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *NotExpressionContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *NotExpressionContext) EXCLAMATION_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLAMATION_SYMBOL, 0)
}

func (s *NotExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNotExpression(s)
	}
}

func (s *NotExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNotExpression(s)
	}
}

type LogicalExpressionContext struct {
	*ExpressionContext
}

func NewLogicalExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LogicalExpressionContext {
	var p = new(LogicalExpressionContext)

	p.ExpressionContext = NewEmptyExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionContext))

	return p
}

func (s *LogicalExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LogicalExpressionContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *LogicalExpressionContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *LogicalExpressionContext) LogicalOperator() ILogicalOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ILogicalOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ILogicalOperatorContext)
}

func (s *LogicalExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLogicalExpression(s)
	}
}

func (s *LogicalExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLogicalExpression(s)
	}
}

type PredicateExpressionContext struct {
	*ExpressionContext
}

func NewPredicateExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PredicateExpressionContext {
	var p = new(PredicateExpressionContext)

	p.ExpressionContext = NewEmptyExpressionContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionContext))

	return p
}

func (s *PredicateExpressionContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PredicateExpressionContext) Predicate() IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *PredicateExpressionContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPredicateExpression(s)
	}
}

func (s *PredicateExpressionContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPredicateExpression(s)
	}
}

func (p *MySqlParser) Expression() (localctx IExpressionContext) {
	return p.expression(0)
}

func (p *MySqlParser) expression(_p int) (localctx IExpressionContext) {
	this := p
	_ = this

	var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext()
	_parentState := p.GetState()
	localctx = NewExpressionContext(p, p.GetParserRuleContext(), _parentState)
	var _prevctx IExpressionContext = localctx
	var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning.
	_startState := 632
	p.EnterRecursionRule(localctx, 632, MySqlParserRULE_expression, _p)
	var _la int

	defer func() {
		p.UnrollRecursionContexts(_parentctx)
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6572)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 959, p.GetParserRuleContext()) {
	case 1:
		localctx = NewNotExpressionContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx

		{
			p.SetState(6562)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*NotExpressionContext).notOperator = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserNOT || _la == MySqlParserEXCLAMATION_SYMBOL) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*NotExpressionContext).notOperator = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}
		{
			p.SetState(6563)
			p.expression(4)
		}

	case 2:
		localctx = NewIsExpressionContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6564)
			p.predicate(0)
		}
		{
			p.SetState(6565)
			p.Match(MySqlParserIS)
		}
		p.SetState(6567)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		if _la == MySqlParserNOT {
			{
				p.SetState(6566)
				p.Match(MySqlParserNOT)
			}

		}
		{
			p.SetState(6569)

			var _lt = p.GetTokenStream().LT(1)

			localctx.(*IsExpressionContext).testValue = _lt

			_la = p.GetTokenStream().LA(1)

			if !(_la == MySqlParserFALSE || _la == MySqlParserTRUE || _la == MySqlParserUNKNOWN) {
				var _ri = p.GetErrorHandler().RecoverInline(p)

				localctx.(*IsExpressionContext).testValue = _ri
			} else {
				p.GetErrorHandler().ReportMatch(p)
				p.Consume()
			}
		}

	case 3:
		localctx = NewPredicateExpressionContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6571)
			p.predicate(0)
		}

	}
	p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
	p.SetState(6580)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 960, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			if p.GetParseListeners() != nil {
				p.TriggerExitRuleEvent()
			}
			_prevctx = localctx
			localctx = NewLogicalExpressionContext(p, NewExpressionContext(p, _parentctx, _parentState))
			p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_expression)
			p.SetState(6574)

			if !(p.Precpred(p.GetParserRuleContext(), 3)) {
				panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", ""))
			}
			{
				p.SetState(6575)
				p.LogicalOperator()
			}
			{
				p.SetState(6576)
				p.expression(4)
			}

		}
		p.SetState(6582)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 960, p.GetParserRuleContext())
	}

	return localctx
}

// IPredicateContext is an interface to support dynamic dispatch.
type IPredicateContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPredicateContext differentiates from other interfaces.
	IsPredicateContext()
}

type PredicateContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPredicateContext() *PredicateContext {
	var p = new(PredicateContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_predicate
	return p
}

func (*PredicateContext) IsPredicateContext() {}

func NewPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PredicateContext {
	var p = new(PredicateContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_predicate

	return p
}

func (s *PredicateContext) GetParser() antlr.Parser { return s.parser }

func (s *PredicateContext) CopyFrom(ctx *PredicateContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *PredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type SoundsLikePredicateContext struct {
	*PredicateContext
}

func NewSoundsLikePredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SoundsLikePredicateContext {
	var p = new(SoundsLikePredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *SoundsLikePredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SoundsLikePredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *SoundsLikePredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *SoundsLikePredicateContext) SOUNDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOUNDS, 0)
}

func (s *SoundsLikePredicateContext) LIKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIKE, 0)
}

func (s *SoundsLikePredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSoundsLikePredicate(s)
	}
}

func (s *SoundsLikePredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSoundsLikePredicate(s)
	}
}

type ExpressionAtomPredicateContext struct {
	*PredicateContext
}

func NewExpressionAtomPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ExpressionAtomPredicateContext {
	var p = new(ExpressionAtomPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *ExpressionAtomPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionAtomPredicateContext) ExpressionAtom() IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *ExpressionAtomPredicateContext) LOCAL_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL_ID, 0)
}

func (s *ExpressionAtomPredicateContext) VAR_ASSIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_ASSIGN, 0)
}

func (s *ExpressionAtomPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExpressionAtomPredicate(s)
	}
}

func (s *ExpressionAtomPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExpressionAtomPredicate(s)
	}
}

type SubqueryComparisonPredicateContext struct {
	*PredicateContext
	quantifier antlr.Token
}

func NewSubqueryComparisonPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubqueryComparisonPredicateContext {
	var p = new(SubqueryComparisonPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *SubqueryComparisonPredicateContext) GetQuantifier() antlr.Token { return s.quantifier }

func (s *SubqueryComparisonPredicateContext) SetQuantifier(v antlr.Token) { s.quantifier = v }

func (s *SubqueryComparisonPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubqueryComparisonPredicateContext) Predicate() IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *SubqueryComparisonPredicateContext) ComparisonOperator() IComparisonOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IComparisonOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IComparisonOperatorContext)
}

func (s *SubqueryComparisonPredicateContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubqueryComparisonPredicateContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *SubqueryComparisonPredicateContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubqueryComparisonPredicateContext) ALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserALL, 0)
}

func (s *SubqueryComparisonPredicateContext) ANY() antlr.TerminalNode {
	return s.GetToken(MySqlParserANY, 0)
}

func (s *SubqueryComparisonPredicateContext) SOME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOME, 0)
}

func (s *SubqueryComparisonPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubqueryComparisonPredicate(s)
	}
}

func (s *SubqueryComparisonPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubqueryComparisonPredicate(s)
	}
}

type JsonMemberOfPredicateContext struct {
	*PredicateContext
}

func NewJsonMemberOfPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JsonMemberOfPredicateContext {
	var p = new(JsonMemberOfPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *JsonMemberOfPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *JsonMemberOfPredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *JsonMemberOfPredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *JsonMemberOfPredicateContext) MEMBER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMBER, 0)
}

func (s *JsonMemberOfPredicateContext) OF() antlr.TerminalNode {
	return s.GetToken(MySqlParserOF, 0)
}

func (s *JsonMemberOfPredicateContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *JsonMemberOfPredicateContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *JsonMemberOfPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterJsonMemberOfPredicate(s)
	}
}

func (s *JsonMemberOfPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitJsonMemberOfPredicate(s)
	}
}

type BinaryComparisonPredicateContext struct {
	*PredicateContext
	left  IPredicateContext
	right IPredicateContext
}

func NewBinaryComparisonPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BinaryComparisonPredicateContext {
	var p = new(BinaryComparisonPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *BinaryComparisonPredicateContext) GetLeft() IPredicateContext { return s.left }

func (s *BinaryComparisonPredicateContext) GetRight() IPredicateContext { return s.right }

func (s *BinaryComparisonPredicateContext) SetLeft(v IPredicateContext) { s.left = v }

func (s *BinaryComparisonPredicateContext) SetRight(v IPredicateContext) { s.right = v }

func (s *BinaryComparisonPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BinaryComparisonPredicateContext) ComparisonOperator() IComparisonOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IComparisonOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IComparisonOperatorContext)
}

func (s *BinaryComparisonPredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *BinaryComparisonPredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *BinaryComparisonPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBinaryComparisonPredicate(s)
	}
}

func (s *BinaryComparisonPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBinaryComparisonPredicate(s)
	}
}

type InPredicateContext struct {
	*PredicateContext
}

func NewInPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *InPredicateContext {
	var p = new(InPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *InPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *InPredicateContext) Predicate() IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *InPredicateContext) IN() antlr.TerminalNode {
	return s.GetToken(MySqlParserIN, 0)
}

func (s *InPredicateContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *InPredicateContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *InPredicateContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *InPredicateContext) Expressions() IExpressionsContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionsContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionsContext)
}

func (s *InPredicateContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *InPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterInPredicate(s)
	}
}

func (s *InPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitInPredicate(s)
	}
}

type BetweenPredicateContext struct {
	*PredicateContext
}

func NewBetweenPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BetweenPredicateContext {
	var p = new(BetweenPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *BetweenPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BetweenPredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *BetweenPredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *BetweenPredicateContext) BETWEEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBETWEEN, 0)
}

func (s *BetweenPredicateContext) AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, 0)
}

func (s *BetweenPredicateContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *BetweenPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBetweenPredicate(s)
	}
}

func (s *BetweenPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBetweenPredicate(s)
	}
}

type IsNullPredicateContext struct {
	*PredicateContext
}

func NewIsNullPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IsNullPredicateContext {
	var p = new(IsNullPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *IsNullPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IsNullPredicateContext) Predicate() IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *IsNullPredicateContext) IS() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS, 0)
}

func (s *IsNullPredicateContext) NullNotnull() INullNotnullContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*INullNotnullContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(INullNotnullContext)
}

func (s *IsNullPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIsNullPredicate(s)
	}
}

func (s *IsNullPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIsNullPredicate(s)
	}
}

type LikePredicateContext struct {
	*PredicateContext
}

func NewLikePredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LikePredicateContext {
	var p = new(LikePredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *LikePredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LikePredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *LikePredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *LikePredicateContext) LIKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIKE, 0)
}

func (s *LikePredicateContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *LikePredicateContext) ESCAPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserESCAPE, 0)
}

func (s *LikePredicateContext) STRING_LITERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING_LITERAL, 0)
}

func (s *LikePredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLikePredicate(s)
	}
}

func (s *LikePredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLikePredicate(s)
	}
}

type RegexpPredicateContext struct {
	*PredicateContext
	regex antlr.Token
}

func NewRegexpPredicateContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RegexpPredicateContext {
	var p = new(RegexpPredicateContext)

	p.PredicateContext = NewEmptyPredicateContext()
	p.parser = parser
	p.CopyFrom(ctx.(*PredicateContext))

	return p
}

func (s *RegexpPredicateContext) GetRegex() antlr.Token { return s.regex }

func (s *RegexpPredicateContext) SetRegex(v antlr.Token) { s.regex = v }

func (s *RegexpPredicateContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *RegexpPredicateContext) AllPredicate() []IPredicateContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPredicateContext)(nil)).Elem())
	var tst = make([]IPredicateContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IPredicateContext)
		}
	}

	return tst
}

func (s *RegexpPredicateContext) Predicate(i int) IPredicateContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IPredicateContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IPredicateContext)
}

func (s *RegexpPredicateContext) REGEXP() antlr.TerminalNode {
	return s.GetToken(MySqlParserREGEXP, 0)
}

func (s *RegexpPredicateContext) RLIKE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRLIKE, 0)
}

func (s *RegexpPredicateContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *RegexpPredicateContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterRegexpPredicate(s)
	}
}

func (s *RegexpPredicateContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitRegexpPredicate(s)
	}
}

func (p *MySqlParser) Predicate() (localctx IPredicateContext) {
	return p.predicate(0)
}

func (p *MySqlParser) predicate(_p int) (localctx IPredicateContext) {
	this := p
	_ = this

	var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext()
	_parentState := p.GetState()
	localctx = NewPredicateContext(p, p.GetParserRuleContext(), _parentState)
	var _prevctx IPredicateContext = localctx
	var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning.
	_startState := 634
	p.EnterRecursionRule(localctx, 634, MySqlParserRULE_predicate, _p)
	var _la int

	defer func() {
		p.UnrollRecursionContexts(_parentctx)
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	localctx = NewExpressionAtomPredicateContext(p, localctx)
	p.SetParserRuleContext(localctx)
	_prevctx = localctx

	p.SetState(6586)
	p.GetErrorHandler().Sync(p)

	if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 961, p.GetParserRuleContext()) == 1 {
		{
			p.SetState(6584)
			p.Match(MySqlParserLOCAL_ID)
		}
		{
			p.SetState(6585)
			p.Match(MySqlParserVAR_ASSIGN)
		}

	}
	{
		p.SetState(6588)
		p.expressionAtom(0)
	}

	p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
	p.SetState(6654)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 969, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			if p.GetParseListeners() != nil {
				p.TriggerExitRuleEvent()
			}
			_prevctx = localctx
			p.SetState(6652)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 968, p.GetParserRuleContext()) {
			case 1:
				localctx = NewBinaryComparisonPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				localctx.(*BinaryComparisonPredicateContext).left = _prevctx

				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6590)

				if !(p.Precpred(p.GetParserRuleContext(), 8)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", ""))
				}
				{
					p.SetState(6591)
					p.ComparisonOperator()
				}
				{
					p.SetState(6592)

					var _x = p.predicate(9)

					localctx.(*BinaryComparisonPredicateContext).right = _x
				}

			case 2:
				localctx = NewBetweenPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6594)

				if !(p.Precpred(p.GetParserRuleContext(), 6)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", ""))
				}
				p.SetState(6596)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserNOT {
					{
						p.SetState(6595)
						p.Match(MySqlParserNOT)
					}

				}
				{
					p.SetState(6598)
					p.Match(MySqlParserBETWEEN)
				}
				{
					p.SetState(6599)
					p.predicate(0)
				}
				{
					p.SetState(6600)
					p.Match(MySqlParserAND)
				}
				{
					p.SetState(6601)
					p.predicate(7)
				}

			case 3:
				localctx = NewSoundsLikePredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6603)

				if !(p.Precpred(p.GetParserRuleContext(), 5)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", ""))
				}
				{
					p.SetState(6604)
					p.Match(MySqlParserSOUNDS)
				}
				{
					p.SetState(6605)
					p.Match(MySqlParserLIKE)
				}
				{
					p.SetState(6606)
					p.predicate(6)
				}

			case 4:
				localctx = NewRegexpPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6607)

				if !(p.Precpred(p.GetParserRuleContext(), 3)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", ""))
				}
				p.SetState(6609)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserNOT {
					{
						p.SetState(6608)
						p.Match(MySqlParserNOT)
					}

				}
				{
					p.SetState(6611)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*RegexpPredicateContext).regex = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserREGEXP || _la == MySqlParserRLIKE) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*RegexpPredicateContext).regex = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}
				{
					p.SetState(6612)
					p.predicate(4)
				}

			case 5:
				localctx = NewInPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6613)

				if !(p.Precpred(p.GetParserRuleContext(), 10)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 10)", ""))
				}
				p.SetState(6615)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserNOT {
					{
						p.SetState(6614)
						p.Match(MySqlParserNOT)
					}

				}
				{
					p.SetState(6617)
					p.Match(MySqlParserIN)
				}
				{
					p.SetState(6618)
					p.Match(MySqlParserLR_BRACKET)
				}
				p.SetState(6621)
				p.GetErrorHandler().Sync(p)
				switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 965, p.GetParserRuleContext()) {
				case 1:
					{
						p.SetState(6619)
						p.SelectStatement()
					}

				case 2:
					{
						p.SetState(6620)
						p.Expressions()
					}

				}
				{
					p.SetState(6623)
					p.Match(MySqlParserRR_BRACKET)
				}

			case 6:
				localctx = NewIsNullPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6625)

				if !(p.Precpred(p.GetParserRuleContext(), 9)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", ""))
				}
				{
					p.SetState(6626)
					p.Match(MySqlParserIS)
				}
				{
					p.SetState(6627)
					p.NullNotnull()
				}

			case 7:
				localctx = NewSubqueryComparisonPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6628)

				if !(p.Precpred(p.GetParserRuleContext(), 7)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", ""))
				}
				{
					p.SetState(6629)
					p.ComparisonOperator()
				}
				{
					p.SetState(6630)

					var _lt = p.GetTokenStream().LT(1)

					localctx.(*SubqueryComparisonPredicateContext).quantifier = _lt

					_la = p.GetTokenStream().LA(1)

					if !(_la == MySqlParserALL || _la == MySqlParserANY || _la == MySqlParserSOME) {
						var _ri = p.GetErrorHandler().RecoverInline(p)

						localctx.(*SubqueryComparisonPredicateContext).quantifier = _ri
					} else {
						p.GetErrorHandler().ReportMatch(p)
						p.Consume()
					}
				}
				{
					p.SetState(6631)
					p.Match(MySqlParserLR_BRACKET)
				}
				{
					p.SetState(6632)
					p.SelectStatement()
				}
				{
					p.SetState(6633)
					p.Match(MySqlParserRR_BRACKET)
				}

			case 8:
				localctx = NewLikePredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6635)

				if !(p.Precpred(p.GetParserRuleContext(), 4)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", ""))
				}
				p.SetState(6637)
				p.GetErrorHandler().Sync(p)
				_la = p.GetTokenStream().LA(1)

				if _la == MySqlParserNOT {
					{
						p.SetState(6636)
						p.Match(MySqlParserNOT)
					}

				}
				{
					p.SetState(6639)
					p.Match(MySqlParserLIKE)
				}
				{
					p.SetState(6640)
					p.predicate(0)
				}
				p.SetState(6643)
				p.GetErrorHandler().Sync(p)

				if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 967, p.GetParserRuleContext()) == 1 {
					{
						p.SetState(6641)
						p.Match(MySqlParserESCAPE)
					}
					{
						p.SetState(6642)
						p.Match(MySqlParserSTRING_LITERAL)
					}

				}

			case 9:
				localctx = NewJsonMemberOfPredicateContext(p, NewPredicateContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_predicate)
				p.SetState(6645)

				if !(p.Precpred(p.GetParserRuleContext(), 1)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", ""))
				}
				{
					p.SetState(6646)
					p.Match(MySqlParserMEMBER)
				}
				{
					p.SetState(6647)
					p.Match(MySqlParserOF)
				}
				{
					p.SetState(6648)
					p.Match(MySqlParserLR_BRACKET)
				}
				{
					p.SetState(6649)
					p.predicate(0)
				}
				{
					p.SetState(6650)
					p.Match(MySqlParserRR_BRACKET)
				}

			}

		}
		p.SetState(6656)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 969, p.GetParserRuleContext())
	}

	return localctx
}

// IExpressionAtomContext is an interface to support dynamic dispatch.
type IExpressionAtomContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsExpressionAtomContext differentiates from other interfaces.
	IsExpressionAtomContext()
}

type ExpressionAtomContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyExpressionAtomContext() *ExpressionAtomContext {
	var p = new(ExpressionAtomContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_expressionAtom
	return p
}

func (*ExpressionAtomContext) IsExpressionAtomContext() {}

func NewExpressionAtomContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionAtomContext {
	var p = new(ExpressionAtomContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_expressionAtom

	return p
}

func (s *ExpressionAtomContext) GetParser() antlr.Parser { return s.parser }

func (s *ExpressionAtomContext) CopyFrom(ctx *ExpressionAtomContext) {
	s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext)
}

func (s *ExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExpressionAtomContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

type UnaryExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewUnaryExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UnaryExpressionAtomContext {
	var p = new(UnaryExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *UnaryExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnaryExpressionAtomContext) UnaryOperator() IUnaryOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IUnaryOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IUnaryOperatorContext)
}

func (s *UnaryExpressionAtomContext) ExpressionAtom() IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *UnaryExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnaryExpressionAtom(s)
	}
}

func (s *UnaryExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnaryExpressionAtom(s)
	}
}

type CollateExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewCollateExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CollateExpressionAtomContext {
	var p = new(CollateExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *CollateExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CollateExpressionAtomContext) ExpressionAtom() IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *CollateExpressionAtomContext) COLLATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATE, 0)
}

func (s *CollateExpressionAtomContext) CollationName() ICollationNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollationNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ICollationNameContext)
}

func (s *CollateExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCollateExpressionAtom(s)
	}
}

func (s *CollateExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCollateExpressionAtom(s)
	}
}

type MysqlVariableExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewMysqlVariableExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MysqlVariableExpressionAtomContext {
	var p = new(MysqlVariableExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *MysqlVariableExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MysqlVariableExpressionAtomContext) MysqlVariable() IMysqlVariableContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMysqlVariableContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMysqlVariableContext)
}

func (s *MysqlVariableExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMysqlVariableExpressionAtom(s)
	}
}

func (s *MysqlVariableExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMysqlVariableExpressionAtom(s)
	}
}

type NestedExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewNestedExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NestedExpressionAtomContext {
	var p = new(NestedExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *NestedExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NestedExpressionAtomContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *NestedExpressionAtomContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *NestedExpressionAtomContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *NestedExpressionAtomContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *NestedExpressionAtomContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *NestedExpressionAtomContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *NestedExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNestedExpressionAtom(s)
	}
}

func (s *NestedExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNestedExpressionAtom(s)
	}
}

type NestedRowExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewNestedRowExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NestedRowExpressionAtomContext {
	var p = new(NestedRowExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *NestedRowExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *NestedRowExpressionAtomContext) ROW() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW, 0)
}

func (s *NestedRowExpressionAtomContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *NestedRowExpressionAtomContext) AllExpression() []IExpressionContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem())
	var tst = make([]IExpressionContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionContext)
		}
	}

	return tst
}

func (s *NestedRowExpressionAtomContext) Expression(i int) IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *NestedRowExpressionAtomContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *NestedRowExpressionAtomContext) AllCOMMA() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserCOMMA)
}

func (s *NestedRowExpressionAtomContext) COMMA(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMA, i)
}

func (s *NestedRowExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterNestedRowExpressionAtom(s)
	}
}

func (s *NestedRowExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitNestedRowExpressionAtom(s)
	}
}

type MathExpressionAtomContext struct {
	*ExpressionAtomContext
	left  IExpressionAtomContext
	right IExpressionAtomContext
}

func NewMathExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MathExpressionAtomContext {
	var p = new(MathExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *MathExpressionAtomContext) GetLeft() IExpressionAtomContext { return s.left }

func (s *MathExpressionAtomContext) GetRight() IExpressionAtomContext { return s.right }

func (s *MathExpressionAtomContext) SetLeft(v IExpressionAtomContext) { s.left = v }

func (s *MathExpressionAtomContext) SetRight(v IExpressionAtomContext) { s.right = v }

func (s *MathExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MathExpressionAtomContext) MathOperator() IMathOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IMathOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IMathOperatorContext)
}

func (s *MathExpressionAtomContext) AllExpressionAtom() []IExpressionAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem())
	var tst = make([]IExpressionAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionAtomContext)
		}
	}

	return tst
}

func (s *MathExpressionAtomContext) ExpressionAtom(i int) IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *MathExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMathExpressionAtom(s)
	}
}

func (s *MathExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMathExpressionAtom(s)
	}
}

type ExistsExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewExistsExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ExistsExpressionAtomContext {
	var p = new(ExistsExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *ExistsExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ExistsExpressionAtomContext) EXISTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXISTS, 0)
}

func (s *ExistsExpressionAtomContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *ExistsExpressionAtomContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *ExistsExpressionAtomContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *ExistsExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterExistsExpressionAtom(s)
	}
}

func (s *ExistsExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitExistsExpressionAtom(s)
	}
}

type IntervalExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewIntervalExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IntervalExpressionAtomContext {
	var p = new(IntervalExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *IntervalExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IntervalExpressionAtomContext) INTERVAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERVAL, 0)
}

func (s *IntervalExpressionAtomContext) Expression() IExpressionContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *IntervalExpressionAtomContext) IntervalType() IIntervalTypeContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntervalTypeContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IIntervalTypeContext)
}

func (s *IntervalExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIntervalExpressionAtom(s)
	}
}

func (s *IntervalExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIntervalExpressionAtom(s)
	}
}

type JsonExpressionAtomContext struct {
	*ExpressionAtomContext
	left  IExpressionAtomContext
	right IExpressionAtomContext
}

func NewJsonExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JsonExpressionAtomContext {
	var p = new(JsonExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *JsonExpressionAtomContext) GetLeft() IExpressionAtomContext { return s.left }

func (s *JsonExpressionAtomContext) GetRight() IExpressionAtomContext { return s.right }

func (s *JsonExpressionAtomContext) SetLeft(v IExpressionAtomContext) { s.left = v }

func (s *JsonExpressionAtomContext) SetRight(v IExpressionAtomContext) { s.right = v }

func (s *JsonExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *JsonExpressionAtomContext) JsonOperator() IJsonOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IJsonOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IJsonOperatorContext)
}

func (s *JsonExpressionAtomContext) AllExpressionAtom() []IExpressionAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem())
	var tst = make([]IExpressionAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionAtomContext)
		}
	}

	return tst
}

func (s *JsonExpressionAtomContext) ExpressionAtom(i int) IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *JsonExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterJsonExpressionAtom(s)
	}
}

func (s *JsonExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitJsonExpressionAtom(s)
	}
}

type SubqueryExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewSubqueryExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SubqueryExpressionAtomContext {
	var p = new(SubqueryExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *SubqueryExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *SubqueryExpressionAtomContext) LR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserLR_BRACKET, 0)
}

func (s *SubqueryExpressionAtomContext) SelectStatement() ISelectStatementContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*ISelectStatementContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(ISelectStatementContext)
}

func (s *SubqueryExpressionAtomContext) RR_BRACKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRR_BRACKET, 0)
}

func (s *SubqueryExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterSubqueryExpressionAtom(s)
	}
}

func (s *SubqueryExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitSubqueryExpressionAtom(s)
	}
}

type ConstantExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewConstantExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ConstantExpressionAtomContext {
	var p = new(ConstantExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *ConstantExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ConstantExpressionAtomContext) Constant() IConstantContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IConstantContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IConstantContext)
}

func (s *ConstantExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterConstantExpressionAtom(s)
	}
}

func (s *ConstantExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitConstantExpressionAtom(s)
	}
}

type FunctionCallExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewFunctionCallExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FunctionCallExpressionAtomContext {
	var p = new(FunctionCallExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *FunctionCallExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionCallExpressionAtomContext) FunctionCall() IFunctionCallContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFunctionCallContext)
}

func (s *FunctionCallExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFunctionCallExpressionAtom(s)
	}
}

func (s *FunctionCallExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFunctionCallExpressionAtom(s)
	}
}

type BinaryExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewBinaryExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BinaryExpressionAtomContext {
	var p = new(BinaryExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *BinaryExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BinaryExpressionAtomContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *BinaryExpressionAtomContext) ExpressionAtom() IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *BinaryExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBinaryExpressionAtom(s)
	}
}

func (s *BinaryExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBinaryExpressionAtom(s)
	}
}

type FullColumnNameExpressionAtomContext struct {
	*ExpressionAtomContext
}

func NewFullColumnNameExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FullColumnNameExpressionAtomContext {
	var p = new(FullColumnNameExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *FullColumnNameExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FullColumnNameExpressionAtomContext) FullColumnName() IFullColumnNameContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IFullColumnNameContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IFullColumnNameContext)
}

func (s *FullColumnNameExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFullColumnNameExpressionAtom(s)
	}
}

func (s *FullColumnNameExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFullColumnNameExpressionAtom(s)
	}
}

type BitExpressionAtomContext struct {
	*ExpressionAtomContext
	left  IExpressionAtomContext
	right IExpressionAtomContext
}

func NewBitExpressionAtomContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BitExpressionAtomContext {
	var p = new(BitExpressionAtomContext)

	p.ExpressionAtomContext = NewEmptyExpressionAtomContext()
	p.parser = parser
	p.CopyFrom(ctx.(*ExpressionAtomContext))

	return p
}

func (s *BitExpressionAtomContext) GetLeft() IExpressionAtomContext { return s.left }

func (s *BitExpressionAtomContext) GetRight() IExpressionAtomContext { return s.right }

func (s *BitExpressionAtomContext) SetLeft(v IExpressionAtomContext) { s.left = v }

func (s *BitExpressionAtomContext) SetRight(v IExpressionAtomContext) { s.right = v }

func (s *BitExpressionAtomContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BitExpressionAtomContext) BitOperator() IBitOperatorContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IBitOperatorContext)(nil)).Elem(), 0)

	if t == nil {
		return nil
	}

	return t.(IBitOperatorContext)
}

func (s *BitExpressionAtomContext) AllExpressionAtom() []IExpressionAtomContext {
	var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem())
	var tst = make([]IExpressionAtomContext, len(ts))

	for i, t := range ts {
		if t != nil {
			tst[i] = t.(IExpressionAtomContext)
		}
	}

	return tst
}

func (s *BitExpressionAtomContext) ExpressionAtom(i int) IExpressionAtomContext {
	var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionAtomContext)(nil)).Elem(), i)

	if t == nil {
		return nil
	}

	return t.(IExpressionAtomContext)
}

func (s *BitExpressionAtomContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBitExpressionAtom(s)
	}
}

func (s *BitExpressionAtomContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBitExpressionAtom(s)
	}
}

func (p *MySqlParser) ExpressionAtom() (localctx IExpressionAtomContext) {
	return p.expressionAtom(0)
}

func (p *MySqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) {
	this := p
	_ = this

	var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext()
	_parentState := p.GetState()
	localctx = NewExpressionAtomContext(p, p.GetParserRuleContext(), _parentState)
	var _prevctx IExpressionAtomContext = localctx
	var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning.
	_startState := 636
	p.EnterRecursionRule(localctx, 636, MySqlParserRULE_expressionAtom, _p)
	var _la int

	defer func() {
		p.UnrollRecursionContexts(_parentctx)
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	var _alt int

	p.EnterOuterAlt(localctx, 1)
	p.SetState(6702)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 972, p.GetParserRuleContext()) {
	case 1:
		localctx = NewConstantExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx

		{
			p.SetState(6658)
			p.Constant()
		}

	case 2:
		localctx = NewFullColumnNameExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6659)
			p.FullColumnName()
		}

	case 3:
		localctx = NewFunctionCallExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6660)
			p.FunctionCall()
		}

	case 4:
		localctx = NewMysqlVariableExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6661)
			p.MysqlVariable()
		}

	case 5:
		localctx = NewUnaryExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6662)
			p.UnaryOperator()
		}
		{
			p.SetState(6663)
			p.expressionAtom(10)
		}

	case 6:
		localctx = NewBinaryExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6665)
			p.Match(MySqlParserBINARY)
		}
		{
			p.SetState(6666)
			p.expressionAtom(9)
		}

	case 7:
		localctx = NewNestedExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6667)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6668)
			p.expression(0)
		}
		p.SetState(6673)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for _la == MySqlParserCOMMA {
			{
				p.SetState(6669)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6670)
				p.expression(0)
			}

			p.SetState(6675)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(6676)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 8:
		localctx = NewNestedRowExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6678)
			p.Match(MySqlParserROW)
		}
		{
			p.SetState(6679)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6680)
			p.expression(0)
		}
		p.SetState(6683)
		p.GetErrorHandler().Sync(p)
		_la = p.GetTokenStream().LA(1)

		for ok := true; ok; ok = _la == MySqlParserCOMMA {
			{
				p.SetState(6681)
				p.Match(MySqlParserCOMMA)
			}
			{
				p.SetState(6682)
				p.expression(0)
			}

			p.SetState(6685)
			p.GetErrorHandler().Sync(p)
			_la = p.GetTokenStream().LA(1)
		}
		{
			p.SetState(6687)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 9:
		localctx = NewExistsExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6689)
			p.Match(MySqlParserEXISTS)
		}
		{
			p.SetState(6690)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6691)
			p.SelectStatement()
		}
		{
			p.SetState(6692)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 10:
		localctx = NewSubqueryExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6694)
			p.Match(MySqlParserLR_BRACKET)
		}
		{
			p.SetState(6695)
			p.SelectStatement()
		}
		{
			p.SetState(6696)
			p.Match(MySqlParserRR_BRACKET)
		}

	case 11:
		localctx = NewIntervalExpressionAtomContext(p, localctx)
		p.SetParserRuleContext(localctx)
		_prevctx = localctx
		{
			p.SetState(6698)
			p.Match(MySqlParserINTERVAL)
		}
		{
			p.SetState(6699)
			p.expression(0)
		}
		{
			p.SetState(6700)
			p.IntervalType()
		}

	}
	p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
	p.SetState(6721)
	p.GetErrorHandler().Sync(p)
	_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 974, p.GetParserRuleContext())

	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
		if _alt == 1 {
			if p.GetParseListeners() != nil {
				p.TriggerExitRuleEvent()
			}
			_prevctx = localctx
			p.SetState(6719)
			p.GetErrorHandler().Sync(p)
			switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 973, p.GetParserRuleContext()) {
			case 1:
				localctx = NewBitExpressionAtomContext(p, NewExpressionAtomContext(p, _parentctx, _parentState))
				localctx.(*BitExpressionAtomContext).left = _prevctx

				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_expressionAtom)
				p.SetState(6704)

				if !(p.Precpred(p.GetParserRuleContext(), 3)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", ""))
				}
				{
					p.SetState(6705)
					p.BitOperator()
				}
				{
					p.SetState(6706)

					var _x = p.expressionAtom(4)

					localctx.(*BitExpressionAtomContext).right = _x
				}

			case 2:
				localctx = NewMathExpressionAtomContext(p, NewExpressionAtomContext(p, _parentctx, _parentState))
				localctx.(*MathExpressionAtomContext).left = _prevctx

				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_expressionAtom)
				p.SetState(6708)

				if !(p.Precpred(p.GetParserRuleContext(), 2)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", ""))
				}
				{
					p.SetState(6709)
					p.MathOperator()
				}
				{
					p.SetState(6710)

					var _x = p.expressionAtom(3)

					localctx.(*MathExpressionAtomContext).right = _x
				}

			case 3:
				localctx = NewJsonExpressionAtomContext(p, NewExpressionAtomContext(p, _parentctx, _parentState))
				localctx.(*JsonExpressionAtomContext).left = _prevctx

				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_expressionAtom)
				p.SetState(6712)

				if !(p.Precpred(p.GetParserRuleContext(), 1)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", ""))
				}
				{
					p.SetState(6713)
					p.JsonOperator()
				}
				{
					p.SetState(6714)

					var _x = p.expressionAtom(2)

					localctx.(*JsonExpressionAtomContext).right = _x
				}

			case 4:
				localctx = NewCollateExpressionAtomContext(p, NewExpressionAtomContext(p, _parentctx, _parentState))
				p.PushNewRecursionContext(localctx, _startState, MySqlParserRULE_expressionAtom)
				p.SetState(6716)

				if !(p.Precpred(p.GetParserRuleContext(), 12)) {
					panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", ""))
				}
				{
					p.SetState(6717)
					p.Match(MySqlParserCOLLATE)
				}
				{
					p.SetState(6718)
					p.CollationName()
				}

			}

		}
		p.SetState(6723)
		p.GetErrorHandler().Sync(p)
		_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 974, p.GetParserRuleContext())
	}

	return localctx
}

// IUnaryOperatorContext is an interface to support dynamic dispatch.
type IUnaryOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsUnaryOperatorContext differentiates from other interfaces.
	IsUnaryOperatorContext()
}

type UnaryOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyUnaryOperatorContext() *UnaryOperatorContext {
	var p = new(UnaryOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_unaryOperator
	return p
}

func (*UnaryOperatorContext) IsUnaryOperatorContext() {}

func NewUnaryOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnaryOperatorContext {
	var p = new(UnaryOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_unaryOperator

	return p
}

func (s *UnaryOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *UnaryOperatorContext) EXCLAMATION_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLAMATION_SYMBOL, 0)
}

func (s *UnaryOperatorContext) BIT_NOT_OP() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_NOT_OP, 0)
}

func (s *UnaryOperatorContext) PLUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUS, 0)
}

func (s *UnaryOperatorContext) MINUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, 0)
}

func (s *UnaryOperatorContext) NOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNOT, 0)
}

func (s *UnaryOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *UnaryOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *UnaryOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterUnaryOperator(s)
	}
}

func (s *UnaryOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitUnaryOperator(s)
	}
}

func (p *MySqlParser) UnaryOperator() (localctx IUnaryOperatorContext) {
	this := p
	_ = this

	localctx = NewUnaryOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 638, MySqlParserRULE_unaryOperator)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6724)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserNOT || (((_la-1071)&-(0x1f+1)) == 0 && ((1<<uint((_la-1071)))&((1<<(MySqlParserPLUS-1071))|(1<<(MySqlParserMINUS-1071))|(1<<(MySqlParserEXCLAMATION_SYMBOL-1071))|(1<<(MySqlParserBIT_NOT_OP-1071)))) != 0)) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IComparisonOperatorContext is an interface to support dynamic dispatch.
type IComparisonOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsComparisonOperatorContext differentiates from other interfaces.
	IsComparisonOperatorContext()
}

type ComparisonOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyComparisonOperatorContext() *ComparisonOperatorContext {
	var p = new(ComparisonOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_comparisonOperator
	return p
}

func (*ComparisonOperatorContext) IsComparisonOperatorContext() {}

func NewComparisonOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ComparisonOperatorContext {
	var p = new(ComparisonOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_comparisonOperator

	return p
}

func (s *ComparisonOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *ComparisonOperatorContext) EQUAL_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUAL_SYMBOL, 0)
}

func (s *ComparisonOperatorContext) GREATER_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGREATER_SYMBOL, 0)
}

func (s *ComparisonOperatorContext) LESS_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLESS_SYMBOL, 0)
}

func (s *ComparisonOperatorContext) EXCLAMATION_SYMBOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLAMATION_SYMBOL, 0)
}

func (s *ComparisonOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *ComparisonOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *ComparisonOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterComparisonOperator(s)
	}
}

func (s *ComparisonOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitComparisonOperator(s)
	}
}

func (p *MySqlParser) ComparisonOperator() (localctx IComparisonOperatorContext) {
	this := p
	_ = this

	localctx = NewComparisonOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 640, MySqlParserRULE_comparisonOperator)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6740)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 975, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6726)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6727)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	case 3:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6728)
			p.Match(MySqlParserLESS_SYMBOL)
		}

	case 4:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6729)
			p.Match(MySqlParserLESS_SYMBOL)
		}
		{
			p.SetState(6730)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	case 5:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6731)
			p.Match(MySqlParserGREATER_SYMBOL)
		}
		{
			p.SetState(6732)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	case 6:
		p.EnterOuterAlt(localctx, 6)
		{
			p.SetState(6733)
			p.Match(MySqlParserLESS_SYMBOL)
		}
		{
			p.SetState(6734)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	case 7:
		p.EnterOuterAlt(localctx, 7)
		{
			p.SetState(6735)
			p.Match(MySqlParserEXCLAMATION_SYMBOL)
		}
		{
			p.SetState(6736)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}

	case 8:
		p.EnterOuterAlt(localctx, 8)
		{
			p.SetState(6737)
			p.Match(MySqlParserLESS_SYMBOL)
		}
		{
			p.SetState(6738)
			p.Match(MySqlParserEQUAL_SYMBOL)
		}
		{
			p.SetState(6739)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	}

	return localctx
}

// ILogicalOperatorContext is an interface to support dynamic dispatch.
type ILogicalOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsLogicalOperatorContext differentiates from other interfaces.
	IsLogicalOperatorContext()
}

type LogicalOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyLogicalOperatorContext() *LogicalOperatorContext {
	var p = new(LogicalOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_logicalOperator
	return p
}

func (*LogicalOperatorContext) IsLogicalOperatorContext() {}

func NewLogicalOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LogicalOperatorContext {
	var p = new(LogicalOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_logicalOperator

	return p
}

func (s *LogicalOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *LogicalOperatorContext) AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserAND, 0)
}

func (s *LogicalOperatorContext) AllBIT_AND_OP() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserBIT_AND_OP)
}

func (s *LogicalOperatorContext) BIT_AND_OP(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_AND_OP, i)
}

func (s *LogicalOperatorContext) XOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserXOR, 0)
}

func (s *LogicalOperatorContext) OR() antlr.TerminalNode {
	return s.GetToken(MySqlParserOR, 0)
}

func (s *LogicalOperatorContext) AllBIT_OR_OP() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserBIT_OR_OP)
}

func (s *LogicalOperatorContext) BIT_OR_OP(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_OR_OP, i)
}

func (s *LogicalOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *LogicalOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *LogicalOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterLogicalOperator(s)
	}
}

func (s *LogicalOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitLogicalOperator(s)
	}
}

func (p *MySqlParser) LogicalOperator() (localctx ILogicalOperatorContext) {
	this := p
	_ = this

	localctx = NewLogicalOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 642, MySqlParserRULE_logicalOperator)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6749)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserAND:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6742)
			p.Match(MySqlParserAND)
		}

	case MySqlParserBIT_AND_OP:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6743)
			p.Match(MySqlParserBIT_AND_OP)
		}
		{
			p.SetState(6744)
			p.Match(MySqlParserBIT_AND_OP)
		}

	case MySqlParserXOR:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6745)
			p.Match(MySqlParserXOR)
		}

	case MySqlParserOR:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6746)
			p.Match(MySqlParserOR)
		}

	case MySqlParserBIT_OR_OP:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6747)
			p.Match(MySqlParserBIT_OR_OP)
		}
		{
			p.SetState(6748)
			p.Match(MySqlParserBIT_OR_OP)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IBitOperatorContext is an interface to support dynamic dispatch.
type IBitOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsBitOperatorContext differentiates from other interfaces.
	IsBitOperatorContext()
}

type BitOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyBitOperatorContext() *BitOperatorContext {
	var p = new(BitOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_bitOperator
	return p
}

func (*BitOperatorContext) IsBitOperatorContext() {}

func NewBitOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BitOperatorContext {
	var p = new(BitOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_bitOperator

	return p
}

func (s *BitOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *BitOperatorContext) AllLESS_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserLESS_SYMBOL)
}

func (s *BitOperatorContext) LESS_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserLESS_SYMBOL, i)
}

func (s *BitOperatorContext) AllGREATER_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserGREATER_SYMBOL)
}

func (s *BitOperatorContext) GREATER_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserGREATER_SYMBOL, i)
}

func (s *BitOperatorContext) BIT_AND_OP() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_AND_OP, 0)
}

func (s *BitOperatorContext) BIT_XOR_OP() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_XOR_OP, 0)
}

func (s *BitOperatorContext) BIT_OR_OP() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_OR_OP, 0)
}

func (s *BitOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *BitOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *BitOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterBitOperator(s)
	}
}

func (s *BitOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitBitOperator(s)
	}
}

func (p *MySqlParser) BitOperator() (localctx IBitOperatorContext) {
	this := p
	_ = this

	localctx = NewBitOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 644, MySqlParserRULE_bitOperator)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6758)
	p.GetErrorHandler().Sync(p)

	switch p.GetTokenStream().LA(1) {
	case MySqlParserLESS_SYMBOL:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6751)
			p.Match(MySqlParserLESS_SYMBOL)
		}
		{
			p.SetState(6752)
			p.Match(MySqlParserLESS_SYMBOL)
		}

	case MySqlParserGREATER_SYMBOL:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6753)
			p.Match(MySqlParserGREATER_SYMBOL)
		}
		{
			p.SetState(6754)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	case MySqlParserBIT_AND_OP:
		p.EnterOuterAlt(localctx, 3)
		{
			p.SetState(6755)
			p.Match(MySqlParserBIT_AND_OP)
		}

	case MySqlParserBIT_XOR_OP:
		p.EnterOuterAlt(localctx, 4)
		{
			p.SetState(6756)
			p.Match(MySqlParserBIT_XOR_OP)
		}

	case MySqlParserBIT_OR_OP:
		p.EnterOuterAlt(localctx, 5)
		{
			p.SetState(6757)
			p.Match(MySqlParserBIT_OR_OP)
		}

	default:
		panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
	}

	return localctx
}

// IMathOperatorContext is an interface to support dynamic dispatch.
type IMathOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsMathOperatorContext differentiates from other interfaces.
	IsMathOperatorContext()
}

type MathOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyMathOperatorContext() *MathOperatorContext {
	var p = new(MathOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_mathOperator
	return p
}

func (*MathOperatorContext) IsMathOperatorContext() {}

func NewMathOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MathOperatorContext {
	var p = new(MathOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_mathOperator

	return p
}

func (s *MathOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *MathOperatorContext) STAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTAR, 0)
}

func (s *MathOperatorContext) DIVIDE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIVIDE, 0)
}

func (s *MathOperatorContext) MODULE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODULE, 0)
}

func (s *MathOperatorContext) DIV() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIV, 0)
}

func (s *MathOperatorContext) MOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMOD, 0)
}

func (s *MathOperatorContext) PLUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUS, 0)
}

func (s *MathOperatorContext) MINUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, 0)
}

func (s *MathOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *MathOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *MathOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterMathOperator(s)
	}
}

func (s *MathOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitMathOperator(s)
	}
}

func (p *MySqlParser) MathOperator() (localctx IMathOperatorContext) {
	this := p
	_ = this

	localctx = NewMathOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 646, MySqlParserRULE_mathOperator)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6760)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-1068)&-(0x1f+1)) == 0 && ((1<<uint((_la-1068)))&((1<<(MySqlParserSTAR-1068))|(1<<(MySqlParserDIVIDE-1068))|(1<<(MySqlParserMODULE-1068))|(1<<(MySqlParserPLUS-1068))|(1<<(MySqlParserMINUS-1068))|(1<<(MySqlParserDIV-1068))|(1<<(MySqlParserMOD-1068)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IJsonOperatorContext is an interface to support dynamic dispatch.
type IJsonOperatorContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsJsonOperatorContext differentiates from other interfaces.
	IsJsonOperatorContext()
}

type JsonOperatorContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyJsonOperatorContext() *JsonOperatorContext {
	var p = new(JsonOperatorContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_jsonOperator
	return p
}

func (*JsonOperatorContext) IsJsonOperatorContext() {}

func NewJsonOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *JsonOperatorContext {
	var p = new(JsonOperatorContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_jsonOperator

	return p
}

func (s *JsonOperatorContext) GetParser() antlr.Parser { return s.parser }

func (s *JsonOperatorContext) MINUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUS, 0)
}

func (s *JsonOperatorContext) AllGREATER_SYMBOL() []antlr.TerminalNode {
	return s.GetTokens(MySqlParserGREATER_SYMBOL)
}

func (s *JsonOperatorContext) GREATER_SYMBOL(i int) antlr.TerminalNode {
	return s.GetToken(MySqlParserGREATER_SYMBOL, i)
}

func (s *JsonOperatorContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *JsonOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *JsonOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterJsonOperator(s)
	}
}

func (s *JsonOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitJsonOperator(s)
	}
}

func (p *MySqlParser) JsonOperator() (localctx IJsonOperatorContext) {
	this := p
	_ = this

	localctx = NewJsonOperatorContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 648, MySqlParserRULE_jsonOperator)

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.SetState(6767)
	p.GetErrorHandler().Sync(p)
	switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 978, p.GetParserRuleContext()) {
	case 1:
		p.EnterOuterAlt(localctx, 1)
		{
			p.SetState(6762)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(6763)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	case 2:
		p.EnterOuterAlt(localctx, 2)
		{
			p.SetState(6764)
			p.Match(MySqlParserMINUS)
		}
		{
			p.SetState(6765)
			p.Match(MySqlParserGREATER_SYMBOL)
		}
		{
			p.SetState(6766)
			p.Match(MySqlParserGREATER_SYMBOL)
		}

	}

	return localctx
}

// ICharsetNameBaseContext is an interface to support dynamic dispatch.
type ICharsetNameBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsCharsetNameBaseContext differentiates from other interfaces.
	IsCharsetNameBaseContext()
}

type CharsetNameBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyCharsetNameBaseContext() *CharsetNameBaseContext {
	var p = new(CharsetNameBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_charsetNameBase
	return p
}

func (*CharsetNameBaseContext) IsCharsetNameBaseContext() {}

func NewCharsetNameBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharsetNameBaseContext {
	var p = new(CharsetNameBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_charsetNameBase

	return p
}

func (s *CharsetNameBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *CharsetNameBaseContext) ARMSCII8() antlr.TerminalNode {
	return s.GetToken(MySqlParserARMSCII8, 0)
}

func (s *CharsetNameBaseContext) ASCII() antlr.TerminalNode {
	return s.GetToken(MySqlParserASCII, 0)
}

func (s *CharsetNameBaseContext) BIG5() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIG5, 0)
}

func (s *CharsetNameBaseContext) BINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINARY, 0)
}

func (s *CharsetNameBaseContext) CP1250() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP1250, 0)
}

func (s *CharsetNameBaseContext) CP1251() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP1251, 0)
}

func (s *CharsetNameBaseContext) CP1256() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP1256, 0)
}

func (s *CharsetNameBaseContext) CP1257() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP1257, 0)
}

func (s *CharsetNameBaseContext) CP850() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP850, 0)
}

func (s *CharsetNameBaseContext) CP852() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP852, 0)
}

func (s *CharsetNameBaseContext) CP866() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP866, 0)
}

func (s *CharsetNameBaseContext) CP932() antlr.TerminalNode {
	return s.GetToken(MySqlParserCP932, 0)
}

func (s *CharsetNameBaseContext) DEC8() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEC8, 0)
}

func (s *CharsetNameBaseContext) EUCJPMS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEUCJPMS, 0)
}

func (s *CharsetNameBaseContext) EUCKR() antlr.TerminalNode {
	return s.GetToken(MySqlParserEUCKR, 0)
}

func (s *CharsetNameBaseContext) GB18030() antlr.TerminalNode {
	return s.GetToken(MySqlParserGB18030, 0)
}

func (s *CharsetNameBaseContext) GB2312() antlr.TerminalNode {
	return s.GetToken(MySqlParserGB2312, 0)
}

func (s *CharsetNameBaseContext) GBK() antlr.TerminalNode {
	return s.GetToken(MySqlParserGBK, 0)
}

func (s *CharsetNameBaseContext) GEOSTD8() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOSTD8, 0)
}

func (s *CharsetNameBaseContext) GREEK() antlr.TerminalNode {
	return s.GetToken(MySqlParserGREEK, 0)
}

func (s *CharsetNameBaseContext) HEBREW() antlr.TerminalNode {
	return s.GetToken(MySqlParserHEBREW, 0)
}

func (s *CharsetNameBaseContext) HP8() antlr.TerminalNode {
	return s.GetToken(MySqlParserHP8, 0)
}

func (s *CharsetNameBaseContext) KEYBCS2() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEYBCS2, 0)
}

func (s *CharsetNameBaseContext) KOI8R() antlr.TerminalNode {
	return s.GetToken(MySqlParserKOI8R, 0)
}

func (s *CharsetNameBaseContext) KOI8U() antlr.TerminalNode {
	return s.GetToken(MySqlParserKOI8U, 0)
}

func (s *CharsetNameBaseContext) LATIN1() antlr.TerminalNode {
	return s.GetToken(MySqlParserLATIN1, 0)
}

func (s *CharsetNameBaseContext) LATIN2() antlr.TerminalNode {
	return s.GetToken(MySqlParserLATIN2, 0)
}

func (s *CharsetNameBaseContext) LATIN5() antlr.TerminalNode {
	return s.GetToken(MySqlParserLATIN5, 0)
}

func (s *CharsetNameBaseContext) LATIN7() antlr.TerminalNode {
	return s.GetToken(MySqlParserLATIN7, 0)
}

func (s *CharsetNameBaseContext) MACCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMACCE, 0)
}

func (s *CharsetNameBaseContext) MACROMAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserMACROMAN, 0)
}

func (s *CharsetNameBaseContext) SJIS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSJIS, 0)
}

func (s *CharsetNameBaseContext) SWE7() antlr.TerminalNode {
	return s.GetToken(MySqlParserSWE7, 0)
}

func (s *CharsetNameBaseContext) TIS620() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIS620, 0)
}

func (s *CharsetNameBaseContext) UCS2() antlr.TerminalNode {
	return s.GetToken(MySqlParserUCS2, 0)
}

func (s *CharsetNameBaseContext) UJIS() antlr.TerminalNode {
	return s.GetToken(MySqlParserUJIS, 0)
}

func (s *CharsetNameBaseContext) UTF16() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF16, 0)
}

func (s *CharsetNameBaseContext) UTF16LE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF16LE, 0)
}

func (s *CharsetNameBaseContext) UTF32() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF32, 0)
}

func (s *CharsetNameBaseContext) UTF8() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF8, 0)
}

func (s *CharsetNameBaseContext) UTF8MB3() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF8MB3, 0)
}

func (s *CharsetNameBaseContext) UTF8MB4() antlr.TerminalNode {
	return s.GetToken(MySqlParserUTF8MB4, 0)
}

func (s *CharsetNameBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *CharsetNameBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *CharsetNameBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterCharsetNameBase(s)
	}
}

func (s *CharsetNameBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitCharsetNameBase(s)
	}
}

func (p *MySqlParser) CharsetNameBase() (localctx ICharsetNameBaseContext) {
	this := p
	_ = this

	localctx = NewCharsetNameBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 650, MySqlParserRULE_charsetNameBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6769)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserBINARY || (((_la-701)&-(0x1f+1)) == 0 && ((1<<uint((_la-701)))&((1<<(MySqlParserARMSCII8-701))|(1<<(MySqlParserASCII-701))|(1<<(MySqlParserBIG5-701))|(1<<(MySqlParserCP1250-701))|(1<<(MySqlParserCP1251-701))|(1<<(MySqlParserCP1256-701))|(1<<(MySqlParserCP1257-701))|(1<<(MySqlParserCP850-701))|(1<<(MySqlParserCP852-701))|(1<<(MySqlParserCP866-701))|(1<<(MySqlParserCP932-701))|(1<<(MySqlParserDEC8-701))|(1<<(MySqlParserEUCJPMS-701))|(1<<(MySqlParserEUCKR-701))|(1<<(MySqlParserGB18030-701))|(1<<(MySqlParserGB2312-701))|(1<<(MySqlParserGBK-701))|(1<<(MySqlParserGEOSTD8-701))|(1<<(MySqlParserGREEK-701))|(1<<(MySqlParserHEBREW-701))|(1<<(MySqlParserHP8-701))|(1<<(MySqlParserKEYBCS2-701))|(1<<(MySqlParserKOI8R-701))|(1<<(MySqlParserKOI8U-701))|(1<<(MySqlParserLATIN1-701))|(1<<(MySqlParserLATIN2-701))|(1<<(MySqlParserLATIN5-701))|(1<<(MySqlParserLATIN7-701))|(1<<(MySqlParserMACCE-701))|(1<<(MySqlParserMACROMAN-701))|(1<<(MySqlParserSJIS-701))|(1<<(MySqlParserSWE7-701)))) != 0) || (((_la-733)&-(0x1f+1)) == 0 && ((1<<uint((_la-733)))&((1<<(MySqlParserTIS620-733))|(1<<(MySqlParserUCS2-733))|(1<<(MySqlParserUJIS-733))|(1<<(MySqlParserUTF16-733))|(1<<(MySqlParserUTF16LE-733))|(1<<(MySqlParserUTF32-733))|(1<<(MySqlParserUTF8-733))|(1<<(MySqlParserUTF8MB3-733))|(1<<(MySqlParserUTF8MB4-733)))) != 0)) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// ITransactionLevelBaseContext is an interface to support dynamic dispatch.
type ITransactionLevelBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsTransactionLevelBaseContext differentiates from other interfaces.
	IsTransactionLevelBaseContext()
}

type TransactionLevelBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyTransactionLevelBaseContext() *TransactionLevelBaseContext {
	var p = new(TransactionLevelBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_transactionLevelBase
	return p
}

func (*TransactionLevelBaseContext) IsTransactionLevelBaseContext() {}

func NewTransactionLevelBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionLevelBaseContext {
	var p = new(TransactionLevelBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_transactionLevelBase

	return p
}

func (s *TransactionLevelBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *TransactionLevelBaseContext) REPEATABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPEATABLE, 0)
}

func (s *TransactionLevelBaseContext) COMMITTED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMITTED, 0)
}

func (s *TransactionLevelBaseContext) UNCOMMITTED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNCOMMITTED, 0)
}

func (s *TransactionLevelBaseContext) SERIALIZABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERIALIZABLE, 0)
}

func (s *TransactionLevelBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *TransactionLevelBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *TransactionLevelBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterTransactionLevelBase(s)
	}
}

func (s *TransactionLevelBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitTransactionLevelBase(s)
	}
}

func (p *MySqlParser) TransactionLevelBase() (localctx ITransactionLevelBaseContext) {
	this := p
	_ = this

	localctx = NewTransactionLevelBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 652, MySqlParserRULE_transactionLevelBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6771)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-754)&-(0x1f+1)) == 0 && ((1<<uint((_la-754)))&((1<<(MySqlParserREPEATABLE-754))|(1<<(MySqlParserCOMMITTED-754))|(1<<(MySqlParserUNCOMMITTED-754))|(1<<(MySqlParserSERIALIZABLE-754)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IPrivilegesBaseContext is an interface to support dynamic dispatch.
type IPrivilegesBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsPrivilegesBaseContext differentiates from other interfaces.
	IsPrivilegesBaseContext()
}

type PrivilegesBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyPrivilegesBaseContext() *PrivilegesBaseContext {
	var p = new(PrivilegesBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_privilegesBase
	return p
}

func (*PrivilegesBaseContext) IsPrivilegesBaseContext() {}

func NewPrivilegesBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrivilegesBaseContext {
	var p = new(PrivilegesBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_privilegesBase

	return p
}

func (s *PrivilegesBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *PrivilegesBaseContext) TABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLES, 0)
}

func (s *PrivilegesBaseContext) ROUTINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROUTINE, 0)
}

func (s *PrivilegesBaseContext) EXECUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXECUTE, 0)
}

func (s *PrivilegesBaseContext) FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILE, 0)
}

func (s *PrivilegesBaseContext) PROCESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCESS, 0)
}

func (s *PrivilegesBaseContext) RELOAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELOAD, 0)
}

func (s *PrivilegesBaseContext) SHUTDOWN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHUTDOWN, 0)
}

func (s *PrivilegesBaseContext) SUPER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUPER, 0)
}

func (s *PrivilegesBaseContext) PRIVILEGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRIVILEGES, 0)
}

func (s *PrivilegesBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *PrivilegesBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *PrivilegesBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterPrivilegesBase(s)
	}
}

func (s *PrivilegesBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitPrivilegesBase(s)
	}
}

func (p *MySqlParser) PrivilegesBase() (localctx IPrivilegesBaseContext) {
	this := p
	_ = this

	localctx = NewPrivilegesBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 654, MySqlParserRULE_privilegesBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6773)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-660)&-(0x1f+1)) == 0 && ((1<<uint((_la-660)))&((1<<(MySqlParserTABLES-660))|(1<<(MySqlParserROUTINE-660))|(1<<(MySqlParserEXECUTE-660))|(1<<(MySqlParserFILE-660))|(1<<(MySqlParserPROCESS-660))|(1<<(MySqlParserRELOAD-660))|(1<<(MySqlParserSHUTDOWN-660))|(1<<(MySqlParserSUPER-660))|(1<<(MySqlParserPRIVILEGES-660)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IIntervalTypeBaseContext is an interface to support dynamic dispatch.
type IIntervalTypeBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsIntervalTypeBaseContext differentiates from other interfaces.
	IsIntervalTypeBaseContext()
}

type IntervalTypeBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyIntervalTypeBaseContext() *IntervalTypeBaseContext {
	var p = new(IntervalTypeBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_intervalTypeBase
	return p
}

func (*IntervalTypeBaseContext) IsIntervalTypeBaseContext() {}

func NewIntervalTypeBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IntervalTypeBaseContext {
	var p = new(IntervalTypeBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_intervalTypeBase

	return p
}

func (s *IntervalTypeBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *IntervalTypeBaseContext) QUARTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUARTER, 0)
}

func (s *IntervalTypeBaseContext) MONTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMONTH, 0)
}

func (s *IntervalTypeBaseContext) DAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY, 0)
}

func (s *IntervalTypeBaseContext) HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOUR, 0)
}

func (s *IntervalTypeBaseContext) MINUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUTE, 0)
}

func (s *IntervalTypeBaseContext) WEEK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEEK, 0)
}

func (s *IntervalTypeBaseContext) SECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECOND, 0)
}

func (s *IntervalTypeBaseContext) MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserMICROSECOND, 0)
}

func (s *IntervalTypeBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *IntervalTypeBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *IntervalTypeBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterIntervalTypeBase(s)
	}
}

func (s *IntervalTypeBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitIntervalTypeBase(s)
	}
}

func (p *MySqlParser) IntervalTypeBase() (localctx IIntervalTypeBaseContext) {
	this := p
	_ = this

	localctx = NewIntervalTypeBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 656, MySqlParserRULE_intervalTypeBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6775)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-652)&-(0x1f+1)) == 0 && ((1<<uint((_la-652)))&((1<<(MySqlParserQUARTER-652))|(1<<(MySqlParserMONTH-652))|(1<<(MySqlParserDAY-652))|(1<<(MySqlParserHOUR-652))|(1<<(MySqlParserMINUTE-652))|(1<<(MySqlParserWEEK-652))|(1<<(MySqlParserSECOND-652))|(1<<(MySqlParserMICROSECOND-652)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IDataTypeBaseContext is an interface to support dynamic dispatch.
type IDataTypeBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsDataTypeBaseContext differentiates from other interfaces.
	IsDataTypeBaseContext()
}

type DataTypeBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyDataTypeBaseContext() *DataTypeBaseContext {
	var p = new(DataTypeBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_dataTypeBase
	return p
}

func (*DataTypeBaseContext) IsDataTypeBaseContext() {}

func NewDataTypeBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DataTypeBaseContext {
	var p = new(DataTypeBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_dataTypeBase

	return p
}

func (s *DataTypeBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *DataTypeBaseContext) DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE, 0)
}

func (s *DataTypeBaseContext) TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME, 0)
}

func (s *DataTypeBaseContext) TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMESTAMP, 0)
}

func (s *DataTypeBaseContext) DATETIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATETIME, 0)
}

func (s *DataTypeBaseContext) YEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEAR, 0)
}

func (s *DataTypeBaseContext) ENUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserENUM, 0)
}

func (s *DataTypeBaseContext) TEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEXT, 0)
}

func (s *DataTypeBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *DataTypeBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *DataTypeBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterDataTypeBase(s)
	}
}

func (s *DataTypeBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitDataTypeBase(s)
	}
}

func (p *MySqlParser) DataTypeBase() (localctx IDataTypeBaseContext) {
	this := p
	_ = this

	localctx = NewDataTypeBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 658, MySqlParserRULE_dataTypeBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6777)
		_la = p.GetTokenStream().LA(1)

		if !(((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserDATETIME-206))|(1<<(MySqlParserYEAR-206))|(1<<(MySqlParserTEXT-206))|(1<<(MySqlParserENUM-206)))) != 0) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IKeywordsCanBeIdContext is an interface to support dynamic dispatch.
type IKeywordsCanBeIdContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsKeywordsCanBeIdContext differentiates from other interfaces.
	IsKeywordsCanBeIdContext()
}

type KeywordsCanBeIdContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyKeywordsCanBeIdContext() *KeywordsCanBeIdContext {
	var p = new(KeywordsCanBeIdContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_keywordsCanBeId
	return p
}

func (*KeywordsCanBeIdContext) IsKeywordsCanBeIdContext() {}

func NewKeywordsCanBeIdContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordsCanBeIdContext {
	var p = new(KeywordsCanBeIdContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_keywordsCanBeId

	return p
}

func (s *KeywordsCanBeIdContext) GetParser() antlr.Parser { return s.parser }

func (s *KeywordsCanBeIdContext) ACCOUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserACCOUNT, 0)
}

func (s *KeywordsCanBeIdContext) ACTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserACTION, 0)
}

func (s *KeywordsCanBeIdContext) AFTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserAFTER, 0)
}

func (s *KeywordsCanBeIdContext) AGGREGATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserAGGREGATE, 0)
}

func (s *KeywordsCanBeIdContext) ALGORITHM() antlr.TerminalNode {
	return s.GetToken(MySqlParserALGORITHM, 0)
}

func (s *KeywordsCanBeIdContext) ANY() antlr.TerminalNode {
	return s.GetToken(MySqlParserANY, 0)
}

func (s *KeywordsCanBeIdContext) AT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAT, 0)
}

func (s *KeywordsCanBeIdContext) AUDIT_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUDIT_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) AUTHORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTHORS, 0)
}

func (s *KeywordsCanBeIdContext) AUTOCOMMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTOCOMMIT, 0)
}

func (s *KeywordsCanBeIdContext) AUTOEXTEND_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTOEXTEND_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) AUTO_INCREMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAUTO_INCREMENT, 0)
}

func (s *KeywordsCanBeIdContext) AVG() antlr.TerminalNode {
	return s.GetToken(MySqlParserAVG, 0)
}

func (s *KeywordsCanBeIdContext) AVG_ROW_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserAVG_ROW_LENGTH, 0)
}

func (s *KeywordsCanBeIdContext) BACKUP_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBACKUP_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) BEGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBEGIN, 0)
}

func (s *KeywordsCanBeIdContext) BINLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG, 0)
}

func (s *KeywordsCanBeIdContext) BINLOG_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) BINLOG_ENCRYPTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBINLOG_ENCRYPTION_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) BIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT, 0)
}

func (s *KeywordsCanBeIdContext) BIT_AND() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_AND, 0)
}

func (s *KeywordsCanBeIdContext) BIT_OR() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_OR, 0)
}

func (s *KeywordsCanBeIdContext) BIT_XOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_XOR, 0)
}

func (s *KeywordsCanBeIdContext) BLOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserBLOCK, 0)
}

func (s *KeywordsCanBeIdContext) BOOL() antlr.TerminalNode {
	return s.GetToken(MySqlParserBOOL, 0)
}

func (s *KeywordsCanBeIdContext) BOOLEAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBOOLEAN, 0)
}

func (s *KeywordsCanBeIdContext) BTREE() antlr.TerminalNode {
	return s.GetToken(MySqlParserBTREE, 0)
}

func (s *KeywordsCanBeIdContext) CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCACHE, 0)
}

func (s *KeywordsCanBeIdContext) CASCADED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCASCADED, 0)
}

func (s *KeywordsCanBeIdContext) CHAIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAIN, 0)
}

func (s *KeywordsCanBeIdContext) CHANGED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANGED, 0)
}

func (s *KeywordsCanBeIdContext) CHANNEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHANNEL, 0)
}

func (s *KeywordsCanBeIdContext) CHECKSUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHECKSUM, 0)
}

func (s *KeywordsCanBeIdContext) PAGE_CHECKSUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserPAGE_CHECKSUM, 0)
}

func (s *KeywordsCanBeIdContext) CATALOG_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCATALOG_NAME, 0)
}

func (s *KeywordsCanBeIdContext) CIPHER() antlr.TerminalNode {
	return s.GetToken(MySqlParserCIPHER, 0)
}

func (s *KeywordsCanBeIdContext) CLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLASS_ORIGIN, 0)
}

func (s *KeywordsCanBeIdContext) CLIENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLIENT, 0)
}

func (s *KeywordsCanBeIdContext) CLONE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLONE_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) CLOSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCLOSE, 0)
}

func (s *KeywordsCanBeIdContext) COALESCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOALESCE, 0)
}

func (s *KeywordsCanBeIdContext) CODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserCODE, 0)
}

func (s *KeywordsCanBeIdContext) COLUMNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMNS, 0)
}

func (s *KeywordsCanBeIdContext) COLUMN_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN_FORMAT, 0)
}

func (s *KeywordsCanBeIdContext) COLUMN_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLUMN_NAME, 0)
}

func (s *KeywordsCanBeIdContext) COMMENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMENT, 0)
}

func (s *KeywordsCanBeIdContext) COMMIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMMIT, 0)
}

func (s *KeywordsCanBeIdContext) COMPACT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPACT, 0)
}

func (s *KeywordsCanBeIdContext) COMPLETION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPLETION, 0)
}

func (s *KeywordsCanBeIdContext) COMPRESSED() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPRESSED, 0)
}

func (s *KeywordsCanBeIdContext) COMPRESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPRESSION, 0)
}

func (s *KeywordsCanBeIdContext) CONCURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONCURRENT, 0)
}

func (s *KeywordsCanBeIdContext) CONNECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECT, 0)
}

func (s *KeywordsCanBeIdContext) CONNECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION, 0)
}

func (s *KeywordsCanBeIdContext) CONNECTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) CONSISTENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSISTENT, 0)
}

func (s *KeywordsCanBeIdContext) CONSTRAINT_CATALOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_CATALOG, 0)
}

func (s *KeywordsCanBeIdContext) CONSTRAINT_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_NAME, 0)
}

func (s *KeywordsCanBeIdContext) CONSTRAINT_SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONSTRAINT_SCHEMA, 0)
}

func (s *KeywordsCanBeIdContext) CONTAINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTAINS, 0)
}

func (s *KeywordsCanBeIdContext) CONTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTEXT, 0)
}

func (s *KeywordsCanBeIdContext) CONTRIBUTORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONTRIBUTORS, 0)
}

func (s *KeywordsCanBeIdContext) COPY() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOPY, 0)
}

func (s *KeywordsCanBeIdContext) COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOUNT, 0)
}

func (s *KeywordsCanBeIdContext) CPU() antlr.TerminalNode {
	return s.GetToken(MySqlParserCPU, 0)
}

func (s *KeywordsCanBeIdContext) CURRENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURRENT, 0)
}

func (s *KeywordsCanBeIdContext) CURSOR_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserCURSOR_NAME, 0)
}

func (s *KeywordsCanBeIdContext) DATA() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATA, 0)
}

func (s *KeywordsCanBeIdContext) DATAFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATAFILE, 0)
}

func (s *KeywordsCanBeIdContext) DEALLOCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEALLOCATE, 0)
}

func (s *KeywordsCanBeIdContext) DEFAULT_AUTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFAULT_AUTH, 0)
}

func (s *KeywordsCanBeIdContext) DEFINER() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEFINER, 0)
}

func (s *KeywordsCanBeIdContext) DELAY_KEY_WRITE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDELAY_KEY_WRITE, 0)
}

func (s *KeywordsCanBeIdContext) DES_KEY_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDES_KEY_FILE, 0)
}

func (s *KeywordsCanBeIdContext) DIAGNOSTICS() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIAGNOSTICS, 0)
}

func (s *KeywordsCanBeIdContext) DIRECTORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIRECTORY, 0)
}

func (s *KeywordsCanBeIdContext) DISABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISABLE, 0)
}

func (s *KeywordsCanBeIdContext) DISCARD() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISCARD, 0)
}

func (s *KeywordsCanBeIdContext) DISK() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISK, 0)
}

func (s *KeywordsCanBeIdContext) DO() antlr.TerminalNode {
	return s.GetToken(MySqlParserDO, 0)
}

func (s *KeywordsCanBeIdContext) DUMPFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDUMPFILE, 0)
}

func (s *KeywordsCanBeIdContext) DUPLICATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDUPLICATE, 0)
}

func (s *KeywordsCanBeIdContext) DYNAMIC() antlr.TerminalNode {
	return s.GetToken(MySqlParserDYNAMIC, 0)
}

func (s *KeywordsCanBeIdContext) ENABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENABLE, 0)
}

func (s *KeywordsCanBeIdContext) ENCRYPTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCRYPTION, 0)
}

func (s *KeywordsCanBeIdContext) ENCRYPTION_KEY_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCRYPTION_KEY_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) END() antlr.TerminalNode {
	return s.GetToken(MySqlParserEND, 0)
}

func (s *KeywordsCanBeIdContext) ENDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserENDS, 0)
}

func (s *KeywordsCanBeIdContext) ENGINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINE, 0)
}

func (s *KeywordsCanBeIdContext) ENGINES() antlr.TerminalNode {
	return s.GetToken(MySqlParserENGINES, 0)
}

func (s *KeywordsCanBeIdContext) ERROR() antlr.TerminalNode {
	return s.GetToken(MySqlParserERROR, 0)
}

func (s *KeywordsCanBeIdContext) ERRORS() antlr.TerminalNode {
	return s.GetToken(MySqlParserERRORS, 0)
}

func (s *KeywordsCanBeIdContext) ESCAPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserESCAPE, 0)
}

func (s *KeywordsCanBeIdContext) EUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserEUR, 0)
}

func (s *KeywordsCanBeIdContext) EVEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVEN, 0)
}

func (s *KeywordsCanBeIdContext) EVENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENT, 0)
}

func (s *KeywordsCanBeIdContext) EVENTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVENTS, 0)
}

func (s *KeywordsCanBeIdContext) EVERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserEVERY, 0)
}

func (s *KeywordsCanBeIdContext) EXCEPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCEPT, 0)
}

func (s *KeywordsCanBeIdContext) EXCHANGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCHANGE, 0)
}

func (s *KeywordsCanBeIdContext) EXCLUSIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXCLUSIVE, 0)
}

func (s *KeywordsCanBeIdContext) EXPIRE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPIRE, 0)
}

func (s *KeywordsCanBeIdContext) EXPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPORT, 0)
}

func (s *KeywordsCanBeIdContext) EXTENDED() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENDED, 0)
}

func (s *KeywordsCanBeIdContext) EXTENT_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTENT_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) FAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFAST, 0)
}

func (s *KeywordsCanBeIdContext) FAULTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFAULTS, 0)
}

func (s *KeywordsCanBeIdContext) FIELDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIELDS, 0)
}

func (s *KeywordsCanBeIdContext) FILE_BLOCK_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILE_BLOCK_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) FILTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserFILTER, 0)
}

func (s *KeywordsCanBeIdContext) FIREWALL_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIREWALL_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) FIREWALL_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIREWALL_USER, 0)
}

func (s *KeywordsCanBeIdContext) FIRST() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIRST, 0)
}

func (s *KeywordsCanBeIdContext) FIXED() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIXED, 0)
}

func (s *KeywordsCanBeIdContext) FLUSH() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLUSH, 0)
}

func (s *KeywordsCanBeIdContext) FOLLOWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOLLOWS, 0)
}

func (s *KeywordsCanBeIdContext) FOUND() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOUND, 0)
}

func (s *KeywordsCanBeIdContext) FULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserFULL, 0)
}

func (s *KeywordsCanBeIdContext) FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserFUNCTION, 0)
}

func (s *KeywordsCanBeIdContext) GENERAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGENERAL, 0)
}

func (s *KeywordsCanBeIdContext) GLOBAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLOBAL, 0)
}

func (s *KeywordsCanBeIdContext) GRANTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserGRANTS, 0)
}

func (s *KeywordsCanBeIdContext) GROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP, 0)
}

func (s *KeywordsCanBeIdContext) GROUP_CONCAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_CONCAT, 0)
}

func (s *KeywordsCanBeIdContext) GROUP_REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_REPLICATION, 0)
}

func (s *KeywordsCanBeIdContext) GROUP_REPLICATION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserGROUP_REPLICATION_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) HANDLER() antlr.TerminalNode {
	return s.GetToken(MySqlParserHANDLER, 0)
}

func (s *KeywordsCanBeIdContext) HASH() antlr.TerminalNode {
	return s.GetToken(MySqlParserHASH, 0)
}

func (s *KeywordsCanBeIdContext) HELP() antlr.TerminalNode {
	return s.GetToken(MySqlParserHELP, 0)
}

func (s *KeywordsCanBeIdContext) HOST() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOST, 0)
}

func (s *KeywordsCanBeIdContext) HOSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOSTS, 0)
}

func (s *KeywordsCanBeIdContext) IDENTIFIED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIDENTIFIED, 0)
}

func (s *KeywordsCanBeIdContext) IGNORE_SERVER_IDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserIGNORE_SERVER_IDS, 0)
}

func (s *KeywordsCanBeIdContext) IMPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserIMPORT, 0)
}

func (s *KeywordsCanBeIdContext) INDEXES() antlr.TerminalNode {
	return s.GetToken(MySqlParserINDEXES, 0)
}

func (s *KeywordsCanBeIdContext) INITIAL_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINITIAL_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) INNODB_REDO_LOG_ARCHIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINNODB_REDO_LOG_ARCHIVE, 0)
}

func (s *KeywordsCanBeIdContext) INPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINPLACE, 0)
}

func (s *KeywordsCanBeIdContext) INSERT_METHOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSERT_METHOD, 0)
}

func (s *KeywordsCanBeIdContext) INSTALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSTALL, 0)
}

func (s *KeywordsCanBeIdContext) INSTANCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSTANCE, 0)
}

func (s *KeywordsCanBeIdContext) INTERNAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERNAL, 0)
}

func (s *KeywordsCanBeIdContext) INVOKER() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVOKER, 0)
}

func (s *KeywordsCanBeIdContext) IO() antlr.TerminalNode {
	return s.GetToken(MySqlParserIO, 0)
}

func (s *KeywordsCanBeIdContext) IO_THREAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserIO_THREAD, 0)
}

func (s *KeywordsCanBeIdContext) IPC() antlr.TerminalNode {
	return s.GetToken(MySqlParserIPC, 0)
}

func (s *KeywordsCanBeIdContext) ISO() antlr.TerminalNode {
	return s.GetToken(MySqlParserISO, 0)
}

func (s *KeywordsCanBeIdContext) ISOLATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserISOLATION, 0)
}

func (s *KeywordsCanBeIdContext) ISSUER() antlr.TerminalNode {
	return s.GetToken(MySqlParserISSUER, 0)
}

func (s *KeywordsCanBeIdContext) JIS() antlr.TerminalNode {
	return s.GetToken(MySqlParserJIS, 0)
}

func (s *KeywordsCanBeIdContext) JSON() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON, 0)
}

func (s *KeywordsCanBeIdContext) KEY_BLOCK_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserKEY_BLOCK_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) LANGUAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLANGUAGE, 0)
}

func (s *KeywordsCanBeIdContext) LAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAST, 0)
}

func (s *KeywordsCanBeIdContext) LEAVES() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEAVES, 0)
}

func (s *KeywordsCanBeIdContext) LESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLESS, 0)
}

func (s *KeywordsCanBeIdContext) LEVEL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEVEL, 0)
}

func (s *KeywordsCanBeIdContext) LIST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLIST, 0)
}

func (s *KeywordsCanBeIdContext) LOCAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCAL, 0)
}

func (s *KeywordsCanBeIdContext) LOGFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGFILE, 0)
}

func (s *KeywordsCanBeIdContext) LOGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOGS, 0)
}

func (s *KeywordsCanBeIdContext) MASTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_AUTO_POSITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_AUTO_POSITION, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_CONNECT_RETRY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_CONNECT_RETRY, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_DELAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_DELAY, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_HEARTBEAT_PERIOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_HEARTBEAT_PERIOD, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_HOST() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_HOST, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_FILE, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_LOG_POS, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_PASSWORD, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_PORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_PORT, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_RETRY_COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_RETRY_COUNT, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CA() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CA, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CAPATH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CAPATH, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CERT, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CIPHER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CIPHER, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CRL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CRL, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_CRLPATH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_CRLPATH, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_SSL_KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_SSL_KEY, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_TLS_VERSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_TLS_VERSION, 0)
}

func (s *KeywordsCanBeIdContext) MASTER_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_USER, 0)
}

func (s *KeywordsCanBeIdContext) MAX_CONNECTIONS_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_CONNECTIONS_PER_HOUR, 0)
}

func (s *KeywordsCanBeIdContext) MAX_QUERIES_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_QUERIES_PER_HOUR, 0)
}

func (s *KeywordsCanBeIdContext) MAX() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX, 0)
}

func (s *KeywordsCanBeIdContext) MAX_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_ROWS, 0)
}

func (s *KeywordsCanBeIdContext) MAX_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) MAX_UPDATES_PER_HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_UPDATES_PER_HOUR, 0)
}

func (s *KeywordsCanBeIdContext) MAX_USER_CONNECTIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAX_USER_CONNECTIONS, 0)
}

func (s *KeywordsCanBeIdContext) MEDIUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEDIUM, 0)
}

func (s *KeywordsCanBeIdContext) MEMBER() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMBER, 0)
}

func (s *KeywordsCanBeIdContext) MEMORY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMEMORY, 0)
}

func (s *KeywordsCanBeIdContext) MERGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMERGE, 0)
}

func (s *KeywordsCanBeIdContext) MESSAGE_TEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMESSAGE_TEXT, 0)
}

func (s *KeywordsCanBeIdContext) MID() antlr.TerminalNode {
	return s.GetToken(MySqlParserMID, 0)
}

func (s *KeywordsCanBeIdContext) MIGRATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIGRATE, 0)
}

func (s *KeywordsCanBeIdContext) MIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIN, 0)
}

func (s *KeywordsCanBeIdContext) MIN_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMIN_ROWS, 0)
}

func (s *KeywordsCanBeIdContext) MODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODE, 0)
}

func (s *KeywordsCanBeIdContext) MODIFY() antlr.TerminalNode {
	return s.GetToken(MySqlParserMODIFY, 0)
}

func (s *KeywordsCanBeIdContext) MUTEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserMUTEX, 0)
}

func (s *KeywordsCanBeIdContext) MYSQL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL, 0)
}

func (s *KeywordsCanBeIdContext) MYSQL_ERRNO() antlr.TerminalNode {
	return s.GetToken(MySqlParserMYSQL_ERRNO, 0)
}

func (s *KeywordsCanBeIdContext) NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserNAME, 0)
}

func (s *KeywordsCanBeIdContext) NAMES() antlr.TerminalNode {
	return s.GetToken(MySqlParserNAMES, 0)
}

func (s *KeywordsCanBeIdContext) NCHAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserNCHAR, 0)
}

func (s *KeywordsCanBeIdContext) NDB_STORED_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNDB_STORED_USER, 0)
}

func (s *KeywordsCanBeIdContext) NEVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEVER, 0)
}

func (s *KeywordsCanBeIdContext) NEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserNEXT, 0)
}

func (s *KeywordsCanBeIdContext) NO() antlr.TerminalNode {
	return s.GetToken(MySqlParserNO, 0)
}

func (s *KeywordsCanBeIdContext) NODEGROUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserNODEGROUP, 0)
}

func (s *KeywordsCanBeIdContext) NONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserNONE, 0)
}

func (s *KeywordsCanBeIdContext) NUMBER() antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMBER, 0)
}

func (s *KeywordsCanBeIdContext) OFFLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFLINE, 0)
}

func (s *KeywordsCanBeIdContext) ODBC() antlr.TerminalNode {
	return s.GetToken(MySqlParserODBC, 0)
}

func (s *KeywordsCanBeIdContext) OFFSET() antlr.TerminalNode {
	return s.GetToken(MySqlParserOFFSET, 0)
}

func (s *KeywordsCanBeIdContext) OF() antlr.TerminalNode {
	return s.GetToken(MySqlParserOF, 0)
}

func (s *KeywordsCanBeIdContext) OJ() antlr.TerminalNode {
	return s.GetToken(MySqlParserOJ, 0)
}

func (s *KeywordsCanBeIdContext) OLD_PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserOLD_PASSWORD, 0)
}

func (s *KeywordsCanBeIdContext) ONE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONE, 0)
}

func (s *KeywordsCanBeIdContext) ONLINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLINE, 0)
}

func (s *KeywordsCanBeIdContext) ONLY() antlr.TerminalNode {
	return s.GetToken(MySqlParserONLY, 0)
}

func (s *KeywordsCanBeIdContext) OPEN() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPEN, 0)
}

func (s *KeywordsCanBeIdContext) OPTIMIZER_COSTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIMIZER_COSTS, 0)
}

func (s *KeywordsCanBeIdContext) OPTIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIONAL, 0)
}

func (s *KeywordsCanBeIdContext) OPTIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOPTIONS, 0)
}

func (s *KeywordsCanBeIdContext) ORDER() antlr.TerminalNode {
	return s.GetToken(MySqlParserORDER, 0)
}

func (s *KeywordsCanBeIdContext) OWNER() antlr.TerminalNode {
	return s.GetToken(MySqlParserOWNER, 0)
}

func (s *KeywordsCanBeIdContext) PACK_KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPACK_KEYS, 0)
}

func (s *KeywordsCanBeIdContext) PAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPAGE, 0)
}

func (s *KeywordsCanBeIdContext) PARSER() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARSER, 0)
}

func (s *KeywordsCanBeIdContext) PARTIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTIAL, 0)
}

func (s *KeywordsCanBeIdContext) PARTITIONING() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONING, 0)
}

func (s *KeywordsCanBeIdContext) PARTITIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPARTITIONS, 0)
}

func (s *KeywordsCanBeIdContext) PASSWORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPASSWORD, 0)
}

func (s *KeywordsCanBeIdContext) PERSIST_RO_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERSIST_RO_VARIABLES_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) PHASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPHASE, 0)
}

func (s *KeywordsCanBeIdContext) PLUGINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGINS, 0)
}

func (s *KeywordsCanBeIdContext) PLUGIN_DIR() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGIN_DIR, 0)
}

func (s *KeywordsCanBeIdContext) PLUGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPLUGIN, 0)
}

func (s *KeywordsCanBeIdContext) PORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPORT, 0)
}

func (s *KeywordsCanBeIdContext) PRECEDES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRECEDES, 0)
}

func (s *KeywordsCanBeIdContext) PREPARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREPARE, 0)
}

func (s *KeywordsCanBeIdContext) PRESERVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPRESERVE, 0)
}

func (s *KeywordsCanBeIdContext) PREV() antlr.TerminalNode {
	return s.GetToken(MySqlParserPREV, 0)
}

func (s *KeywordsCanBeIdContext) PROCESSLIST() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROCESSLIST, 0)
}

func (s *KeywordsCanBeIdContext) PROFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROFILE, 0)
}

func (s *KeywordsCanBeIdContext) PROFILES() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROFILES, 0)
}

func (s *KeywordsCanBeIdContext) PROXY() antlr.TerminalNode {
	return s.GetToken(MySqlParserPROXY, 0)
}

func (s *KeywordsCanBeIdContext) QUERY() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUERY, 0)
}

func (s *KeywordsCanBeIdContext) QUICK() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUICK, 0)
}

func (s *KeywordsCanBeIdContext) REBUILD() antlr.TerminalNode {
	return s.GetToken(MySqlParserREBUILD, 0)
}

func (s *KeywordsCanBeIdContext) RECOVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserRECOVER, 0)
}

func (s *KeywordsCanBeIdContext) REDO_BUFFER_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREDO_BUFFER_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) REDUNDANT() antlr.TerminalNode {
	return s.GetToken(MySqlParserREDUNDANT, 0)
}

func (s *KeywordsCanBeIdContext) RELAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY, 0)
}

func (s *KeywordsCanBeIdContext) RELAYLOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAYLOG, 0)
}

func (s *KeywordsCanBeIdContext) RELAY_LOG_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_FILE, 0)
}

func (s *KeywordsCanBeIdContext) RELAY_LOG_POS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELAY_LOG_POS, 0)
}

func (s *KeywordsCanBeIdContext) REMOVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREMOVE, 0)
}

func (s *KeywordsCanBeIdContext) REORGANIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREORGANIZE, 0)
}

func (s *KeywordsCanBeIdContext) REPAIR() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPAIR, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_DO_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_DO_DB, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_DO_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_DO_TABLE, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_IGNORE_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_IGNORE_DB, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_IGNORE_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_IGNORE_TABLE, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_REWRITE_DB() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_REWRITE_DB, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_WILD_DO_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_WILD_DO_TABLE, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATE_WILD_IGNORE_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATE_WILD_IGNORE_TABLE, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATION_APPLIER() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION_APPLIER, 0)
}

func (s *KeywordsCanBeIdContext) REPLICATION_SLAVE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserREPLICATION_SLAVE_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) RESET() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESET, 0)
}

func (s *KeywordsCanBeIdContext) RESOURCE_GROUP_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESOURCE_GROUP_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) RESOURCE_GROUP_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESOURCE_GROUP_USER, 0)
}

func (s *KeywordsCanBeIdContext) RESUME() antlr.TerminalNode {
	return s.GetToken(MySqlParserRESUME, 0)
}

func (s *KeywordsCanBeIdContext) RETURNED_SQLSTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNED_SQLSTATE, 0)
}

func (s *KeywordsCanBeIdContext) RETURNS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRETURNS, 0)
}

func (s *KeywordsCanBeIdContext) ROLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLE, 0)
}

func (s *KeywordsCanBeIdContext) ROLE_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLE_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) ROLLBACK() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLBACK, 0)
}

func (s *KeywordsCanBeIdContext) ROLLUP() antlr.TerminalNode {
	return s.GetToken(MySqlParserROLLUP, 0)
}

func (s *KeywordsCanBeIdContext) ROTATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserROTATE, 0)
}

func (s *KeywordsCanBeIdContext) ROW() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW, 0)
}

func (s *KeywordsCanBeIdContext) ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserROWS, 0)
}

func (s *KeywordsCanBeIdContext) ROW_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW_FORMAT, 0)
}

func (s *KeywordsCanBeIdContext) SAVEPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSAVEPOINT, 0)
}

func (s *KeywordsCanBeIdContext) SCHEDULE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEDULE, 0)
}

func (s *KeywordsCanBeIdContext) SCHEMA_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA_NAME, 0)
}

func (s *KeywordsCanBeIdContext) SECURITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECURITY, 0)
}

func (s *KeywordsCanBeIdContext) SERIAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERIAL, 0)
}

func (s *KeywordsCanBeIdContext) SERVER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSERVER, 0)
}

func (s *KeywordsCanBeIdContext) SESSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION, 0)
}

func (s *KeywordsCanBeIdContext) SESSION_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION_VARIABLES_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) SET_USER_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserSET_USER_ID, 0)
}

func (s *KeywordsCanBeIdContext) SHARE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARE, 0)
}

func (s *KeywordsCanBeIdContext) SHARED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHARED, 0)
}

func (s *KeywordsCanBeIdContext) SHOW_ROUTINE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHOW_ROUTINE, 0)
}

func (s *KeywordsCanBeIdContext) SIGNED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIGNED, 0)
}

func (s *KeywordsCanBeIdContext) SIMPLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIMPLE, 0)
}

func (s *KeywordsCanBeIdContext) SLAVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLAVE, 0)
}

func (s *KeywordsCanBeIdContext) SLOW() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLOW, 0)
}

func (s *KeywordsCanBeIdContext) SNAPSHOT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSNAPSHOT, 0)
}

func (s *KeywordsCanBeIdContext) SOCKET() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOCKET, 0)
}

func (s *KeywordsCanBeIdContext) SOME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOME, 0)
}

func (s *KeywordsCanBeIdContext) SONAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSONAME, 0)
}

func (s *KeywordsCanBeIdContext) SOUNDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOUNDS, 0)
}

func (s *KeywordsCanBeIdContext) SOURCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOURCE, 0)
}

func (s *KeywordsCanBeIdContext) SQL_AFTER_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_AFTER_GTIDS, 0)
}

func (s *KeywordsCanBeIdContext) SQL_AFTER_MTS_GAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_AFTER_MTS_GAPS, 0)
}

func (s *KeywordsCanBeIdContext) SQL_BEFORE_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_BEFORE_GTIDS, 0)
}

func (s *KeywordsCanBeIdContext) SQL_BUFFER_RESULT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_BUFFER_RESULT, 0)
}

func (s *KeywordsCanBeIdContext) SQL_CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_CACHE, 0)
}

func (s *KeywordsCanBeIdContext) SQL_NO_CACHE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_NO_CACHE, 0)
}

func (s *KeywordsCanBeIdContext) SQL_THREAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_THREAD, 0)
}

func (s *KeywordsCanBeIdContext) STACKED() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTACKED, 0)
}

func (s *KeywordsCanBeIdContext) START() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTART, 0)
}

func (s *KeywordsCanBeIdContext) STARTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTARTS, 0)
}

func (s *KeywordsCanBeIdContext) STATS_AUTO_RECALC() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_AUTO_RECALC, 0)
}

func (s *KeywordsCanBeIdContext) STATS_PERSISTENT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_PERSISTENT, 0)
}

func (s *KeywordsCanBeIdContext) STATS_SAMPLE_PAGES() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATS_SAMPLE_PAGES, 0)
}

func (s *KeywordsCanBeIdContext) STATUS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTATUS, 0)
}

func (s *KeywordsCanBeIdContext) STD() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTD, 0)
}

func (s *KeywordsCanBeIdContext) STDDEV() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV, 0)
}

func (s *KeywordsCanBeIdContext) STDDEV_POP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV_POP, 0)
}

func (s *KeywordsCanBeIdContext) STDDEV_SAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTDDEV_SAMP, 0)
}

func (s *KeywordsCanBeIdContext) STOP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTOP, 0)
}

func (s *KeywordsCanBeIdContext) STORAGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTORAGE, 0)
}

func (s *KeywordsCanBeIdContext) STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRING, 0)
}

func (s *KeywordsCanBeIdContext) SUBCLASS_ORIGIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBCLASS_ORIGIN, 0)
}

func (s *KeywordsCanBeIdContext) SUBJECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBJECT, 0)
}

func (s *KeywordsCanBeIdContext) SUBPARTITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBPARTITION, 0)
}

func (s *KeywordsCanBeIdContext) SUBPARTITIONS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBPARTITIONS, 0)
}

func (s *KeywordsCanBeIdContext) SUM() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUM, 0)
}

func (s *KeywordsCanBeIdContext) SUSPEND() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUSPEND, 0)
}

func (s *KeywordsCanBeIdContext) SWAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSWAPS, 0)
}

func (s *KeywordsCanBeIdContext) SWITCHES() antlr.TerminalNode {
	return s.GetToken(MySqlParserSWITCHES, 0)
}

func (s *KeywordsCanBeIdContext) SYSTEM_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSYSTEM_VARIABLES_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) TABLE_NAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_NAME, 0)
}

func (s *KeywordsCanBeIdContext) TABLESPACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLESPACE, 0)
}

func (s *KeywordsCanBeIdContext) TABLE_ENCRYPTION_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTABLE_ENCRYPTION_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) TEMPORARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPORARY, 0)
}

func (s *KeywordsCanBeIdContext) TEMPTABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTEMPTABLE, 0)
}

func (s *KeywordsCanBeIdContext) THAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTHAN, 0)
}

func (s *KeywordsCanBeIdContext) TRADITIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRADITIONAL, 0)
}

func (s *KeywordsCanBeIdContext) TRANSACTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRANSACTION, 0)
}

func (s *KeywordsCanBeIdContext) TRANSACTIONAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRANSACTIONAL, 0)
}

func (s *KeywordsCanBeIdContext) TRIGGERS() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRIGGERS, 0)
}

func (s *KeywordsCanBeIdContext) TRUNCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserTRUNCATE, 0)
}

func (s *KeywordsCanBeIdContext) UNDEFINED() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDEFINED, 0)
}

func (s *KeywordsCanBeIdContext) UNDOFILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDOFILE, 0)
}

func (s *KeywordsCanBeIdContext) UNDO_BUFFER_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNDO_BUFFER_SIZE, 0)
}

func (s *KeywordsCanBeIdContext) UNINSTALL() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNINSTALL, 0)
}

func (s *KeywordsCanBeIdContext) UNKNOWN() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNKNOWN, 0)
}

func (s *KeywordsCanBeIdContext) UNTIL() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNTIL, 0)
}

func (s *KeywordsCanBeIdContext) UPGRADE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPGRADE, 0)
}

func (s *KeywordsCanBeIdContext) USA() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSA, 0)
}

func (s *KeywordsCanBeIdContext) USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER, 0)
}

func (s *KeywordsCanBeIdContext) USE_FRM() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSE_FRM, 0)
}

func (s *KeywordsCanBeIdContext) USER_RESOURCES() antlr.TerminalNode {
	return s.GetToken(MySqlParserUSER_RESOURCES, 0)
}

func (s *KeywordsCanBeIdContext) VALIDATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALIDATION, 0)
}

func (s *KeywordsCanBeIdContext) VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALUE, 0)
}

func (s *KeywordsCanBeIdContext) VAR_POP() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_POP, 0)
}

func (s *KeywordsCanBeIdContext) VAR_SAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserVAR_SAMP, 0)
}

func (s *KeywordsCanBeIdContext) VARIABLES() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARIABLES, 0)
}

func (s *KeywordsCanBeIdContext) VARIANCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVARIANCE, 0)
}

func (s *KeywordsCanBeIdContext) VERSION_TOKEN_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserVERSION_TOKEN_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) VIEW() antlr.TerminalNode {
	return s.GetToken(MySqlParserVIEW, 0)
}

func (s *KeywordsCanBeIdContext) WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT, 0)
}

func (s *KeywordsCanBeIdContext) WARNINGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserWARNINGS, 0)
}

func (s *KeywordsCanBeIdContext) WITHOUT() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITHOUT, 0)
}

func (s *KeywordsCanBeIdContext) WORK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWORK, 0)
}

func (s *KeywordsCanBeIdContext) WRAPPER() antlr.TerminalNode {
	return s.GetToken(MySqlParserWRAPPER, 0)
}

func (s *KeywordsCanBeIdContext) X509() antlr.TerminalNode {
	return s.GetToken(MySqlParserX509, 0)
}

func (s *KeywordsCanBeIdContext) XA() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA, 0)
}

func (s *KeywordsCanBeIdContext) XA_RECOVER_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserXA_RECOVER_ADMIN, 0)
}

func (s *KeywordsCanBeIdContext) XML() antlr.TerminalNode {
	return s.GetToken(MySqlParserXML, 0)
}

func (s *KeywordsCanBeIdContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *KeywordsCanBeIdContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *KeywordsCanBeIdContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterKeywordsCanBeId(s)
	}
}

func (s *KeywordsCanBeIdContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitKeywordsCanBeId(s)
	}
}

func (p *MySqlParser) KeywordsCanBeId() (localctx IKeywordsCanBeIdContext) {
	this := p
	_ = this

	localctx = NewKeywordsCanBeIdContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 660, MySqlParserRULE_keywordsCanBeId)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6779)
		_la = p.GetTokenStream().LA(1)

		if !((((_la-34)&-(0x1f+1)) == 0 && ((1<<uint((_la-34)))&((1<<(MySqlParserCURRENT-34))|(1<<(MySqlParserDIAGNOSTICS-34))|(1<<(MySqlParserEXCEPT-34)))) != 0) || _la == MySqlParserGROUP || _la == MySqlParserNUMBER || _la == MySqlParserORDER || _la == MySqlParserSTACKED || _la == MySqlParserSERIAL || (((_la-272)&-(0x1f+1)) == 0 && ((1<<uint((_la-272)))&((1<<(MySqlParserAVG-272))|(1<<(MySqlParserBIT_AND-272))|(1<<(MySqlParserBIT_OR-272))|(1<<(MySqlParserBIT_XOR-272))|(1<<(MySqlParserCOUNT-272))|(1<<(MySqlParserGROUP_CONCAT-272))|(1<<(MySqlParserMAX-272))|(1<<(MySqlParserMIN-272))|(1<<(MySqlParserSTD-272))|(1<<(MySqlParserSTDDEV-272))|(1<<(MySqlParserSTDDEV_POP-272))|(1<<(MySqlParserSTDDEV_SAMP-272))|(1<<(MySqlParserSUM-272))|(1<<(MySqlParserVAR_POP-272))|(1<<(MySqlParserVAR_SAMP-272))|(1<<(MySqlParserVARIANCE-272)))) != 0) || (((_la-318)&-(0x1f+1)) == 0 && ((1<<uint((_la-318)))&((1<<(MySqlParserACCOUNT-318))|(1<<(MySqlParserACTION-318))|(1<<(MySqlParserAFTER-318))|(1<<(MySqlParserAGGREGATE-318))|(1<<(MySqlParserALGORITHM-318))|(1<<(MySqlParserANY-318))|(1<<(MySqlParserAT-318))|(1<<(MySqlParserAUTHORS-318))|(1<<(MySqlParserAUTOCOMMIT-318))|(1<<(MySqlParserAUTOEXTEND_SIZE-318))|(1<<(MySqlParserAUTO_INCREMENT-318))|(1<<(MySqlParserAVG_ROW_LENGTH-318))|(1<<(MySqlParserBEGIN-318))|(1<<(MySqlParserBINLOG-318))|(1<<(MySqlParserBIT-318))|(1<<(MySqlParserBLOCK-318))|(1<<(MySqlParserBOOL-318))|(1<<(MySqlParserBOOLEAN-318))|(1<<(MySqlParserBTREE-318))|(1<<(MySqlParserCACHE-318))|(1<<(MySqlParserCASCADED-318))|(1<<(MySqlParserCHAIN-318))|(1<<(MySqlParserCHANGED-318))|(1<<(MySqlParserCHANNEL-318))|(1<<(MySqlParserCHECKSUM-318))|(1<<(MySqlParserPAGE_CHECKSUM-318))|(1<<(MySqlParserCIPHER-318))|(1<<(MySqlParserCLASS_ORIGIN-318))|(1<<(MySqlParserCLIENT-318))|(1<<(MySqlParserCLOSE-318))|(1<<(MySqlParserCOALESCE-318))|(1<<(MySqlParserCODE-318)))) != 0) || (((_la-350)&-(0x1f+1)) == 0 && ((1<<uint((_la-350)))&((1<<(MySqlParserCOLUMNS-350))|(1<<(MySqlParserCOLUMN_FORMAT-350))|(1<<(MySqlParserCOLUMN_NAME-350))|(1<<(MySqlParserCOMMENT-350))|(1<<(MySqlParserCOMMIT-350))|(1<<(MySqlParserCOMPACT-350))|(1<<(MySqlParserCOMPLETION-350))|(1<<(MySqlParserCOMPRESSED-350))|(1<<(MySqlParserCOMPRESSION-350))|(1<<(MySqlParserCONCURRENT-350))|(1<<(MySqlParserCONNECT-350))|(1<<(MySqlParserCONNECTION-350))|(1<<(MySqlParserCONSISTENT-350))|(1<<(MySqlParserCONSTRAINT_CATALOG-350))|(1<<(MySqlParserCONSTRAINT_SCHEMA-350))|(1<<(MySqlParserCONSTRAINT_NAME-350))|(1<<(MySqlParserCONTAINS-350))|(1<<(MySqlParserCONTEXT-350))|(1<<(MySqlParserCONTRIBUTORS-350))|(1<<(MySqlParserCOPY-350))|(1<<(MySqlParserCPU-350))|(1<<(MySqlParserCURSOR_NAME-350))|(1<<(MySqlParserDATA-350))|(1<<(MySqlParserDATAFILE-350))|(1<<(MySqlParserDEALLOCATE-350))|(1<<(MySqlParserDEFAULT_AUTH-350))|(1<<(MySqlParserDEFINER-350))|(1<<(MySqlParserDELAY_KEY_WRITE-350))|(1<<(MySqlParserDES_KEY_FILE-350))|(1<<(MySqlParserDIRECTORY-350))|(1<<(MySqlParserDISABLE-350))|(1<<(MySqlParserDISCARD-350)))) != 0) || (((_la-382)&-(0x1f+1)) == 0 && ((1<<uint((_la-382)))&((1<<(MySqlParserDISK-382))|(1<<(MySqlParserDO-382))|(1<<(MySqlParserDUMPFILE-382))|(1<<(MySqlParserDUPLICATE-382))|(1<<(MySqlParserDYNAMIC-382))|(1<<(MySqlParserENABLE-382))|(1<<(MySqlParserENCRYPTION-382))|(1<<(MySqlParserEND-382))|(1<<(MySqlParserENDS-382))|(1<<(MySqlParserENGINE-382))|(1<<(MySqlParserENGINES-382))|(1<<(MySqlParserERROR-382))|(1<<(MySqlParserERRORS-382))|(1<<(MySqlParserESCAPE-382))|(1<<(MySqlParserEVEN-382))|(1<<(MySqlParserEVENT-382))|(1<<(MySqlParserEVENTS-382))|(1<<(MySqlParserEVERY-382))|(1<<(MySqlParserEXCHANGE-382))|(1<<(MySqlParserEXCLUSIVE-382))|(1<<(MySqlParserEXPIRE-382))|(1<<(MySqlParserEXPORT-382))|(1<<(MySqlParserEXTENDED-382))|(1<<(MySqlParserEXTENT_SIZE-382))|(1<<(MySqlParserFAST-382))|(1<<(MySqlParserFAULTS-382))|(1<<(MySqlParserFIELDS-382))|(1<<(MySqlParserFILE_BLOCK_SIZE-382))|(1<<(MySqlParserFILTER-382))|(1<<(MySqlParserFIRST-382))|(1<<(MySqlParserFIXED-382))|(1<<(MySqlParserFLUSH-382)))) != 0) || (((_la-415)&-(0x1f+1)) == 0 && ((1<<uint((_la-415)))&((1<<(MySqlParserFOLLOWS-415))|(1<<(MySqlParserFOUND-415))|(1<<(MySqlParserFULL-415))|(1<<(MySqlParserFUNCTION-415))|(1<<(MySqlParserGENERAL-415))|(1<<(MySqlParserGLOBAL-415))|(1<<(MySqlParserGRANTS-415))|(1<<(MySqlParserGROUP_REPLICATION-415))|(1<<(MySqlParserHANDLER-415))|(1<<(MySqlParserHASH-415))|(1<<(MySqlParserHELP-415))|(1<<(MySqlParserHOST-415))|(1<<(MySqlParserHOSTS-415))|(1<<(MySqlParserIDENTIFIED-415))|(1<<(MySqlParserIGNORE_SERVER_IDS-415))|(1<<(MySqlParserIMPORT-415))|(1<<(MySqlParserINDEXES-415))|(1<<(MySqlParserINITIAL_SIZE-415))|(1<<(MySqlParserINPLACE-415))|(1<<(MySqlParserINSERT_METHOD-415))|(1<<(MySqlParserINSTALL-415))|(1<<(MySqlParserINSTANCE-415))|(1<<(MySqlParserINVOKER-415))|(1<<(MySqlParserIO-415))|(1<<(MySqlParserIO_THREAD-415))|(1<<(MySqlParserIPC-415))|(1<<(MySqlParserISOLATION-415))|(1<<(MySqlParserISSUER-415))|(1<<(MySqlParserJSON-415))|(1<<(MySqlParserKEY_BLOCK_SIZE-415))|(1<<(MySqlParserLANGUAGE-415)))) != 0) || (((_la-447)&-(0x1f+1)) == 0 && ((1<<uint((_la-447)))&((1<<(MySqlParserLAST-447))|(1<<(MySqlParserLEAVES-447))|(1<<(MySqlParserLESS-447))|(1<<(MySqlParserLEVEL-447))|(1<<(MySqlParserLIST-447))|(1<<(MySqlParserLOCAL-447))|(1<<(MySqlParserLOGFILE-447))|(1<<(MySqlParserLOGS-447))|(1<<(MySqlParserMASTER-447))|(1<<(MySqlParserMASTER_AUTO_POSITION-447))|(1<<(MySqlParserMASTER_CONNECT_RETRY-447))|(1<<(MySqlParserMASTER_DELAY-447))|(1<<(MySqlParserMASTER_HEARTBEAT_PERIOD-447))|(1<<(MySqlParserMASTER_HOST-447))|(1<<(MySqlParserMASTER_LOG_FILE-447))|(1<<(MySqlParserMASTER_LOG_POS-447))|(1<<(MySqlParserMASTER_PASSWORD-447))|(1<<(MySqlParserMASTER_PORT-447))|(1<<(MySqlParserMASTER_RETRY_COUNT-447))|(1<<(MySqlParserMASTER_SSL-447))|(1<<(MySqlParserMASTER_SSL_CA-447))|(1<<(MySqlParserMASTER_SSL_CAPATH-447))|(1<<(MySqlParserMASTER_SSL_CERT-447))|(1<<(MySqlParserMASTER_SSL_CIPHER-447))|(1<<(MySqlParserMASTER_SSL_CRL-447))|(1<<(MySqlParserMASTER_SSL_CRLPATH-447))|(1<<(MySqlParserMASTER_SSL_KEY-447))|(1<<(MySqlParserMASTER_TLS_VERSION-447))|(1<<(MySqlParserMASTER_USER-447))|(1<<(MySqlParserMAX_CONNECTIONS_PER_HOUR-447))|(1<<(MySqlParserMAX_QUERIES_PER_HOUR-447))|(1<<(MySqlParserMAX_ROWS-447)))) != 0) || (((_la-479)&-(0x1f+1)) == 0 && ((1<<uint((_la-479)))&((1<<(MySqlParserMAX_SIZE-479))|(1<<(MySqlParserMAX_UPDATES_PER_HOUR-479))|(1<<(MySqlParserMAX_USER_CONNECTIONS-479))|(1<<(MySqlParserMEDIUM-479))|(1<<(MySqlParserMEMBER-479))|(1<<(MySqlParserMERGE-479))|(1<<(MySqlParserMESSAGE_TEXT-479))|(1<<(MySqlParserMID-479))|(1<<(MySqlParserMIGRATE-479))|(1<<(MySqlParserMIN_ROWS-479))|(1<<(MySqlParserMODE-479))|(1<<(MySqlParserMODIFY-479))|(1<<(MySqlParserMUTEX-479))|(1<<(MySqlParserMYSQL-479))|(1<<(MySqlParserMYSQL_ERRNO-479))|(1<<(MySqlParserNAME-479))|(1<<(MySqlParserNAMES-479))|(1<<(MySqlParserNCHAR-479))|(1<<(MySqlParserNEVER-479))|(1<<(MySqlParserNEXT-479))|(1<<(MySqlParserNO-479))|(1<<(MySqlParserNODEGROUP-479))|(1<<(MySqlParserNONE-479))|(1<<(MySqlParserODBC-479))|(1<<(MySqlParserOFFLINE-479))|(1<<(MySqlParserOFFSET-479))|(1<<(MySqlParserOF-479))|(1<<(MySqlParserOJ-479))|(1<<(MySqlParserOLD_PASSWORD-479))|(1<<(MySqlParserONE-479))|(1<<(MySqlParserONLINE-479))|(1<<(MySqlParserONLY-479)))) != 0) || (((_la-511)&-(0x1f+1)) == 0 && ((1<<uint((_la-511)))&((1<<(MySqlParserOPEN-511))|(1<<(MySqlParserOPTIMIZER_COSTS-511))|(1<<(MySqlParserOPTIONS-511))|(1<<(MySqlParserOWNER-511))|(1<<(MySqlParserPACK_KEYS-511))|(1<<(MySqlParserPAGE-511))|(1<<(MySqlParserPARSER-511))|(1<<(MySqlParserPARTIAL-511))|(1<<(MySqlParserPARTITIONING-511))|(1<<(MySqlParserPARTITIONS-511))|(1<<(MySqlParserPASSWORD-511))|(1<<(MySqlParserPHASE-511))|(1<<(MySqlParserPLUGIN-511))|(1<<(MySqlParserPLUGIN_DIR-511))|(1<<(MySqlParserPLUGINS-511))|(1<<(MySqlParserPORT-511))|(1<<(MySqlParserPRECEDES-511))|(1<<(MySqlParserPREPARE-511))|(1<<(MySqlParserPRESERVE-511))|(1<<(MySqlParserPREV-511))|(1<<(MySqlParserPROCESSLIST-511))|(1<<(MySqlParserPROFILE-511))|(1<<(MySqlParserPROFILES-511))|(1<<(MySqlParserPROXY-511))|(1<<(MySqlParserQUERY-511))|(1<<(MySqlParserQUICK-511))|(1<<(MySqlParserREBUILD-511))|(1<<(MySqlParserRECOVER-511))|(1<<(MySqlParserREDO_BUFFER_SIZE-511))|(1<<(MySqlParserREDUNDANT-511))|(1<<(MySqlParserRELAY-511)))) != 0) || (((_la-543)&-(0x1f+1)) == 0 && ((1<<uint((_la-543)))&((1<<(MySqlParserRELAY_LOG_FILE-543))|(1<<(MySqlParserRELAY_LOG_POS-543))|(1<<(MySqlParserRELAYLOG-543))|(1<<(MySqlParserREMOVE-543))|(1<<(MySqlParserREORGANIZE-543))|(1<<(MySqlParserREPAIR-543))|(1<<(MySqlParserREPLICATE_DO_DB-543))|(1<<(MySqlParserREPLICATE_DO_TABLE-543))|(1<<(MySqlParserREPLICATE_IGNORE_DB-543))|(1<<(MySqlParserREPLICATE_IGNORE_TABLE-543))|(1<<(MySqlParserREPLICATE_REWRITE_DB-543))|(1<<(MySqlParserREPLICATE_WILD_DO_TABLE-543))|(1<<(MySqlParserREPLICATE_WILD_IGNORE_TABLE-543))|(1<<(MySqlParserREPLICATION-543))|(1<<(MySqlParserRESET-543))|(1<<(MySqlParserRESUME-543))|(1<<(MySqlParserRETURNED_SQLSTATE-543))|(1<<(MySqlParserRETURNS-543))|(1<<(MySqlParserROLE-543))|(1<<(MySqlParserROLLBACK-543))|(1<<(MySqlParserROLLUP-543))|(1<<(MySqlParserROTATE-543))|(1<<(MySqlParserROW-543))|(1<<(MySqlParserROWS-543))|(1<<(MySqlParserROW_FORMAT-543))|(1<<(MySqlParserSAVEPOINT-543))|(1<<(MySqlParserSCHEDULE-543))|(1<<(MySqlParserSECURITY-543))|(1<<(MySqlParserSERVER-543))|(1<<(MySqlParserSESSION-543))|(1<<(MySqlParserSHARE-543)))) != 0) || (((_la-575)&-(0x1f+1)) == 0 && ((1<<uint((_la-575)))&((1<<(MySqlParserSHARED-575))|(1<<(MySqlParserSIGNED-575))|(1<<(MySqlParserSIMPLE-575))|(1<<(MySqlParserSLAVE-575))|(1<<(MySqlParserSLOW-575))|(1<<(MySqlParserSNAPSHOT-575))|(1<<(MySqlParserSOCKET-575))|(1<<(MySqlParserSOME-575))|(1<<(MySqlParserSONAME-575))|(1<<(MySqlParserSOUNDS-575))|(1<<(MySqlParserSOURCE-575))|(1<<(MySqlParserSQL_AFTER_GTIDS-575))|(1<<(MySqlParserSQL_AFTER_MTS_GAPS-575))|(1<<(MySqlParserSQL_BEFORE_GTIDS-575))|(1<<(MySqlParserSQL_BUFFER_RESULT-575))|(1<<(MySqlParserSQL_CACHE-575))|(1<<(MySqlParserSQL_NO_CACHE-575))|(1<<(MySqlParserSQL_THREAD-575))|(1<<(MySqlParserSTART-575))|(1<<(MySqlParserSTARTS-575))|(1<<(MySqlParserSTATS_AUTO_RECALC-575))|(1<<(MySqlParserSTATS_PERSISTENT-575))|(1<<(MySqlParserSTATS_SAMPLE_PAGES-575))|(1<<(MySqlParserSTATUS-575))|(1<<(MySqlParserSTOP-575))|(1<<(MySqlParserSTORAGE-575))|(1<<(MySqlParserSTRING-575))|(1<<(MySqlParserSUBCLASS_ORIGIN-575))|(1<<(MySqlParserSUBJECT-575))|(1<<(MySqlParserSUBPARTITION-575))|(1<<(MySqlParserSUBPARTITIONS-575)))) != 0) || (((_la-607)&-(0x1f+1)) == 0 && ((1<<uint((_la-607)))&((1<<(MySqlParserSUSPEND-607))|(1<<(MySqlParserSWAPS-607))|(1<<(MySqlParserSWITCHES-607))|(1<<(MySqlParserTABLE_NAME-607))|(1<<(MySqlParserTABLESPACE-607))|(1<<(MySqlParserTEMPORARY-607))|(1<<(MySqlParserTEMPTABLE-607))|(1<<(MySqlParserTHAN-607))|(1<<(MySqlParserTRADITIONAL-607))|(1<<(MySqlParserTRANSACTION-607))|(1<<(MySqlParserTRANSACTIONAL-607))|(1<<(MySqlParserTRIGGERS-607))|(1<<(MySqlParserTRUNCATE-607))|(1<<(MySqlParserUNDEFINED-607))|(1<<(MySqlParserUNDOFILE-607))|(1<<(MySqlParserUNDO_BUFFER_SIZE-607))|(1<<(MySqlParserUNINSTALL-607))|(1<<(MySqlParserUNKNOWN-607))|(1<<(MySqlParserUNTIL-607))|(1<<(MySqlParserUPGRADE-607))|(1<<(MySqlParserUSER-607))|(1<<(MySqlParserUSE_FRM-607))|(1<<(MySqlParserUSER_RESOURCES-607))|(1<<(MySqlParserVALIDATION-607))|(1<<(MySqlParserVALUE-607))|(1<<(MySqlParserVARIABLES-607))|(1<<(MySqlParserVIEW-607))|(1<<(MySqlParserWAIT-607)))) != 0) || (((_la-639)&-(0x1f+1)) == 0 && ((1<<uint((_la-639)))&((1<<(MySqlParserWARNINGS-639))|(1<<(MySqlParserWITHOUT-639))|(1<<(MySqlParserWORK-639))|(1<<(MySqlParserWRAPPER-639))|(1<<(MySqlParserX509-639))|(1<<(MySqlParserXA-639))|(1<<(MySqlParserXML-639))|(1<<(MySqlParserEUR-639))|(1<<(MySqlParserUSA-639))|(1<<(MySqlParserJIS-639))|(1<<(MySqlParserISO-639))|(1<<(MySqlParserINTERNAL-639))|(1<<(MySqlParserAUDIT_ADMIN-639)))) != 0) || (((_la-671)&-(0x1f+1)) == 0 && ((1<<uint((_la-671)))&((1<<(MySqlParserBACKUP_ADMIN-671))|(1<<(MySqlParserBINLOG_ADMIN-671))|(1<<(MySqlParserBINLOG_ENCRYPTION_ADMIN-671))|(1<<(MySqlParserCLONE_ADMIN-671))|(1<<(MySqlParserCONNECTION_ADMIN-671))|(1<<(MySqlParserENCRYPTION_KEY_ADMIN-671))|(1<<(MySqlParserFIREWALL_ADMIN-671))|(1<<(MySqlParserFIREWALL_USER-671))|(1<<(MySqlParserGROUP_REPLICATION_ADMIN-671))|(1<<(MySqlParserINNODB_REDO_LOG_ARCHIVE-671))|(1<<(MySqlParserNDB_STORED_USER-671))|(1<<(MySqlParserPERSIST_RO_VARIABLES_ADMIN-671))|(1<<(MySqlParserREPLICATION_APPLIER-671))|(1<<(MySqlParserREPLICATION_SLAVE_ADMIN-671))|(1<<(MySqlParserRESOURCE_GROUP_ADMIN-671))|(1<<(MySqlParserRESOURCE_GROUP_USER-671))|(1<<(MySqlParserROLE_ADMIN-671))|(1<<(MySqlParserSESSION_VARIABLES_ADMIN-671))|(1<<(MySqlParserSET_USER_ID-671))|(1<<(MySqlParserSHOW_ROUTINE-671))|(1<<(MySqlParserSYSTEM_VARIABLES_ADMIN-671))|(1<<(MySqlParserTABLE_ENCRYPTION_ADMIN-671))|(1<<(MySqlParserVERSION_TOKEN_ADMIN-671))|(1<<(MySqlParserXA_RECOVER_ADMIN-671)))) != 0) || _la == MySqlParserMEMORY || _la == MySqlParserCATALOG_NAME || _la == MySqlParserSCHEMA_NAME || _la == MySqlParserOPTIONAL) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

// IFunctionNameBaseContext is an interface to support dynamic dispatch.
type IFunctionNameBaseContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// IsFunctionNameBaseContext differentiates from other interfaces.
	IsFunctionNameBaseContext()
}

type FunctionNameBaseContext struct {
	*antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyFunctionNameBaseContext() *FunctionNameBaseContext {
	var p = new(FunctionNameBaseContext)
	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
	p.RuleIndex = MySqlParserRULE_functionNameBase
	return p
}

func (*FunctionNameBaseContext) IsFunctionNameBaseContext() {}

func NewFunctionNameBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionNameBaseContext {
	var p = new(FunctionNameBaseContext)

	p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)

	p.parser = parser
	p.RuleIndex = MySqlParserRULE_functionNameBase

	return p
}

func (s *FunctionNameBaseContext) GetParser() antlr.Parser { return s.parser }

func (s *FunctionNameBaseContext) ABS() antlr.TerminalNode {
	return s.GetToken(MySqlParserABS, 0)
}

func (s *FunctionNameBaseContext) ACOS() antlr.TerminalNode {
	return s.GetToken(MySqlParserACOS, 0)
}

func (s *FunctionNameBaseContext) ADDDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserADDDATE, 0)
}

func (s *FunctionNameBaseContext) ADDTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserADDTIME, 0)
}

func (s *FunctionNameBaseContext) AES_DECRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAES_DECRYPT, 0)
}

func (s *FunctionNameBaseContext) AES_ENCRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserAES_ENCRYPT, 0)
}

func (s *FunctionNameBaseContext) AREA() antlr.TerminalNode {
	return s.GetToken(MySqlParserAREA, 0)
}

func (s *FunctionNameBaseContext) ASBINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserASBINARY, 0)
}

func (s *FunctionNameBaseContext) ASIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserASIN, 0)
}

func (s *FunctionNameBaseContext) ASTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserASTEXT, 0)
}

func (s *FunctionNameBaseContext) ASWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserASWKB, 0)
}

func (s *FunctionNameBaseContext) ASWKT() antlr.TerminalNode {
	return s.GetToken(MySqlParserASWKT, 0)
}

func (s *FunctionNameBaseContext) ASYMMETRIC_DECRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserASYMMETRIC_DECRYPT, 0)
}

func (s *FunctionNameBaseContext) ASYMMETRIC_DERIVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserASYMMETRIC_DERIVE, 0)
}

func (s *FunctionNameBaseContext) ASYMMETRIC_ENCRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserASYMMETRIC_ENCRYPT, 0)
}

func (s *FunctionNameBaseContext) ASYMMETRIC_SIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserASYMMETRIC_SIGN, 0)
}

func (s *FunctionNameBaseContext) ASYMMETRIC_VERIFY() antlr.TerminalNode {
	return s.GetToken(MySqlParserASYMMETRIC_VERIFY, 0)
}

func (s *FunctionNameBaseContext) ATAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserATAN, 0)
}

func (s *FunctionNameBaseContext) ATAN2() antlr.TerminalNode {
	return s.GetToken(MySqlParserATAN2, 0)
}

func (s *FunctionNameBaseContext) BENCHMARK() antlr.TerminalNode {
	return s.GetToken(MySqlParserBENCHMARK, 0)
}

func (s *FunctionNameBaseContext) BIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIN, 0)
}

func (s *FunctionNameBaseContext) BIT_COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_COUNT, 0)
}

func (s *FunctionNameBaseContext) BIT_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserBIT_LENGTH, 0)
}

func (s *FunctionNameBaseContext) BUFFER() antlr.TerminalNode {
	return s.GetToken(MySqlParserBUFFER, 0)
}

func (s *FunctionNameBaseContext) CEIL() antlr.TerminalNode {
	return s.GetToken(MySqlParserCEIL, 0)
}

func (s *FunctionNameBaseContext) CEILING() antlr.TerminalNode {
	return s.GetToken(MySqlParserCEILING, 0)
}

func (s *FunctionNameBaseContext) CENTROID() antlr.TerminalNode {
	return s.GetToken(MySqlParserCENTROID, 0)
}

func (s *FunctionNameBaseContext) CHARACTER_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARACTER_LENGTH, 0)
}

func (s *FunctionNameBaseContext) CHARSET() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHARSET, 0)
}

func (s *FunctionNameBaseContext) CHAR_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserCHAR_LENGTH, 0)
}

func (s *FunctionNameBaseContext) COERCIBILITY() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOERCIBILITY, 0)
}

func (s *FunctionNameBaseContext) COLLATION() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOLLATION, 0)
}

func (s *FunctionNameBaseContext) COMPRESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOMPRESS, 0)
}

func (s *FunctionNameBaseContext) CONCAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONCAT, 0)
}

func (s *FunctionNameBaseContext) CONCAT_WS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONCAT_WS, 0)
}

func (s *FunctionNameBaseContext) CONNECTION_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONNECTION_ID, 0)
}

func (s *FunctionNameBaseContext) CONV() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONV, 0)
}

func (s *FunctionNameBaseContext) CONVERT_TZ() antlr.TerminalNode {
	return s.GetToken(MySqlParserCONVERT_TZ, 0)
}

func (s *FunctionNameBaseContext) COS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOS, 0)
}

func (s *FunctionNameBaseContext) COT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOT, 0)
}

func (s *FunctionNameBaseContext) COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserCOUNT, 0)
}

func (s *FunctionNameBaseContext) CRC32() antlr.TerminalNode {
	return s.GetToken(MySqlParserCRC32, 0)
}

func (s *FunctionNameBaseContext) CREATE_ASYMMETRIC_PRIV_KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY, 0)
}

func (s *FunctionNameBaseContext) CREATE_ASYMMETRIC_PUB_KEY() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE_ASYMMETRIC_PUB_KEY, 0)
}

func (s *FunctionNameBaseContext) CREATE_DH_PARAMETERS() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE_DH_PARAMETERS, 0)
}

func (s *FunctionNameBaseContext) CREATE_DIGEST() antlr.TerminalNode {
	return s.GetToken(MySqlParserCREATE_DIGEST, 0)
}

func (s *FunctionNameBaseContext) CROSSES() antlr.TerminalNode {
	return s.GetToken(MySqlParserCROSSES, 0)
}

func (s *FunctionNameBaseContext) DATABASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATABASE, 0)
}

func (s *FunctionNameBaseContext) DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE, 0)
}

func (s *FunctionNameBaseContext) DATEDIFF() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATEDIFF, 0)
}

func (s *FunctionNameBaseContext) DATE_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDATE_FORMAT, 0)
}

func (s *FunctionNameBaseContext) DAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAY, 0)
}

func (s *FunctionNameBaseContext) DAYNAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAYNAME, 0)
}

func (s *FunctionNameBaseContext) DAYOFMONTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAYOFMONTH, 0)
}

func (s *FunctionNameBaseContext) DAYOFWEEK() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAYOFWEEK, 0)
}

func (s *FunctionNameBaseContext) DAYOFYEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserDAYOFYEAR, 0)
}

func (s *FunctionNameBaseContext) DECODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserDECODE, 0)
}

func (s *FunctionNameBaseContext) DEGREES() antlr.TerminalNode {
	return s.GetToken(MySqlParserDEGREES, 0)
}

func (s *FunctionNameBaseContext) DES_DECRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDES_DECRYPT, 0)
}

func (s *FunctionNameBaseContext) DES_ENCRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDES_ENCRYPT, 0)
}

func (s *FunctionNameBaseContext) DIMENSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserDIMENSION, 0)
}

func (s *FunctionNameBaseContext) DISJOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserDISJOINT, 0)
}

func (s *FunctionNameBaseContext) ELT() antlr.TerminalNode {
	return s.GetToken(MySqlParserELT, 0)
}

func (s *FunctionNameBaseContext) ENCODE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCODE, 0)
}

func (s *FunctionNameBaseContext) ENCRYPT() antlr.TerminalNode {
	return s.GetToken(MySqlParserENCRYPT, 0)
}

func (s *FunctionNameBaseContext) ENDPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserENDPOINT, 0)
}

func (s *FunctionNameBaseContext) ENVELOPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserENVELOPE, 0)
}

func (s *FunctionNameBaseContext) EQUALS() antlr.TerminalNode {
	return s.GetToken(MySqlParserEQUALS, 0)
}

func (s *FunctionNameBaseContext) EXP() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXP, 0)
}

func (s *FunctionNameBaseContext) EXPORT_SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXPORT_SET, 0)
}

func (s *FunctionNameBaseContext) EXTERIORRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTERIORRING, 0)
}

func (s *FunctionNameBaseContext) EXTRACTVALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserEXTRACTVALUE, 0)
}

func (s *FunctionNameBaseContext) FIELD() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIELD, 0)
}

func (s *FunctionNameBaseContext) FIND_IN_SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserFIND_IN_SET, 0)
}

func (s *FunctionNameBaseContext) FLOOR() antlr.TerminalNode {
	return s.GetToken(MySqlParserFLOOR, 0)
}

func (s *FunctionNameBaseContext) FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserFORMAT, 0)
}

func (s *FunctionNameBaseContext) FOUND_ROWS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFOUND_ROWS, 0)
}

func (s *FunctionNameBaseContext) FROM_BASE64() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM_BASE64, 0)
}

func (s *FunctionNameBaseContext) FROM_DAYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM_DAYS, 0)
}

func (s *FunctionNameBaseContext) FROM_UNIXTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserFROM_UNIXTIME, 0)
}

func (s *FunctionNameBaseContext) GEOMCOLLFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMCOLLFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) GEOMCOLLFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMCOLLFROMWKB, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYCOLLECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYCOLLECTION, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYCOLLECTIONFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYCOLLECTIONFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYCOLLECTIONFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYCOLLECTIONFROMWKB, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYFROMWKB, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYN() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYN, 0)
}

func (s *FunctionNameBaseContext) GEOMETRYTYPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMETRYTYPE, 0)
}

func (s *FunctionNameBaseContext) GEOMFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) GEOMFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserGEOMFROMWKB, 0)
}

func (s *FunctionNameBaseContext) GET_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGET_FORMAT, 0)
}

func (s *FunctionNameBaseContext) GET_LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserGET_LOCK, 0)
}

func (s *FunctionNameBaseContext) GLENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserGLENGTH, 0)
}

func (s *FunctionNameBaseContext) GREATEST() antlr.TerminalNode {
	return s.GetToken(MySqlParserGREATEST, 0)
}

func (s *FunctionNameBaseContext) GTID_SUBSET() antlr.TerminalNode {
	return s.GetToken(MySqlParserGTID_SUBSET, 0)
}

func (s *FunctionNameBaseContext) GTID_SUBTRACT() antlr.TerminalNode {
	return s.GetToken(MySqlParserGTID_SUBTRACT, 0)
}

func (s *FunctionNameBaseContext) HEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserHEX, 0)
}

func (s *FunctionNameBaseContext) HOUR() antlr.TerminalNode {
	return s.GetToken(MySqlParserHOUR, 0)
}

func (s *FunctionNameBaseContext) IFNULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserIFNULL, 0)
}

func (s *FunctionNameBaseContext) INET6_ATON() antlr.TerminalNode {
	return s.GetToken(MySqlParserINET6_ATON, 0)
}

func (s *FunctionNameBaseContext) INET6_NTOA() antlr.TerminalNode {
	return s.GetToken(MySqlParserINET6_NTOA, 0)
}

func (s *FunctionNameBaseContext) INET_ATON() antlr.TerminalNode {
	return s.GetToken(MySqlParserINET_ATON, 0)
}

func (s *FunctionNameBaseContext) INET_NTOA() antlr.TerminalNode {
	return s.GetToken(MySqlParserINET_NTOA, 0)
}

func (s *FunctionNameBaseContext) INSTR() antlr.TerminalNode {
	return s.GetToken(MySqlParserINSTR, 0)
}

func (s *FunctionNameBaseContext) INTERIORRINGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERIORRINGN, 0)
}

func (s *FunctionNameBaseContext) INTERSECTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserINTERSECTS, 0)
}

func (s *FunctionNameBaseContext) INVISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserINVISIBLE, 0)
}

func (s *FunctionNameBaseContext) ISCLOSED() antlr.TerminalNode {
	return s.GetToken(MySqlParserISCLOSED, 0)
}

func (s *FunctionNameBaseContext) ISEMPTY() antlr.TerminalNode {
	return s.GetToken(MySqlParserISEMPTY, 0)
}

func (s *FunctionNameBaseContext) ISNULL() antlr.TerminalNode {
	return s.GetToken(MySqlParserISNULL, 0)
}

func (s *FunctionNameBaseContext) ISSIMPLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserISSIMPLE, 0)
}

func (s *FunctionNameBaseContext) IS_FREE_LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_FREE_LOCK, 0)
}

func (s *FunctionNameBaseContext) IS_IPV4() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_IPV4, 0)
}

func (s *FunctionNameBaseContext) IS_IPV4_COMPAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_IPV4_COMPAT, 0)
}

func (s *FunctionNameBaseContext) IS_IPV4_MAPPED() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_IPV4_MAPPED, 0)
}

func (s *FunctionNameBaseContext) IS_IPV6() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_IPV6, 0)
}

func (s *FunctionNameBaseContext) IS_USED_LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserIS_USED_LOCK, 0)
}

func (s *FunctionNameBaseContext) LAST_INSERT_ID() antlr.TerminalNode {
	return s.GetToken(MySqlParserLAST_INSERT_ID, 0)
}

func (s *FunctionNameBaseContext) LCASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLCASE, 0)
}

func (s *FunctionNameBaseContext) LEAST() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEAST, 0)
}

func (s *FunctionNameBaseContext) LEFT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLEFT, 0)
}

func (s *FunctionNameBaseContext) LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserLENGTH, 0)
}

func (s *FunctionNameBaseContext) LINEFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) LINEFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINEFROMWKB, 0)
}

func (s *FunctionNameBaseContext) LINESTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINESTRING, 0)
}

func (s *FunctionNameBaseContext) LINESTRINGFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINESTRINGFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) LINESTRINGFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserLINESTRINGFROMWKB, 0)
}

func (s *FunctionNameBaseContext) LN() antlr.TerminalNode {
	return s.GetToken(MySqlParserLN, 0)
}

func (s *FunctionNameBaseContext) LOAD_FILE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOAD_FILE, 0)
}

func (s *FunctionNameBaseContext) LOCATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOCATE, 0)
}

func (s *FunctionNameBaseContext) LOG() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOG, 0)
}

func (s *FunctionNameBaseContext) LOG10() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOG10, 0)
}

func (s *FunctionNameBaseContext) LOG2() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOG2, 0)
}

func (s *FunctionNameBaseContext) LOWER() antlr.TerminalNode {
	return s.GetToken(MySqlParserLOWER, 0)
}

func (s *FunctionNameBaseContext) LPAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserLPAD, 0)
}

func (s *FunctionNameBaseContext) LTRIM() antlr.TerminalNode {
	return s.GetToken(MySqlParserLTRIM, 0)
}

func (s *FunctionNameBaseContext) MAKEDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAKEDATE, 0)
}

func (s *FunctionNameBaseContext) MAKETIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAKETIME, 0)
}

func (s *FunctionNameBaseContext) MAKE_SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserMAKE_SET, 0)
}

func (s *FunctionNameBaseContext) MASTER_POS_WAIT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMASTER_POS_WAIT, 0)
}

func (s *FunctionNameBaseContext) MBRCONTAINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBRCONTAINS, 0)
}

func (s *FunctionNameBaseContext) MBRDISJOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBRDISJOINT, 0)
}

func (s *FunctionNameBaseContext) MBREQUAL() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBREQUAL, 0)
}

func (s *FunctionNameBaseContext) MBRINTERSECTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBRINTERSECTS, 0)
}

func (s *FunctionNameBaseContext) MBROVERLAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBROVERLAPS, 0)
}

func (s *FunctionNameBaseContext) MBRTOUCHES() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBRTOUCHES, 0)
}

func (s *FunctionNameBaseContext) MBRWITHIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserMBRWITHIN, 0)
}

func (s *FunctionNameBaseContext) MD5() antlr.TerminalNode {
	return s.GetToken(MySqlParserMD5, 0)
}

func (s *FunctionNameBaseContext) MICROSECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserMICROSECOND, 0)
}

func (s *FunctionNameBaseContext) MINUTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserMINUTE, 0)
}

func (s *FunctionNameBaseContext) MLINEFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMLINEFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MLINEFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMLINEFROMWKB, 0)
}

func (s *FunctionNameBaseContext) MOD() antlr.TerminalNode {
	return s.GetToken(MySqlParserMOD, 0)
}

func (s *FunctionNameBaseContext) MONTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserMONTH, 0)
}

func (s *FunctionNameBaseContext) MONTHNAME() antlr.TerminalNode {
	return s.GetToken(MySqlParserMONTHNAME, 0)
}

func (s *FunctionNameBaseContext) MPOINTFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMPOINTFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MPOINTFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMPOINTFROMWKB, 0)
}

func (s *FunctionNameBaseContext) MPOLYFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMPOLYFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MPOLYFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMPOLYFROMWKB, 0)
}

func (s *FunctionNameBaseContext) MULTILINESTRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTILINESTRING, 0)
}

func (s *FunctionNameBaseContext) MULTILINESTRINGFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTILINESTRINGFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MULTILINESTRINGFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTILINESTRINGFROMWKB, 0)
}

func (s *FunctionNameBaseContext) MULTIPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOINT, 0)
}

func (s *FunctionNameBaseContext) MULTIPOINTFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOINTFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MULTIPOINTFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOINTFROMWKB, 0)
}

func (s *FunctionNameBaseContext) MULTIPOLYGON() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOLYGON, 0)
}

func (s *FunctionNameBaseContext) MULTIPOLYGONFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOLYGONFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) MULTIPOLYGONFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserMULTIPOLYGONFROMWKB, 0)
}

func (s *FunctionNameBaseContext) NAME_CONST() antlr.TerminalNode {
	return s.GetToken(MySqlParserNAME_CONST, 0)
}

func (s *FunctionNameBaseContext) NULLIF() antlr.TerminalNode {
	return s.GetToken(MySqlParserNULLIF, 0)
}

func (s *FunctionNameBaseContext) NUMGEOMETRIES() antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMGEOMETRIES, 0)
}

func (s *FunctionNameBaseContext) NUMINTERIORRINGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMINTERIORRINGS, 0)
}

func (s *FunctionNameBaseContext) NUMPOINTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserNUMPOINTS, 0)
}

func (s *FunctionNameBaseContext) OCT() antlr.TerminalNode {
	return s.GetToken(MySqlParserOCT, 0)
}

func (s *FunctionNameBaseContext) OCTET_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserOCTET_LENGTH, 0)
}

func (s *FunctionNameBaseContext) ORD() antlr.TerminalNode {
	return s.GetToken(MySqlParserORD, 0)
}

func (s *FunctionNameBaseContext) OVERLAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserOVERLAPS, 0)
}

func (s *FunctionNameBaseContext) PERIOD_ADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERIOD_ADD, 0)
}

func (s *FunctionNameBaseContext) PERIOD_DIFF() antlr.TerminalNode {
	return s.GetToken(MySqlParserPERIOD_DIFF, 0)
}

func (s *FunctionNameBaseContext) PI() antlr.TerminalNode {
	return s.GetToken(MySqlParserPI, 0)
}

func (s *FunctionNameBaseContext) POINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOINT, 0)
}

func (s *FunctionNameBaseContext) POINTFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOINTFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) POINTFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOINTFROMWKB, 0)
}

func (s *FunctionNameBaseContext) POINTN() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOINTN, 0)
}

func (s *FunctionNameBaseContext) POLYFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) POLYFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYFROMWKB, 0)
}

func (s *FunctionNameBaseContext) POLYGON() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYGON, 0)
}

func (s *FunctionNameBaseContext) POLYGONFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYGONFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) POLYGONFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOLYGONFROMWKB, 0)
}

func (s *FunctionNameBaseContext) POSITION() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOSITION, 0)
}

func (s *FunctionNameBaseContext) POW() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOW, 0)
}

func (s *FunctionNameBaseContext) POWER() antlr.TerminalNode {
	return s.GetToken(MySqlParserPOWER, 0)
}

func (s *FunctionNameBaseContext) QUARTER() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUARTER, 0)
}

func (s *FunctionNameBaseContext) QUOTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserQUOTE, 0)
}

func (s *FunctionNameBaseContext) RADIANS() antlr.TerminalNode {
	return s.GetToken(MySqlParserRADIANS, 0)
}

func (s *FunctionNameBaseContext) RAND() antlr.TerminalNode {
	return s.GetToken(MySqlParserRAND, 0)
}

func (s *FunctionNameBaseContext) RANDOM_BYTES() antlr.TerminalNode {
	return s.GetToken(MySqlParserRANDOM_BYTES, 0)
}

func (s *FunctionNameBaseContext) RELEASE_LOCK() antlr.TerminalNode {
	return s.GetToken(MySqlParserRELEASE_LOCK, 0)
}

func (s *FunctionNameBaseContext) REVERSE() antlr.TerminalNode {
	return s.GetToken(MySqlParserREVERSE, 0)
}

func (s *FunctionNameBaseContext) RIGHT() antlr.TerminalNode {
	return s.GetToken(MySqlParserRIGHT, 0)
}

func (s *FunctionNameBaseContext) ROUND() antlr.TerminalNode {
	return s.GetToken(MySqlParserROUND, 0)
}

func (s *FunctionNameBaseContext) ROW_COUNT() antlr.TerminalNode {
	return s.GetToken(MySqlParserROW_COUNT, 0)
}

func (s *FunctionNameBaseContext) RPAD() antlr.TerminalNode {
	return s.GetToken(MySqlParserRPAD, 0)
}

func (s *FunctionNameBaseContext) RTRIM() antlr.TerminalNode {
	return s.GetToken(MySqlParserRTRIM, 0)
}

func (s *FunctionNameBaseContext) SECOND() antlr.TerminalNode {
	return s.GetToken(MySqlParserSECOND, 0)
}

func (s *FunctionNameBaseContext) SEC_TO_TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSEC_TO_TIME, 0)
}

func (s *FunctionNameBaseContext) SCHEMA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSCHEMA, 0)
}

func (s *FunctionNameBaseContext) SESSION_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION_USER, 0)
}

func (s *FunctionNameBaseContext) SESSION_VARIABLES_ADMIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSESSION_VARIABLES_ADMIN, 0)
}

func (s *FunctionNameBaseContext) SHA() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHA, 0)
}

func (s *FunctionNameBaseContext) SHA1() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHA1, 0)
}

func (s *FunctionNameBaseContext) SHA2() antlr.TerminalNode {
	return s.GetToken(MySqlParserSHA2, 0)
}

func (s *FunctionNameBaseContext) SIGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIGN, 0)
}

func (s *FunctionNameBaseContext) SIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserSIN, 0)
}

func (s *FunctionNameBaseContext) SLEEP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSLEEP, 0)
}

func (s *FunctionNameBaseContext) SOUNDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserSOUNDEX, 0)
}

func (s *FunctionNameBaseContext) SQL_THREAD_WAIT_AFTER_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS, 0)
}

func (s *FunctionNameBaseContext) SQRT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSQRT, 0)
}

func (s *FunctionNameBaseContext) SRID() antlr.TerminalNode {
	return s.GetToken(MySqlParserSRID, 0)
}

func (s *FunctionNameBaseContext) STARTPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTARTPOINT, 0)
}

func (s *FunctionNameBaseContext) STRCMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTRCMP, 0)
}

func (s *FunctionNameBaseContext) STR_TO_DATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSTR_TO_DATE, 0)
}

func (s *FunctionNameBaseContext) ST_AREA() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_AREA, 0)
}

func (s *FunctionNameBaseContext) ST_ASBINARY() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ASBINARY, 0)
}

func (s *FunctionNameBaseContext) ST_ASTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ASTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_ASWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ASWKB, 0)
}

func (s *FunctionNameBaseContext) ST_ASWKT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ASWKT, 0)
}

func (s *FunctionNameBaseContext) ST_BUFFER() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_BUFFER, 0)
}

func (s *FunctionNameBaseContext) ST_CENTROID() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_CENTROID, 0)
}

func (s *FunctionNameBaseContext) ST_CONTAINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_CONTAINS, 0)
}

func (s *FunctionNameBaseContext) ST_CROSSES() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_CROSSES, 0)
}

func (s *FunctionNameBaseContext) ST_DIFFERENCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_DIFFERENCE, 0)
}

func (s *FunctionNameBaseContext) ST_DIMENSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_DIMENSION, 0)
}

func (s *FunctionNameBaseContext) ST_DISJOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_DISJOINT, 0)
}

func (s *FunctionNameBaseContext) ST_DISTANCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_DISTANCE, 0)
}

func (s *FunctionNameBaseContext) ST_ENDPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ENDPOINT, 0)
}

func (s *FunctionNameBaseContext) ST_ENVELOPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ENVELOPE, 0)
}

func (s *FunctionNameBaseContext) ST_EQUALS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_EQUALS, 0)
}

func (s *FunctionNameBaseContext) ST_EXTERIORRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_EXTERIORRING, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMCOLLFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMCOLLFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMCOLLFROMTXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMCOLLFROMTXT, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMCOLLFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMCOLLFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYCOLLECTIONFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYCOLLECTIONFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYN() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYN, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMETRYTYPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMETRYTYPE, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_GEOMFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_GEOMFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_INTERIORRINGN() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_INTERIORRINGN, 0)
}

func (s *FunctionNameBaseContext) ST_INTERSECTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_INTERSECTION, 0)
}

func (s *FunctionNameBaseContext) ST_INTERSECTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_INTERSECTS, 0)
}

func (s *FunctionNameBaseContext) ST_ISCLOSED() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ISCLOSED, 0)
}

func (s *FunctionNameBaseContext) ST_ISEMPTY() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ISEMPTY, 0)
}

func (s *FunctionNameBaseContext) ST_ISSIMPLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_ISSIMPLE, 0)
}

func (s *FunctionNameBaseContext) ST_LINEFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_LINEFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_LINEFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_LINEFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_LINESTRINGFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_LINESTRINGFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_LINESTRINGFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_LINESTRINGFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_NUMGEOMETRIES() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_NUMGEOMETRIES, 0)
}

func (s *FunctionNameBaseContext) ST_NUMINTERIORRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_NUMINTERIORRING, 0)
}

func (s *FunctionNameBaseContext) ST_NUMINTERIORRINGS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_NUMINTERIORRINGS, 0)
}

func (s *FunctionNameBaseContext) ST_NUMPOINTS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_NUMPOINTS, 0)
}

func (s *FunctionNameBaseContext) ST_OVERLAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_OVERLAPS, 0)
}

func (s *FunctionNameBaseContext) ST_POINTFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POINTFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_POINTFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POINTFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_POINTN() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POINTN, 0)
}

func (s *FunctionNameBaseContext) ST_POLYFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POLYFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_POLYFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POLYFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_POLYGONFROMTEXT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POLYGONFROMTEXT, 0)
}

func (s *FunctionNameBaseContext) ST_POLYGONFROMWKB() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_POLYGONFROMWKB, 0)
}

func (s *FunctionNameBaseContext) ST_SRID() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_SRID, 0)
}

func (s *FunctionNameBaseContext) ST_STARTPOINT() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_STARTPOINT, 0)
}

func (s *FunctionNameBaseContext) ST_SYMDIFFERENCE() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_SYMDIFFERENCE, 0)
}

func (s *FunctionNameBaseContext) ST_TOUCHES() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_TOUCHES, 0)
}

func (s *FunctionNameBaseContext) ST_UNION() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_UNION, 0)
}

func (s *FunctionNameBaseContext) ST_WITHIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_WITHIN, 0)
}

func (s *FunctionNameBaseContext) ST_X() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_X, 0)
}

func (s *FunctionNameBaseContext) ST_Y() antlr.TerminalNode {
	return s.GetToken(MySqlParserST_Y, 0)
}

func (s *FunctionNameBaseContext) SUBDATE() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBDATE, 0)
}

func (s *FunctionNameBaseContext) SUBSTRING_INDEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBSTRING_INDEX, 0)
}

func (s *FunctionNameBaseContext) SUBTIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserSUBTIME, 0)
}

func (s *FunctionNameBaseContext) SYSTEM_USER() antlr.TerminalNode {
	return s.GetToken(MySqlParserSYSTEM_USER, 0)
}

func (s *FunctionNameBaseContext) TAN() antlr.TerminalNode {
	return s.GetToken(MySqlParserTAN, 0)
}

func (s *FunctionNameBaseContext) TIME() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME, 0)
}

func (s *FunctionNameBaseContext) TIMEDIFF() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMEDIFF, 0)
}

func (s *FunctionNameBaseContext) TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMESTAMP, 0)
}

func (s *FunctionNameBaseContext) TIMESTAMPADD() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMESTAMPADD, 0)
}

func (s *FunctionNameBaseContext) TIMESTAMPDIFF() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIMESTAMPDIFF, 0)
}

func (s *FunctionNameBaseContext) TIME_FORMAT() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME_FORMAT, 0)
}

func (s *FunctionNameBaseContext) TIME_TO_SEC() antlr.TerminalNode {
	return s.GetToken(MySqlParserTIME_TO_SEC, 0)
}

func (s *FunctionNameBaseContext) TOUCHES() antlr.TerminalNode {
	return s.GetToken(MySqlParserTOUCHES, 0)
}

func (s *FunctionNameBaseContext) TO_BASE64() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO_BASE64, 0)
}

func (s *FunctionNameBaseContext) TO_DAYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO_DAYS, 0)
}

func (s *FunctionNameBaseContext) TO_SECONDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserTO_SECONDS, 0)
}

func (s *FunctionNameBaseContext) UCASE() antlr.TerminalNode {
	return s.GetToken(MySqlParserUCASE, 0)
}

func (s *FunctionNameBaseContext) UNCOMPRESS() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNCOMPRESS, 0)
}

func (s *FunctionNameBaseContext) UNCOMPRESSED_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNCOMPRESSED_LENGTH, 0)
}

func (s *FunctionNameBaseContext) UNHEX() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNHEX, 0)
}

func (s *FunctionNameBaseContext) UNIX_TIMESTAMP() antlr.TerminalNode {
	return s.GetToken(MySqlParserUNIX_TIMESTAMP, 0)
}

func (s *FunctionNameBaseContext) UPDATEXML() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPDATEXML, 0)
}

func (s *FunctionNameBaseContext) UPPER() antlr.TerminalNode {
	return s.GetToken(MySqlParserUPPER, 0)
}

func (s *FunctionNameBaseContext) UUID() antlr.TerminalNode {
	return s.GetToken(MySqlParserUUID, 0)
}

func (s *FunctionNameBaseContext) UUID_SHORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserUUID_SHORT, 0)
}

func (s *FunctionNameBaseContext) VALIDATE_PASSWORD_STRENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserVALIDATE_PASSWORD_STRENGTH, 0)
}

func (s *FunctionNameBaseContext) VERSION() antlr.TerminalNode {
	return s.GetToken(MySqlParserVERSION, 0)
}

func (s *FunctionNameBaseContext) VISIBLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserVISIBLE, 0)
}

func (s *FunctionNameBaseContext) WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() antlr.TerminalNode {
	return s.GetToken(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, 0)
}

func (s *FunctionNameBaseContext) WEEK() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEEK, 0)
}

func (s *FunctionNameBaseContext) WEEKDAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEEKDAY, 0)
}

func (s *FunctionNameBaseContext) WEEKOFYEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEEKOFYEAR, 0)
}

func (s *FunctionNameBaseContext) WEIGHT_STRING() antlr.TerminalNode {
	return s.GetToken(MySqlParserWEIGHT_STRING, 0)
}

func (s *FunctionNameBaseContext) WITHIN() antlr.TerminalNode {
	return s.GetToken(MySqlParserWITHIN, 0)
}

func (s *FunctionNameBaseContext) YEAR() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEAR, 0)
}

func (s *FunctionNameBaseContext) YEARWEEK() antlr.TerminalNode {
	return s.GetToken(MySqlParserYEARWEEK, 0)
}

func (s *FunctionNameBaseContext) Y_FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserY_FUNCTION, 0)
}

func (s *FunctionNameBaseContext) X_FUNCTION() antlr.TerminalNode {
	return s.GetToken(MySqlParserX_FUNCTION, 0)
}

func (s *FunctionNameBaseContext) JSON_ARRAY() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_ARRAY, 0)
}

func (s *FunctionNameBaseContext) JSON_OBJECT() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_OBJECT, 0)
}

func (s *FunctionNameBaseContext) JSON_QUOTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_QUOTE, 0)
}

func (s *FunctionNameBaseContext) JSON_CONTAINS() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_CONTAINS, 0)
}

func (s *FunctionNameBaseContext) JSON_CONTAINS_PATH() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_CONTAINS_PATH, 0)
}

func (s *FunctionNameBaseContext) JSON_EXTRACT() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_EXTRACT, 0)
}

func (s *FunctionNameBaseContext) JSON_KEYS() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_KEYS, 0)
}

func (s *FunctionNameBaseContext) JSON_OVERLAPS() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_OVERLAPS, 0)
}

func (s *FunctionNameBaseContext) JSON_SEARCH() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_SEARCH, 0)
}

func (s *FunctionNameBaseContext) JSON_VALUE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_VALUE, 0)
}

func (s *FunctionNameBaseContext) JSON_ARRAY_APPEND() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_ARRAY_APPEND, 0)
}

func (s *FunctionNameBaseContext) JSON_ARRAY_INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_ARRAY_INSERT, 0)
}

func (s *FunctionNameBaseContext) JSON_INSERT() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_INSERT, 0)
}

func (s *FunctionNameBaseContext) JSON_MERGE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_MERGE, 0)
}

func (s *FunctionNameBaseContext) JSON_MERGE_PATCH() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_MERGE_PATCH, 0)
}

func (s *FunctionNameBaseContext) JSON_MERGE_PRESERVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_MERGE_PRESERVE, 0)
}

func (s *FunctionNameBaseContext) JSON_REMOVE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_REMOVE, 0)
}

func (s *FunctionNameBaseContext) JSON_REPLACE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_REPLACE, 0)
}

func (s *FunctionNameBaseContext) JSON_SET() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_SET, 0)
}

func (s *FunctionNameBaseContext) JSON_UNQUOTE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_UNQUOTE, 0)
}

func (s *FunctionNameBaseContext) JSON_DEPTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_DEPTH, 0)
}

func (s *FunctionNameBaseContext) JSON_LENGTH() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_LENGTH, 0)
}

func (s *FunctionNameBaseContext) JSON_TYPE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_TYPE, 0)
}

func (s *FunctionNameBaseContext) JSON_VALID() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_VALID, 0)
}

func (s *FunctionNameBaseContext) JSON_TABLE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_TABLE, 0)
}

func (s *FunctionNameBaseContext) JSON_SCHEMA_VALID() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_SCHEMA_VALID, 0)
}

func (s *FunctionNameBaseContext) JSON_SCHEMA_VALIDATION_REPORT() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_SCHEMA_VALIDATION_REPORT, 0)
}

func (s *FunctionNameBaseContext) JSON_PRETTY() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_PRETTY, 0)
}

func (s *FunctionNameBaseContext) JSON_STORAGE_FREE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_STORAGE_FREE, 0)
}

func (s *FunctionNameBaseContext) JSON_STORAGE_SIZE() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_STORAGE_SIZE, 0)
}

func (s *FunctionNameBaseContext) JSON_ARRAYAGG() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_ARRAYAGG, 0)
}

func (s *FunctionNameBaseContext) JSON_OBJECTAGG() antlr.TerminalNode {
	return s.GetToken(MySqlParserJSON_OBJECTAGG, 0)
}

func (s *FunctionNameBaseContext) GetRuleContext() antlr.RuleContext {
	return s
}

func (s *FunctionNameBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
	return antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *FunctionNameBaseContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.EnterFunctionNameBase(s)
	}
}

func (s *FunctionNameBaseContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(MySqlParserListener); ok {
		listenerT.ExitFunctionNameBase(s)
	}
}

func (p *MySqlParser) FunctionNameBase() (localctx IFunctionNameBaseContext) {
	this := p
	_ = this

	localctx = NewFunctionNameBaseContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 662, MySqlParserRULE_functionNameBase)
	var _la int

	defer func() {
		p.ExitRule()
	}()

	defer func() {
		if err := recover(); err != nil {
			if v, ok := err.(antlr.RecognitionException); ok {
				localctx.SetException(v)
				p.GetErrorHandler().ReportError(p, v)
				p.GetErrorHandler().Recover(p, v)
			} else {
				panic(err)
			}
		}
	}()

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(6781)
		_la = p.GetTokenStream().LA(1)

		if !(_la == MySqlParserDATABASE || _la == MySqlParserLEFT || _la == MySqlParserRIGHT || _la == MySqlParserSCHEMA || (((_la-206)&-(0x1f+1)) == 0 && ((1<<uint((_la-206)))&((1<<(MySqlParserDATE-206))|(1<<(MySqlParserTIME-206))|(1<<(MySqlParserTIMESTAMP-206))|(1<<(MySqlParserYEAR-206)))) != 0) || (((_la-240)&-(0x1f+1)) == 0 && ((1<<uint((_la-240)))&((1<<(MySqlParserJSON_ARRAY-240))|(1<<(MySqlParserJSON_OBJECT-240))|(1<<(MySqlParserJSON_QUOTE-240))|(1<<(MySqlParserJSON_CONTAINS-240))|(1<<(MySqlParserJSON_CONTAINS_PATH-240))|(1<<(MySqlParserJSON_EXTRACT-240))|(1<<(MySqlParserJSON_KEYS-240))|(1<<(MySqlParserJSON_OVERLAPS-240))|(1<<(MySqlParserJSON_SEARCH-240))|(1<<(MySqlParserJSON_VALUE-240))|(1<<(MySqlParserJSON_ARRAY_APPEND-240))|(1<<(MySqlParserJSON_ARRAY_INSERT-240))|(1<<(MySqlParserJSON_INSERT-240))|(1<<(MySqlParserJSON_MERGE-240))|(1<<(MySqlParserJSON_MERGE_PATCH-240))|(1<<(MySqlParserJSON_MERGE_PRESERVE-240))|(1<<(MySqlParserJSON_REMOVE-240))|(1<<(MySqlParserJSON_REPLACE-240))|(1<<(MySqlParserJSON_SET-240))|(1<<(MySqlParserJSON_UNQUOTE-240))|(1<<(MySqlParserJSON_DEPTH-240))|(1<<(MySqlParserJSON_LENGTH-240))|(1<<(MySqlParserJSON_TYPE-240))|(1<<(MySqlParserJSON_VALID-240))|(1<<(MySqlParserJSON_TABLE-240))|(1<<(MySqlParserJSON_SCHEMA_VALID-240))|(1<<(MySqlParserJSON_SCHEMA_VALIDATION_REPORT-240))|(1<<(MySqlParserJSON_PRETTY-240))|(1<<(MySqlParserJSON_STORAGE_FREE-240))|(1<<(MySqlParserJSON_STORAGE_SIZE-240))|(1<<(MySqlParserJSON_ARRAYAGG-240))|(1<<(MySqlParserJSON_OBJECTAGG-240)))) != 0) || _la == MySqlParserCOUNT || _la == MySqlParserPOSITION || _la == MySqlParserINVISIBLE || (((_la-637)&-(0x1f+1)) == 0 && ((1<<uint((_la-637)))&((1<<(MySqlParserVISIBLE-637))|(1<<(MySqlParserQUARTER-637))|(1<<(MySqlParserMONTH-637))|(1<<(MySqlParserDAY-637))|(1<<(MySqlParserHOUR-637))|(1<<(MySqlParserMINUTE-637))|(1<<(MySqlParserWEEK-637))|(1<<(MySqlParserSECOND-637))|(1<<(MySqlParserMICROSECOND-637)))) != 0) || _la == MySqlParserSESSION_VARIABLES_ADMIN || (((_la-758)&-(0x1f+1)) == 0 && ((1<<uint((_la-758)))&((1<<(MySqlParserGEOMETRYCOLLECTION-758))|(1<<(MySqlParserLINESTRING-758))|(1<<(MySqlParserMULTILINESTRING-758))|(1<<(MySqlParserMULTIPOINT-758))|(1<<(MySqlParserMULTIPOLYGON-758))|(1<<(MySqlParserPOINT-758))|(1<<(MySqlParserPOLYGON-758))|(1<<(MySqlParserABS-758))|(1<<(MySqlParserACOS-758))|(1<<(MySqlParserADDDATE-758))|(1<<(MySqlParserADDTIME-758))|(1<<(MySqlParserAES_DECRYPT-758))|(1<<(MySqlParserAES_ENCRYPT-758))|(1<<(MySqlParserAREA-758))|(1<<(MySqlParserASBINARY-758))|(1<<(MySqlParserASIN-758))|(1<<(MySqlParserASTEXT-758))|(1<<(MySqlParserASWKB-758))|(1<<(MySqlParserASWKT-758))|(1<<(MySqlParserASYMMETRIC_DECRYPT-758))|(1<<(MySqlParserASYMMETRIC_DERIVE-758))|(1<<(MySqlParserASYMMETRIC_ENCRYPT-758))|(1<<(MySqlParserASYMMETRIC_SIGN-758))|(1<<(MySqlParserASYMMETRIC_VERIFY-758))|(1<<(MySqlParserATAN-758))|(1<<(MySqlParserATAN2-758))|(1<<(MySqlParserBENCHMARK-758))|(1<<(MySqlParserBIN-758))|(1<<(MySqlParserBIT_COUNT-758))|(1<<(MySqlParserBIT_LENGTH-758)))) != 0) || (((_la-790)&-(0x1f+1)) == 0 && ((1<<uint((_la-790)))&((1<<(MySqlParserBUFFER-790))|(1<<(MySqlParserCEIL-790))|(1<<(MySqlParserCEILING-790))|(1<<(MySqlParserCENTROID-790))|(1<<(MySqlParserCHARACTER_LENGTH-790))|(1<<(MySqlParserCHARSET-790))|(1<<(MySqlParserCHAR_LENGTH-790))|(1<<(MySqlParserCOERCIBILITY-790))|(1<<(MySqlParserCOLLATION-790))|(1<<(MySqlParserCOMPRESS-790))|(1<<(MySqlParserCONCAT-790))|(1<<(MySqlParserCONCAT_WS-790))|(1<<(MySqlParserCONNECTION_ID-790))|(1<<(MySqlParserCONV-790))|(1<<(MySqlParserCONVERT_TZ-790))|(1<<(MySqlParserCOS-790))|(1<<(MySqlParserCOT-790))|(1<<(MySqlParserCRC32-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PRIV_KEY-790))|(1<<(MySqlParserCREATE_ASYMMETRIC_PUB_KEY-790))|(1<<(MySqlParserCREATE_DH_PARAMETERS-790))|(1<<(MySqlParserCREATE_DIGEST-790))|(1<<(MySqlParserCROSSES-790))|(1<<(MySqlParserDATEDIFF-790))|(1<<(MySqlParserDATE_FORMAT-790))|(1<<(MySqlParserDAYNAME-790))|(1<<(MySqlParserDAYOFMONTH-790))|(1<<(MySqlParserDAYOFWEEK-790))|(1<<(MySqlParserDAYOFYEAR-790))|(1<<(MySqlParserDECODE-790))|(1<<(MySqlParserDEGREES-790)))) != 0) || (((_la-822)&-(0x1f+1)) == 0 && ((1<<uint((_la-822)))&((1<<(MySqlParserDES_DECRYPT-822))|(1<<(MySqlParserDES_ENCRYPT-822))|(1<<(MySqlParserDIMENSION-822))|(1<<(MySqlParserDISJOINT-822))|(1<<(MySqlParserELT-822))|(1<<(MySqlParserENCODE-822))|(1<<(MySqlParserENCRYPT-822))|(1<<(MySqlParserENDPOINT-822))|(1<<(MySqlParserENVELOPE-822))|(1<<(MySqlParserEQUALS-822))|(1<<(MySqlParserEXP-822))|(1<<(MySqlParserEXPORT_SET-822))|(1<<(MySqlParserEXTERIORRING-822))|(1<<(MySqlParserEXTRACTVALUE-822))|(1<<(MySqlParserFIELD-822))|(1<<(MySqlParserFIND_IN_SET-822))|(1<<(MySqlParserFLOOR-822))|(1<<(MySqlParserFORMAT-822))|(1<<(MySqlParserFOUND_ROWS-822))|(1<<(MySqlParserFROM_BASE64-822))|(1<<(MySqlParserFROM_DAYS-822))|(1<<(MySqlParserFROM_UNIXTIME-822))|(1<<(MySqlParserGEOMCOLLFROMTEXT-822))|(1<<(MySqlParserGEOMCOLLFROMWKB-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMTEXT-822))|(1<<(MySqlParserGEOMETRYCOLLECTIONFROMWKB-822))|(1<<(MySqlParserGEOMETRYFROMTEXT-822))|(1<<(MySqlParserGEOMETRYFROMWKB-822))|(1<<(MySqlParserGEOMETRYN-822))|(1<<(MySqlParserGEOMETRYTYPE-822))|(1<<(MySqlParserGEOMFROMTEXT-822))|(1<<(MySqlParserGEOMFROMWKB-822)))) != 0) || (((_la-854)&-(0x1f+1)) == 0 && ((1<<uint((_la-854)))&((1<<(MySqlParserGET_FORMAT-854))|(1<<(MySqlParserGET_LOCK-854))|(1<<(MySqlParserGLENGTH-854))|(1<<(MySqlParserGREATEST-854))|(1<<(MySqlParserGTID_SUBSET-854))|(1<<(MySqlParserGTID_SUBTRACT-854))|(1<<(MySqlParserHEX-854))|(1<<(MySqlParserIFNULL-854))|(1<<(MySqlParserINET6_ATON-854))|(1<<(MySqlParserINET6_NTOA-854))|(1<<(MySqlParserINET_ATON-854))|(1<<(MySqlParserINET_NTOA-854))|(1<<(MySqlParserINSTR-854))|(1<<(MySqlParserINTERIORRINGN-854))|(1<<(MySqlParserINTERSECTS-854))|(1<<(MySqlParserISCLOSED-854))|(1<<(MySqlParserISEMPTY-854))|(1<<(MySqlParserISNULL-854))|(1<<(MySqlParserISSIMPLE-854))|(1<<(MySqlParserIS_FREE_LOCK-854))|(1<<(MySqlParserIS_IPV4-854))|(1<<(MySqlParserIS_IPV4_COMPAT-854))|(1<<(MySqlParserIS_IPV4_MAPPED-854))|(1<<(MySqlParserIS_IPV6-854))|(1<<(MySqlParserIS_USED_LOCK-854))|(1<<(MySqlParserLAST_INSERT_ID-854))|(1<<(MySqlParserLCASE-854))|(1<<(MySqlParserLEAST-854))|(1<<(MySqlParserLENGTH-854))|(1<<(MySqlParserLINEFROMTEXT-854))|(1<<(MySqlParserLINEFROMWKB-854))|(1<<(MySqlParserLINESTRINGFROMTEXT-854)))) != 0) || (((_la-886)&-(0x1f+1)) == 0 && ((1<<uint((_la-886)))&((1<<(MySqlParserLINESTRINGFROMWKB-886))|(1<<(MySqlParserLN-886))|(1<<(MySqlParserLOAD_FILE-886))|(1<<(MySqlParserLOCATE-886))|(1<<(MySqlParserLOG-886))|(1<<(MySqlParserLOG10-886))|(1<<(MySqlParserLOG2-886))|(1<<(MySqlParserLOWER-886))|(1<<(MySqlParserLPAD-886))|(1<<(MySqlParserLTRIM-886))|(1<<(MySqlParserMAKEDATE-886))|(1<<(MySqlParserMAKETIME-886))|(1<<(MySqlParserMAKE_SET-886))|(1<<(MySqlParserMASTER_POS_WAIT-886))|(1<<(MySqlParserMBRCONTAINS-886))|(1<<(MySqlParserMBRDISJOINT-886))|(1<<(MySqlParserMBREQUAL-886))|(1<<(MySqlParserMBRINTERSECTS-886))|(1<<(MySqlParserMBROVERLAPS-886))|(1<<(MySqlParserMBRTOUCHES-886))|(1<<(MySqlParserMBRWITHIN-886))|(1<<(MySqlParserMD5-886))|(1<<(MySqlParserMLINEFROMTEXT-886))|(1<<(MySqlParserMLINEFROMWKB-886))|(1<<(MySqlParserMONTHNAME-886))|(1<<(MySqlParserMPOINTFROMTEXT-886))|(1<<(MySqlParserMPOINTFROMWKB-886))|(1<<(MySqlParserMPOLYFROMTEXT-886))|(1<<(MySqlParserMPOLYFROMWKB-886))|(1<<(MySqlParserMULTILINESTRINGFROMTEXT-886))|(1<<(MySqlParserMULTILINESTRINGFROMWKB-886))|(1<<(MySqlParserMULTIPOINTFROMTEXT-886)))) != 0) || (((_la-918)&-(0x1f+1)) == 0 && ((1<<uint((_la-918)))&((1<<(MySqlParserMULTIPOINTFROMWKB-918))|(1<<(MySqlParserMULTIPOLYGONFROMTEXT-918))|(1<<(MySqlParserMULTIPOLYGONFROMWKB-918))|(1<<(MySqlParserNAME_CONST-918))|(1<<(MySqlParserNULLIF-918))|(1<<(MySqlParserNUMGEOMETRIES-918))|(1<<(MySqlParserNUMINTERIORRINGS-918))|(1<<(MySqlParserNUMPOINTS-918))|(1<<(MySqlParserOCT-918))|(1<<(MySqlParserOCTET_LENGTH-918))|(1<<(MySqlParserORD-918))|(1<<(MySqlParserOVERLAPS-918))|(1<<(MySqlParserPERIOD_ADD-918))|(1<<(MySqlParserPERIOD_DIFF-918))|(1<<(MySqlParserPI-918))|(1<<(MySqlParserPOINTFROMTEXT-918))|(1<<(MySqlParserPOINTFROMWKB-918))|(1<<(MySqlParserPOINTN-918))|(1<<(MySqlParserPOLYFROMTEXT-918))|(1<<(MySqlParserPOLYFROMWKB-918))|(1<<(MySqlParserPOLYGONFROMTEXT-918))|(1<<(MySqlParserPOLYGONFROMWKB-918))|(1<<(MySqlParserPOW-918))|(1<<(MySqlParserPOWER-918))|(1<<(MySqlParserQUOTE-918))|(1<<(MySqlParserRADIANS-918))|(1<<(MySqlParserRAND-918))|(1<<(MySqlParserRANDOM_BYTES-918))|(1<<(MySqlParserRELEASE_LOCK-918))|(1<<(MySqlParserREVERSE-918))|(1<<(MySqlParserROUND-918))|(1<<(MySqlParserROW_COUNT-918)))) != 0) || (((_la-950)&-(0x1f+1)) == 0 && ((1<<uint((_la-950)))&((1<<(MySqlParserRPAD-950))|(1<<(MySqlParserRTRIM-950))|(1<<(MySqlParserSEC_TO_TIME-950))|(1<<(MySqlParserSESSION_USER-950))|(1<<(MySqlParserSHA-950))|(1<<(MySqlParserSHA1-950))|(1<<(MySqlParserSHA2-950))|(1<<(MySqlParserSIGN-950))|(1<<(MySqlParserSIN-950))|(1<<(MySqlParserSLEEP-950))|(1<<(MySqlParserSOUNDEX-950))|(1<<(MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS-950))|(1<<(MySqlParserSQRT-950))|(1<<(MySqlParserSRID-950))|(1<<(MySqlParserSTARTPOINT-950))|(1<<(MySqlParserSTRCMP-950))|(1<<(MySqlParserSTR_TO_DATE-950))|(1<<(MySqlParserST_AREA-950))|(1<<(MySqlParserST_ASBINARY-950))|(1<<(MySqlParserST_ASTEXT-950))|(1<<(MySqlParserST_ASWKB-950))|(1<<(MySqlParserST_ASWKT-950))|(1<<(MySqlParserST_BUFFER-950))|(1<<(MySqlParserST_CENTROID-950))|(1<<(MySqlParserST_CONTAINS-950))|(1<<(MySqlParserST_CROSSES-950))|(1<<(MySqlParserST_DIFFERENCE-950))|(1<<(MySqlParserST_DIMENSION-950))|(1<<(MySqlParserST_DISJOINT-950))|(1<<(MySqlParserST_DISTANCE-950))|(1<<(MySqlParserST_ENDPOINT-950)))) != 0) || (((_la-982)&-(0x1f+1)) == 0 && ((1<<uint((_la-982)))&((1<<(MySqlParserST_ENVELOPE-982))|(1<<(MySqlParserST_EQUALS-982))|(1<<(MySqlParserST_EXTERIORRING-982))|(1<<(MySqlParserST_GEOMCOLLFROMTEXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMTXT-982))|(1<<(MySqlParserST_GEOMCOLLFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYCOLLECTIONFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYFROMTEXT-982))|(1<<(MySqlParserST_GEOMETRYFROMWKB-982))|(1<<(MySqlParserST_GEOMETRYN-982))|(1<<(MySqlParserST_GEOMETRYTYPE-982))|(1<<(MySqlParserST_GEOMFROMTEXT-982))|(1<<(MySqlParserST_GEOMFROMWKB-982))|(1<<(MySqlParserST_INTERIORRINGN-982))|(1<<(MySqlParserST_INTERSECTION-982))|(1<<(MySqlParserST_INTERSECTS-982))|(1<<(MySqlParserST_ISCLOSED-982))|(1<<(MySqlParserST_ISEMPTY-982))|(1<<(MySqlParserST_ISSIMPLE-982))|(1<<(MySqlParserST_LINEFROMTEXT-982))|(1<<(MySqlParserST_LINEFROMWKB-982))|(1<<(MySqlParserST_LINESTRINGFROMTEXT-982))|(1<<(MySqlParserST_LINESTRINGFROMWKB-982))|(1<<(MySqlParserST_NUMGEOMETRIES-982))|(1<<(MySqlParserST_NUMINTERIORRING-982))|(1<<(MySqlParserST_NUMINTERIORRINGS-982))|(1<<(MySqlParserST_NUMPOINTS-982))|(1<<(MySqlParserST_OVERLAPS-982))|(1<<(MySqlParserST_POINTFROMTEXT-982))|(1<<(MySqlParserST_POINTFROMWKB-982))|(1<<(MySqlParserST_POINTN-982)))) != 0) || (((_la-1014)&-(0x1f+1)) == 0 && ((1<<uint((_la-1014)))&((1<<(MySqlParserST_POLYFROMTEXT-1014))|(1<<(MySqlParserST_POLYFROMWKB-1014))|(1<<(MySqlParserST_POLYGONFROMTEXT-1014))|(1<<(MySqlParserST_POLYGONFROMWKB-1014))|(1<<(MySqlParserST_SRID-1014))|(1<<(MySqlParserST_STARTPOINT-1014))|(1<<(MySqlParserST_SYMDIFFERENCE-1014))|(1<<(MySqlParserST_TOUCHES-1014))|(1<<(MySqlParserST_UNION-1014))|(1<<(MySqlParserST_WITHIN-1014))|(1<<(MySqlParserST_X-1014))|(1<<(MySqlParserST_Y-1014))|(1<<(MySqlParserSUBDATE-1014))|(1<<(MySqlParserSUBSTRING_INDEX-1014))|(1<<(MySqlParserSUBTIME-1014))|(1<<(MySqlParserSYSTEM_USER-1014))|(1<<(MySqlParserTAN-1014))|(1<<(MySqlParserTIMEDIFF-1014))|(1<<(MySqlParserTIMESTAMPADD-1014))|(1<<(MySqlParserTIMESTAMPDIFF-1014))|(1<<(MySqlParserTIME_FORMAT-1014))|(1<<(MySqlParserTIME_TO_SEC-1014))|(1<<(MySqlParserTOUCHES-1014))|(1<<(MySqlParserTO_BASE64-1014))|(1<<(MySqlParserTO_DAYS-1014))|(1<<(MySqlParserTO_SECONDS-1014))|(1<<(MySqlParserUCASE-1014))|(1<<(MySqlParserUNCOMPRESS-1014))|(1<<(MySqlParserUNCOMPRESSED_LENGTH-1014))|(1<<(MySqlParserUNHEX-1014))|(1<<(MySqlParserUNIX_TIMESTAMP-1014))|(1<<(MySqlParserUPDATEXML-1014)))) != 0) || (((_la-1046)&-(0x1f+1)) == 0 && ((1<<uint((_la-1046)))&((1<<(MySqlParserUPPER-1046))|(1<<(MySqlParserUUID-1046))|(1<<(MySqlParserUUID_SHORT-1046))|(1<<(MySqlParserVALIDATE_PASSWORD_STRENGTH-1046))|(1<<(MySqlParserVERSION-1046))|(1<<(MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS-1046))|(1<<(MySqlParserWEEKDAY-1046))|(1<<(MySqlParserWEEKOFYEAR-1046))|(1<<(MySqlParserWEIGHT_STRING-1046))|(1<<(MySqlParserWITHIN-1046))|(1<<(MySqlParserYEARWEEK-1046))|(1<<(MySqlParserY_FUNCTION-1046))|(1<<(MySqlParserX_FUNCTION-1046))|(1<<(MySqlParserMOD-1046)))) != 0)) {
			p.GetErrorHandler().RecoverInline(p)
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}

	return localctx
}

func (p *MySqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool {
	switch ruleIndex {
	case 316:
		var t *ExpressionContext = nil
		if localctx != nil {
			t = localctx.(*ExpressionContext)
		}
		return p.Expression_Sempred(t, predIndex)

	case 317:
		var t *PredicateContext = nil
		if localctx != nil {
			t = localctx.(*PredicateContext)
		}
		return p.Predicate_Sempred(t, predIndex)

	case 318:
		var t *ExpressionAtomContext = nil
		if localctx != nil {
			t = localctx.(*ExpressionAtomContext)
		}
		return p.ExpressionAtom_Sempred(t, predIndex)

	default:
		panic("No predicate with index: " + fmt.Sprint(ruleIndex))
	}
}

func (p *MySqlParser) Expression_Sempred(localctx antlr.RuleContext, predIndex int) bool {
	this := p
	_ = this

	switch predIndex {
	case 0:
		return p.Precpred(p.GetParserRuleContext(), 3)

	default:
		panic("No predicate with index: " + fmt.Sprint(predIndex))
	}
}

func (p *MySqlParser) Predicate_Sempred(localctx antlr.RuleContext, predIndex int) bool {
	this := p
	_ = this

	switch predIndex {
	case 1:
		return p.Precpred(p.GetParserRuleContext(), 8)

	case 2:
		return p.Precpred(p.GetParserRuleContext(), 6)

	case 3:
		return p.Precpred(p.GetParserRuleContext(), 5)

	case 4:
		return p.Precpred(p.GetParserRuleContext(), 3)

	case 5:
		return p.Precpred(p.GetParserRuleContext(), 10)

	case 6:
		return p.Precpred(p.GetParserRuleContext(), 9)

	case 7:
		return p.Precpred(p.GetParserRuleContext(), 7)

	case 8:
		return p.Precpred(p.GetParserRuleContext(), 4)

	case 9:
		return p.Precpred(p.GetParserRuleContext(), 1)

	default:
		panic("No predicate with index: " + fmt.Sprint(predIndex))
	}
}

func (p *MySqlParser) ExpressionAtom_Sempred(localctx antlr.RuleContext, predIndex int) bool {
	this := p
	_ = this

	switch predIndex {
	case 10:
		return p.Precpred(p.GetParserRuleContext(), 3)

	case 11:
		return p.Precpred(p.GetParserRuleContext(), 2)

	case 12:
		return p.Precpred(p.GetParserRuleContext(), 1)

	case 13:
		return p.Precpred(p.GetParserRuleContext(), 12)

	default:
		panic("No predicate with index: " + fmt.Sprint(predIndex))
	}
}
