From e7cb5be83a48e892039d6a9738e29263b3d083f6 Mon Sep 17 00:00:00 2001 From: Agustindeleon Date: Sun, 23 Nov 2025 10:54:48 +0100 Subject: [PATCH 1/3] chore: update parser events --- g4/SecLangParser.g4 | 20 +- listener.go | 14 +- parser/seclang_parser.go | 1772 +++++++++++-------- parser/seclangparser_base_listener.go | 14 + parser/seclangparser_listener.go | 12 + src/seclang_parser/SecLangParser.py | 1515 ++++++++-------- src/seclang_parser/SecLangParserListener.py | 18 + 7 files changed, 1862 insertions(+), 1503 deletions(-) diff --git a/g4/SecLangParser.g4 b/g4/SecLangParser.g4 index 601f17f..e911dc7 100644 --- a/g4/SecLangParser.g4 +++ b/g4/SecLangParser.g4 @@ -29,8 +29,8 @@ stmt: | comment? rule_script_directive file_path actions? | comment? rule_script_directive QUOTE file_path QUOTE actions? | comment? remove_rule_by_id remove_rule_by_id_values+ - | comment? string_remove_rules values - | comment? string_remove_rules QUOTE values QUOTE + | comment? string_remove_rules string_remove_rules_values + | comment? string_remove_rules QUOTE string_remove_rules_values QUOTE | comment? update_target_rules update_target_rules_values update_variables | comment? update_target_rules QUOTE update_target_rules_values QUOTE update_variables | comment? update_target_rules update_target_rules_values update_variables PIPE new_target @@ -151,6 +151,12 @@ string_remove_rules: | CONFIG_SEC_RULE_REMOVE_BY_TAG # remove_rule_by_tag ; +string_remove_rules_values: + STRING + | VARIABLE_NAME + | COMMA_SEPARATED_STRING + ; + update_target_rules: CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID # update_target_by_id | CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG # update_target_by_msg @@ -232,9 +238,8 @@ values: ; action_ctl_target_value: - (INT | IDENT | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI variable_enum - | (INT | IDENT | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI collection_enum (COLON collection_value)? - + (ctl_id | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI variable_enum + | (ctl_id | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI collection_enum (COLON collection_value)? ; update_target_rules_values: @@ -493,4 +498,9 @@ assignment: var_assignment: VAR_ASSIGNMENT + ; + +ctl_id: + INT + | IDENT ; \ No newline at end of file diff --git a/listener.go b/listener.go index d661d70..f73017b 100644 --- a/listener.go +++ b/listener.go @@ -28,7 +28,7 @@ type ParserResult struct { rangeEndEvents []int setvarCollections []string setvarNames []string - setvarOperations []string + assignmentOperations []string } type TreeShapeListener struct { @@ -104,7 +104,7 @@ func (l *TreeShapeListener) EnterRemove_rule_by_tag(ctx *parser.Remove_rule_by_t l.results.directiveList = append(l.results.directiveList, ctx.GetText()) } -func (l *TreeShapeListener) EnterValues(ctx *parser.ValuesContext) { +func (l *TreeShapeListener) EnterString_remove_rules_values(ctx *parser.String_remove_rules_valuesContext) { l.results.directiveValues = append(l.results.directiveValues, ctx.GetText()) } @@ -169,9 +169,17 @@ func (l *TreeShapeListener) EnterSetvar_stmt(ctx *parser.Setvar_stmtContext) { } func (l *TreeShapeListener) EnterAssignment(ctx *parser.AssignmentContext) { - l.results.setvarOperations = append(l.results.setvarOperations, ctx.GetText()) + l.results.assignmentOperations = append(l.results.assignmentOperations, ctx.GetText()) } func (l *TreeShapeListener) EnterVar_assignment(ctx *parser.Var_assignmentContext) { l.results.directiveValues = append(l.results.directiveValues, ctx.GetText()) } + +func (l *TreeShapeListener) EnterCtl_action(ctx *parser.Ctl_actionContext) { + l.results.directiveValues = append(l.results.directiveValues, ctx.GetText()) +} + +func (l *TreeShapeListener) EnterCtl_id(ctx *parser.Ctl_idContext) { + l.results.directiveValues = append(l.results.directiveValues, ctx.GetText()) +} diff --git a/parser/seclang_parser.go b/parser/seclang_parser.go index 0209a0a..3ca88c9 100644 --- a/parser/seclang_parser.go +++ b/parser/seclang_parser.go @@ -163,8 +163,8 @@ func seclangparserParserInit() { "configuration", "stmt", "comment", "rules_directive", "engine_config_directive", "string_engine_config_directive", "sec_marker_directive", "engine_config_directive_with_param", "rule_script_directive", "file_path", "remove_rule_by_id", "remove_rule_by_id_values", - "int_range", "range_start", "range_end", "string_remove_rules", "update_target_rules", - "update_action_rule", "id", "engine_config_sec_cache_transformations", + "int_range", "range_start", "range_end", "string_remove_rules", "string_remove_rules_values", + "update_target_rules", "update_action_rule", "id", "engine_config_sec_cache_transformations", "option_list", "option", "option_name", "engine_config_action_directive", "stmt_audit_log", "values", "action_ctl_target_value", "update_target_rules_values", "operator_not", "operator", "operator_name", "operator_value", "var_not", @@ -175,11 +175,11 @@ func seclangparserParserInit() { "non_disruptive_action_with_params", "data_action_with_params", "flow_action_with_params", "action_value", "action_value_types", "string_literal", "ctl_action", "transformation_action_value", "collection_value", "setvar_action", - "col_name", "setvar_stmt", "assignment", "var_assignment", + "col_name", "setvar_stmt", "assignment", "var_assignment", "ctl_id", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 265, 632, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 265, 638, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, @@ -190,292 +190,294 @@ func seclangparserParserInit() { 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, - 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 1, - 0, 5, 0, 128, 8, 0, 10, 0, 12, 0, 131, 9, 0, 1, 0, 1, 0, 1, 1, 3, 1, 136, - 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 142, 8, 1, 1, 1, 3, 1, 145, 8, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 150, 8, 1, 1, 1, 3, 1, 153, 8, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 160, 8, 1, 1, 1, 3, 1, 163, 8, 1, 1, 1, 1, 1, 4, 1, 167, - 8, 1, 11, 1, 12, 1, 168, 1, 1, 3, 1, 172, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 178, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 186, 8, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 193, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 202, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 211, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 222, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 229, 8, 1, 1, 1, - 1, 1, 3, 1, 233, 8, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, + 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, + 63, 7, 63, 2, 64, 7, 64, 1, 0, 5, 0, 132, 8, 0, 10, 0, 12, 0, 135, 9, 0, + 1, 0, 1, 0, 1, 1, 3, 1, 140, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 146, 8, + 1, 1, 1, 3, 1, 149, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 154, 8, 1, 1, 1, 3, 1, + 157, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 164, 8, 1, 1, 1, 3, 1, 167, + 8, 1, 1, 1, 1, 1, 4, 1, 171, 8, 1, 11, 1, 12, 1, 172, 1, 1, 3, 1, 176, + 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 182, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 190, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 197, 8, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 206, 8, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 215, 8, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 226, 8, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 233, 8, 1, 1, 1, 1, 1, 3, 1, 237, 8, 1, 1, 2, 1, 2, 1, 3, + 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, - 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, - 3, 4, 267, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 273, 8, 5, 1, 6, 1, 6, 1, - 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 287, - 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, - 15, 3, 15, 299, 8, 15, 1, 16, 1, 16, 1, 16, 3, 16, 304, 8, 16, 1, 17, 1, - 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 316, - 8, 20, 10, 20, 12, 20, 319, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, - 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 331, 8, 23, 1, 24, 1, 24, 1, 25, - 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, - 1, 25, 3, 25, 358, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, - 26, 3, 26, 367, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 26, 3, 26, 378, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 384, - 8, 26, 3, 26, 386, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 391, 8, 27, 1, 28, - 1, 28, 1, 29, 1, 29, 3, 29, 397, 8, 29, 1, 29, 1, 29, 1, 29, 3, 29, 402, - 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 411, 8, - 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 419, 8, 31, 1, 31, - 1, 31, 1, 31, 3, 31, 424, 8, 31, 5, 31, 426, 8, 31, 10, 31, 12, 31, 429, - 9, 31, 1, 31, 1, 31, 3, 31, 433, 8, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, - 34, 3, 34, 440, 8, 34, 1, 34, 3, 34, 443, 8, 34, 1, 34, 3, 34, 446, 8, - 34, 1, 34, 1, 34, 3, 34, 450, 8, 34, 1, 34, 1, 34, 3, 34, 454, 8, 34, 1, - 34, 3, 34, 457, 8, 34, 1, 34, 1, 34, 3, 34, 461, 8, 34, 5, 34, 463, 8, - 34, 10, 34, 12, 34, 466, 9, 34, 1, 35, 3, 35, 469, 8, 35, 1, 35, 3, 35, - 472, 8, 35, 1, 35, 3, 35, 475, 8, 35, 1, 35, 1, 35, 3, 35, 479, 8, 35, - 1, 35, 1, 35, 3, 35, 483, 8, 35, 1, 35, 3, 35, 486, 8, 35, 1, 35, 1, 35, - 3, 35, 490, 8, 35, 5, 35, 492, 8, 35, 10, 35, 12, 35, 495, 9, 35, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 503, 8, 37, 3, 37, 505, 8, 37, - 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 515, 8, - 40, 10, 40, 12, 40, 518, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 3, 41, - 525, 8, 41, 1, 41, 3, 41, 528, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 3, 41, 537, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, - 42, 3, 42, 545, 8, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, - 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 558, 8, 46, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 568, 8, 47, 1, 48, 1, 48, 1, 49, - 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, - 52, 1, 52, 1, 52, 1, 52, 3, 52, 587, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 600, 8, 53, 1, - 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 611, - 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, - 60, 1, 60, 4, 60, 624, 8, 60, 11, 60, 12, 60, 625, 1, 61, 1, 61, 1, 62, - 1, 62, 1, 62, 0, 0, 63, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, - 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, - 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, - 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 0, - 13, 8, 0, 133, 141, 152, 169, 171, 177, 180, 180, 182, 182, 184, 185, 187, - 187, 211, 218, 3, 0, 142, 151, 195, 199, 229, 229, 1, 0, 91, 127, 1, 0, - 87, 88, 2, 0, 86, 86, 89, 89, 5, 0, 28, 28, 31, 31, 45, 45, 47, 47, 59, - 60, 5, 0, 30, 30, 32, 32, 53, 53, 56, 58, 68, 68, 1, 0, 63, 64, 8, 0, 29, - 29, 34, 34, 46, 46, 48, 49, 51, 52, 62, 62, 66, 67, 69, 75, 2, 0, 80, 80, - 83, 83, 1, 0, 78, 79, 1, 0, 35, 44, 2, 0, 3, 3, 5, 6, 704, 0, 129, 1, 0, - 0, 0, 2, 232, 1, 0, 0, 0, 4, 234, 1, 0, 0, 0, 6, 236, 1, 0, 0, 0, 8, 266, - 1, 0, 0, 0, 10, 272, 1, 0, 0, 0, 12, 274, 1, 0, 0, 0, 14, 276, 1, 0, 0, - 0, 16, 278, 1, 0, 0, 0, 18, 280, 1, 0, 0, 0, 20, 282, 1, 0, 0, 0, 22, 286, - 1, 0, 0, 0, 24, 288, 1, 0, 0, 0, 26, 292, 1, 0, 0, 0, 28, 294, 1, 0, 0, - 0, 30, 298, 1, 0, 0, 0, 32, 303, 1, 0, 0, 0, 34, 305, 1, 0, 0, 0, 36, 307, - 1, 0, 0, 0, 38, 309, 1, 0, 0, 0, 40, 311, 1, 0, 0, 0, 42, 322, 1, 0, 0, - 0, 44, 326, 1, 0, 0, 0, 46, 330, 1, 0, 0, 0, 48, 332, 1, 0, 0, 0, 50, 357, - 1, 0, 0, 0, 52, 385, 1, 0, 0, 0, 54, 390, 1, 0, 0, 0, 56, 392, 1, 0, 0, - 0, 58, 410, 1, 0, 0, 0, 60, 412, 1, 0, 0, 0, 62, 432, 1, 0, 0, 0, 64, 434, - 1, 0, 0, 0, 66, 436, 1, 0, 0, 0, 68, 439, 1, 0, 0, 0, 70, 468, 1, 0, 0, - 0, 72, 496, 1, 0, 0, 0, 74, 504, 1, 0, 0, 0, 76, 506, 1, 0, 0, 0, 78, 508, - 1, 0, 0, 0, 80, 510, 1, 0, 0, 0, 82, 536, 1, 0, 0, 0, 84, 544, 1, 0, 0, - 0, 86, 546, 1, 0, 0, 0, 88, 548, 1, 0, 0, 0, 90, 550, 1, 0, 0, 0, 92, 557, - 1, 0, 0, 0, 94, 567, 1, 0, 0, 0, 96, 569, 1, 0, 0, 0, 98, 571, 1, 0, 0, - 0, 100, 573, 1, 0, 0, 0, 102, 575, 1, 0, 0, 0, 104, 586, 1, 0, 0, 0, 106, - 599, 1, 0, 0, 0, 108, 601, 1, 0, 0, 0, 110, 603, 1, 0, 0, 0, 112, 605, - 1, 0, 0, 0, 114, 610, 1, 0, 0, 0, 116, 612, 1, 0, 0, 0, 118, 618, 1, 0, - 0, 0, 120, 623, 1, 0, 0, 0, 122, 627, 1, 0, 0, 0, 124, 629, 1, 0, 0, 0, - 126, 128, 3, 2, 1, 0, 127, 126, 1, 0, 0, 0, 128, 131, 1, 0, 0, 0, 129, - 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 132, 1, 0, 0, 0, 131, 129, - 1, 0, 0, 0, 132, 133, 5, 0, 0, 1, 133, 1, 1, 0, 0, 0, 134, 136, 3, 4, 2, - 0, 135, 134, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, - 138, 3, 6, 3, 0, 138, 139, 3, 68, 34, 0, 139, 141, 3, 58, 29, 0, 140, 142, - 3, 80, 40, 0, 141, 140, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 233, 1, - 0, 0, 0, 143, 145, 3, 4, 2, 0, 144, 143, 1, 0, 0, 0, 144, 145, 1, 0, 0, - 0, 145, 146, 1, 0, 0, 0, 146, 147, 3, 16, 8, 0, 147, 149, 3, 18, 9, 0, - 148, 150, 3, 80, 40, 0, 149, 148, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, - 233, 1, 0, 0, 0, 151, 153, 3, 4, 2, 0, 152, 151, 1, 0, 0, 0, 152, 153, - 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 155, 3, 16, 8, 0, 155, 156, 5, 1, - 0, 0, 156, 157, 3, 18, 9, 0, 157, 159, 5, 1, 0, 0, 158, 160, 3, 80, 40, - 0, 159, 158, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 233, 1, 0, 0, 0, 161, - 163, 3, 4, 2, 0, 162, 161, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, - 1, 0, 0, 0, 164, 166, 3, 20, 10, 0, 165, 167, 3, 22, 11, 0, 166, 165, 1, - 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0, - 0, 169, 233, 1, 0, 0, 0, 170, 172, 3, 4, 2, 0, 171, 170, 1, 0, 0, 0, 171, - 172, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 174, 3, 30, 15, 0, 174, 175, - 3, 50, 25, 0, 175, 233, 1, 0, 0, 0, 176, 178, 3, 4, 2, 0, 177, 176, 1, - 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 180, 3, 30, 15, - 0, 180, 181, 5, 1, 0, 0, 181, 182, 3, 50, 25, 0, 182, 183, 5, 1, 0, 0, - 183, 233, 1, 0, 0, 0, 184, 186, 3, 4, 2, 0, 185, 184, 1, 0, 0, 0, 185, - 186, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 3, 32, 16, 0, 188, 189, - 3, 54, 27, 0, 189, 190, 3, 70, 35, 0, 190, 233, 1, 0, 0, 0, 191, 193, 3, - 4, 2, 0, 192, 191, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 194, 1, 0, 0, - 0, 194, 195, 3, 32, 16, 0, 195, 196, 5, 1, 0, 0, 196, 197, 3, 54, 27, 0, - 197, 198, 5, 1, 0, 0, 198, 199, 3, 70, 35, 0, 199, 233, 1, 0, 0, 0, 200, - 202, 3, 4, 2, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, - 1, 0, 0, 0, 203, 204, 3, 32, 16, 0, 204, 205, 3, 54, 27, 0, 205, 206, 3, - 70, 35, 0, 206, 207, 5, 8, 0, 0, 207, 208, 3, 72, 36, 0, 208, 233, 1, 0, - 0, 0, 209, 211, 3, 4, 2, 0, 210, 209, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, - 211, 212, 1, 0, 0, 0, 212, 213, 3, 32, 16, 0, 213, 214, 5, 1, 0, 0, 214, - 215, 3, 54, 27, 0, 215, 216, 5, 1, 0, 0, 216, 217, 3, 70, 35, 0, 217, 218, - 5, 8, 0, 0, 218, 219, 3, 72, 36, 0, 219, 233, 1, 0, 0, 0, 220, 222, 3, - 4, 2, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 1, 0, 0, - 0, 223, 224, 3, 34, 17, 0, 224, 225, 3, 36, 18, 0, 225, 226, 3, 80, 40, - 0, 226, 233, 1, 0, 0, 0, 227, 229, 3, 4, 2, 0, 228, 227, 1, 0, 0, 0, 228, - 229, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 233, 3, 8, 4, 0, 231, 233, - 3, 4, 2, 0, 232, 135, 1, 0, 0, 0, 232, 144, 1, 0, 0, 0, 232, 152, 1, 0, - 0, 0, 232, 162, 1, 0, 0, 0, 232, 171, 1, 0, 0, 0, 232, 177, 1, 0, 0, 0, - 232, 185, 1, 0, 0, 0, 232, 192, 1, 0, 0, 0, 232, 201, 1, 0, 0, 0, 232, - 210, 1, 0, 0, 0, 232, 221, 1, 0, 0, 0, 232, 228, 1, 0, 0, 0, 232, 231, - 1, 0, 0, 0, 233, 3, 1, 0, 0, 0, 234, 235, 5, 12, 0, 0, 235, 5, 1, 0, 0, - 0, 236, 237, 5, 219, 0, 0, 237, 7, 1, 0, 0, 0, 238, 239, 3, 48, 24, 0, - 239, 240, 3, 50, 25, 0, 240, 267, 1, 0, 0, 0, 241, 242, 3, 48, 24, 0, 242, - 243, 5, 1, 0, 0, 243, 244, 3, 50, 25, 0, 244, 245, 5, 1, 0, 0, 245, 267, - 1, 0, 0, 0, 246, 247, 3, 46, 23, 0, 247, 248, 3, 80, 40, 0, 248, 267, 1, - 0, 0, 0, 249, 250, 3, 10, 5, 0, 250, 251, 5, 1, 0, 0, 251, 252, 3, 50, - 25, 0, 252, 253, 5, 1, 0, 0, 253, 267, 1, 0, 0, 0, 254, 255, 3, 12, 6, - 0, 255, 256, 5, 1, 0, 0, 256, 257, 3, 50, 25, 0, 257, 258, 5, 1, 0, 0, - 258, 267, 1, 0, 0, 0, 259, 260, 3, 14, 7, 0, 260, 261, 3, 50, 25, 0, 261, - 267, 1, 0, 0, 0, 262, 263, 3, 38, 19, 0, 263, 264, 3, 50, 25, 0, 264, 265, - 3, 40, 20, 0, 265, 267, 1, 0, 0, 0, 266, 238, 1, 0, 0, 0, 266, 241, 1, - 0, 0, 0, 266, 246, 1, 0, 0, 0, 266, 249, 1, 0, 0, 0, 266, 254, 1, 0, 0, - 0, 266, 259, 1, 0, 0, 0, 266, 262, 1, 0, 0, 0, 267, 9, 1, 0, 0, 0, 268, - 273, 1, 0, 0, 0, 269, 273, 5, 129, 0, 0, 270, 273, 5, 130, 0, 0, 271, 273, - 5, 131, 0, 0, 272, 268, 1, 0, 0, 0, 272, 269, 1, 0, 0, 0, 272, 270, 1, - 0, 0, 0, 272, 271, 1, 0, 0, 0, 273, 11, 1, 0, 0, 0, 274, 275, 5, 181, 0, - 0, 275, 13, 1, 0, 0, 0, 276, 277, 7, 0, 0, 0, 277, 15, 1, 0, 0, 0, 278, - 279, 5, 220, 0, 0, 279, 17, 1, 0, 0, 0, 280, 281, 5, 9, 0, 0, 281, 19, - 1, 0, 0, 0, 282, 283, 5, 188, 0, 0, 283, 21, 1, 0, 0, 0, 284, 287, 5, 229, - 0, 0, 285, 287, 3, 24, 12, 0, 286, 284, 1, 0, 0, 0, 286, 285, 1, 0, 0, - 0, 287, 23, 1, 0, 0, 0, 288, 289, 3, 26, 13, 0, 289, 290, 5, 15, 0, 0, - 290, 291, 3, 28, 14, 0, 291, 25, 1, 0, 0, 0, 292, 293, 5, 229, 0, 0, 293, - 27, 1, 0, 0, 0, 294, 295, 5, 229, 0, 0, 295, 29, 1, 0, 0, 0, 296, 299, - 5, 189, 0, 0, 297, 299, 5, 190, 0, 0, 298, 296, 1, 0, 0, 0, 298, 297, 1, - 0, 0, 0, 299, 31, 1, 0, 0, 0, 300, 304, 5, 193, 0, 0, 301, 304, 5, 192, - 0, 0, 302, 304, 5, 191, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, 1, 0, 0, - 0, 303, 302, 1, 0, 0, 0, 304, 33, 1, 0, 0, 0, 305, 306, 5, 194, 0, 0, 306, - 35, 1, 0, 0, 0, 307, 308, 5, 229, 0, 0, 308, 37, 1, 0, 0, 0, 309, 310, - 5, 132, 0, 0, 310, 39, 1, 0, 0, 0, 311, 312, 5, 1, 0, 0, 312, 317, 3, 42, - 21, 0, 313, 314, 5, 7, 0, 0, 314, 316, 3, 42, 21, 0, 315, 313, 1, 0, 0, - 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, - 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 321, 5, 1, 0, 0, 321, 41, 1, - 0, 0, 0, 322, 323, 3, 44, 22, 0, 323, 324, 5, 4, 0, 0, 324, 325, 3, 50, - 25, 0, 325, 43, 1, 0, 0, 0, 326, 327, 5, 221, 0, 0, 327, 45, 1, 0, 0, 0, - 328, 331, 5, 178, 0, 0, 329, 331, 5, 179, 0, 0, 330, 328, 1, 0, 0, 0, 330, - 329, 1, 0, 0, 0, 331, 47, 1, 0, 0, 0, 332, 333, 7, 1, 0, 0, 333, 49, 1, - 0, 0, 0, 334, 358, 5, 229, 0, 0, 335, 358, 3, 24, 12, 0, 336, 358, 5, 204, - 0, 0, 337, 358, 5, 203, 0, 0, 338, 358, 5, 209, 0, 0, 339, 358, 5, 205, - 0, 0, 340, 358, 5, 202, 0, 0, 341, 358, 5, 208, 0, 0, 342, 358, 5, 225, - 0, 0, 343, 358, 5, 200, 0, 0, 344, 358, 5, 210, 0, 0, 345, 358, 5, 201, - 0, 0, 346, 358, 5, 206, 0, 0, 347, 358, 5, 207, 0, 0, 348, 349, 5, 9, 0, - 0, 349, 358, 5, 229, 0, 0, 350, 358, 5, 9, 0, 0, 351, 358, 5, 235, 0, 0, - 352, 358, 5, 227, 0, 0, 353, 358, 5, 243, 0, 0, 354, 358, 5, 247, 0, 0, - 355, 358, 5, 128, 0, 0, 356, 358, 3, 52, 26, 0, 357, 334, 1, 0, 0, 0, 357, - 335, 1, 0, 0, 0, 357, 336, 1, 0, 0, 0, 357, 337, 1, 0, 0, 0, 357, 338, - 1, 0, 0, 0, 357, 339, 1, 0, 0, 0, 357, 340, 1, 0, 0, 0, 357, 341, 1, 0, - 0, 0, 357, 342, 1, 0, 0, 0, 357, 343, 1, 0, 0, 0, 357, 344, 1, 0, 0, 0, - 357, 345, 1, 0, 0, 0, 357, 346, 1, 0, 0, 0, 357, 347, 1, 0, 0, 0, 357, - 348, 1, 0, 0, 0, 357, 350, 1, 0, 0, 0, 357, 351, 1, 0, 0, 0, 357, 352, - 1, 0, 0, 0, 357, 353, 1, 0, 0, 0, 357, 354, 1, 0, 0, 0, 357, 355, 1, 0, - 0, 0, 357, 356, 1, 0, 0, 0, 358, 51, 1, 0, 0, 0, 359, 367, 5, 229, 0, 0, - 360, 367, 5, 228, 0, 0, 361, 362, 5, 2, 0, 0, 362, 363, 3, 108, 54, 0, - 363, 364, 5, 2, 0, 0, 364, 367, 1, 0, 0, 0, 365, 367, 5, 227, 0, 0, 366, - 359, 1, 0, 0, 0, 366, 360, 1, 0, 0, 0, 366, 361, 1, 0, 0, 0, 366, 365, - 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 369, 5, 19, 0, 0, 369, 386, 3, 76, - 38, 0, 370, 378, 5, 229, 0, 0, 371, 378, 5, 228, 0, 0, 372, 373, 5, 2, - 0, 0, 373, 374, 3, 108, 54, 0, 374, 375, 5, 2, 0, 0, 375, 378, 1, 0, 0, - 0, 376, 378, 5, 227, 0, 0, 377, 370, 1, 0, 0, 0, 377, 371, 1, 0, 0, 0, - 377, 372, 1, 0, 0, 0, 377, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, - 380, 5, 19, 0, 0, 380, 383, 3, 78, 39, 0, 381, 382, 5, 4, 0, 0, 382, 384, - 3, 114, 57, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, - 0, 0, 0, 385, 366, 1, 0, 0, 0, 385, 377, 1, 0, 0, 0, 386, 53, 1, 0, 0, - 0, 387, 391, 5, 229, 0, 0, 388, 391, 3, 24, 12, 0, 389, 391, 5, 235, 0, - 0, 390, 387, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 389, 1, 0, 0, 0, 391, - 55, 1, 0, 0, 0, 392, 393, 5, 10, 0, 0, 393, 57, 1, 0, 0, 0, 394, 396, 5, - 1, 0, 0, 395, 397, 3, 56, 28, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, 0, - 0, 0, 397, 398, 1, 0, 0, 0, 398, 399, 5, 257, 0, 0, 399, 401, 3, 60, 30, - 0, 400, 402, 3, 62, 31, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, - 402, 403, 1, 0, 0, 0, 403, 404, 5, 1, 0, 0, 404, 411, 1, 0, 0, 0, 405, - 406, 5, 1, 0, 0, 406, 407, 3, 62, 31, 0, 407, 408, 5, 1, 0, 0, 408, 411, - 1, 0, 0, 0, 409, 411, 3, 62, 31, 0, 410, 394, 1, 0, 0, 0, 410, 405, 1, - 0, 0, 0, 410, 409, 1, 0, 0, 0, 411, 59, 1, 0, 0, 0, 412, 413, 7, 2, 0, - 0, 413, 61, 1, 0, 0, 0, 414, 433, 3, 76, 38, 0, 415, 433, 5, 235, 0, 0, - 416, 419, 5, 229, 0, 0, 417, 419, 3, 24, 12, 0, 418, 416, 1, 0, 0, 0, 418, - 417, 1, 0, 0, 0, 419, 427, 1, 0, 0, 0, 420, 423, 5, 7, 0, 0, 421, 424, - 5, 229, 0, 0, 422, 424, 3, 24, 12, 0, 423, 421, 1, 0, 0, 0, 423, 422, 1, - 0, 0, 0, 424, 426, 1, 0, 0, 0, 425, 420, 1, 0, 0, 0, 426, 429, 1, 0, 0, - 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 433, 1, 0, 0, 0, 429, - 427, 1, 0, 0, 0, 430, 433, 5, 256, 0, 0, 431, 433, 5, 258, 0, 0, 432, 414, - 1, 0, 0, 0, 432, 415, 1, 0, 0, 0, 432, 418, 1, 0, 0, 0, 432, 430, 1, 0, - 0, 0, 432, 431, 1, 0, 0, 0, 433, 63, 1, 0, 0, 0, 434, 435, 5, 10, 0, 0, - 435, 65, 1, 0, 0, 0, 436, 437, 5, 90, 0, 0, 437, 67, 1, 0, 0, 0, 438, 440, - 5, 1, 0, 0, 439, 438, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, - 0, 0, 441, 443, 3, 64, 32, 0, 442, 441, 1, 0, 0, 0, 442, 443, 1, 0, 0, - 0, 443, 445, 1, 0, 0, 0, 444, 446, 3, 66, 33, 0, 445, 444, 1, 0, 0, 0, - 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 3, 74, 37, 0, 448, - 450, 5, 1, 0, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 464, - 1, 0, 0, 0, 451, 453, 5, 8, 0, 0, 452, 454, 5, 1, 0, 0, 453, 452, 1, 0, - 0, 0, 453, 454, 1, 0, 0, 0, 454, 456, 1, 0, 0, 0, 455, 457, 3, 64, 32, - 0, 456, 455, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, - 460, 3, 74, 37, 0, 459, 461, 5, 1, 0, 0, 460, 459, 1, 0, 0, 0, 460, 461, - 1, 0, 0, 0, 461, 463, 1, 0, 0, 0, 462, 451, 1, 0, 0, 0, 463, 466, 1, 0, - 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 69, 1, 0, 0, 0, - 466, 464, 1, 0, 0, 0, 467, 469, 5, 1, 0, 0, 468, 467, 1, 0, 0, 0, 468, - 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 472, 3, 64, 32, 0, 471, 470, - 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 1, 0, 0, 0, 473, 475, 3, 66, - 33, 0, 474, 473, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, - 476, 478, 3, 74, 37, 0, 477, 479, 5, 1, 0, 0, 478, 477, 1, 0, 0, 0, 478, - 479, 1, 0, 0, 0, 479, 493, 1, 0, 0, 0, 480, 482, 5, 7, 0, 0, 481, 483, - 5, 1, 0, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 485, 1, 0, - 0, 0, 484, 486, 3, 64, 32, 0, 485, 484, 1, 0, 0, 0, 485, 486, 1, 0, 0, - 0, 486, 487, 1, 0, 0, 0, 487, 489, 3, 74, 37, 0, 488, 490, 5, 1, 0, 0, - 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 492, 1, 0, 0, 0, 491, - 480, 1, 0, 0, 0, 492, 495, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 493, 494, - 1, 0, 0, 0, 494, 71, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 496, 497, 3, 74, - 37, 0, 497, 73, 1, 0, 0, 0, 498, 505, 3, 76, 38, 0, 499, 502, 3, 78, 39, - 0, 500, 501, 5, 4, 0, 0, 501, 503, 3, 114, 57, 0, 502, 500, 1, 0, 0, 0, - 502, 503, 1, 0, 0, 0, 503, 505, 1, 0, 0, 0, 504, 498, 1, 0, 0, 0, 504, - 499, 1, 0, 0, 0, 505, 75, 1, 0, 0, 0, 506, 507, 7, 3, 0, 0, 507, 77, 1, - 0, 0, 0, 508, 509, 7, 4, 0, 0, 509, 79, 1, 0, 0, 0, 510, 511, 5, 1, 0, - 0, 511, 516, 3, 82, 41, 0, 512, 513, 5, 7, 0, 0, 513, 515, 3, 82, 41, 0, - 514, 512, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 516, - 517, 1, 0, 0, 0, 517, 519, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 519, 520, - 5, 1, 0, 0, 520, 81, 1, 0, 0, 0, 521, 522, 3, 92, 46, 0, 522, 524, 5, 4, - 0, 0, 523, 525, 5, 10, 0, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, - 525, 527, 1, 0, 0, 0, 526, 528, 5, 3, 0, 0, 527, 526, 1, 0, 0, 0, 527, - 528, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 3, 104, 52, 0, 530, 537, - 1, 0, 0, 0, 531, 532, 3, 92, 46, 0, 532, 533, 5, 4, 0, 0, 533, 534, 3, - 104, 52, 0, 534, 537, 1, 0, 0, 0, 535, 537, 3, 84, 42, 0, 536, 521, 1, - 0, 0, 0, 536, 531, 1, 0, 0, 0, 536, 535, 1, 0, 0, 0, 537, 83, 1, 0, 0, - 0, 538, 545, 3, 86, 43, 0, 539, 545, 3, 88, 44, 0, 540, 545, 3, 90, 45, - 0, 541, 542, 5, 84, 0, 0, 542, 543, 5, 4, 0, 0, 543, 545, 3, 112, 56, 0, - 544, 538, 1, 0, 0, 0, 544, 539, 1, 0, 0, 0, 544, 540, 1, 0, 0, 0, 544, - 541, 1, 0, 0, 0, 545, 85, 1, 0, 0, 0, 546, 547, 7, 5, 0, 0, 547, 87, 1, - 0, 0, 0, 548, 549, 7, 6, 0, 0, 549, 89, 1, 0, 0, 0, 550, 551, 5, 33, 0, - 0, 551, 91, 1, 0, 0, 0, 552, 558, 3, 94, 47, 0, 553, 558, 3, 96, 48, 0, - 554, 558, 3, 98, 49, 0, 555, 558, 3, 102, 51, 0, 556, 558, 3, 100, 50, - 0, 557, 552, 1, 0, 0, 0, 557, 553, 1, 0, 0, 0, 557, 554, 1, 0, 0, 0, 557, - 555, 1, 0, 0, 0, 557, 556, 1, 0, 0, 0, 558, 93, 1, 0, 0, 0, 559, 568, 5, - 61, 0, 0, 560, 568, 5, 50, 0, 0, 561, 568, 5, 54, 0, 0, 562, 568, 5, 55, - 0, 0, 563, 568, 5, 65, 0, 0, 564, 568, 5, 76, 0, 0, 565, 568, 5, 81, 0, - 0, 566, 568, 5, 82, 0, 0, 567, 559, 1, 0, 0, 0, 567, 560, 1, 0, 0, 0, 567, - 561, 1, 0, 0, 0, 567, 562, 1, 0, 0, 0, 567, 563, 1, 0, 0, 0, 567, 564, - 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 567, 566, 1, 0, 0, 0, 568, 95, 1, 0, - 0, 0, 569, 570, 7, 7, 0, 0, 570, 97, 1, 0, 0, 0, 571, 572, 7, 8, 0, 0, - 572, 99, 1, 0, 0, 0, 573, 574, 7, 9, 0, 0, 574, 101, 1, 0, 0, 0, 575, 576, - 7, 10, 0, 0, 576, 103, 1, 0, 0, 0, 577, 587, 3, 106, 53, 0, 578, 579, 5, - 2, 0, 0, 579, 580, 3, 106, 53, 0, 580, 581, 5, 2, 0, 0, 581, 587, 1, 0, - 0, 0, 582, 583, 5, 2, 0, 0, 583, 584, 3, 108, 54, 0, 584, 585, 5, 2, 0, - 0, 585, 587, 1, 0, 0, 0, 586, 577, 1, 0, 0, 0, 586, 578, 1, 0, 0, 0, 586, - 582, 1, 0, 0, 0, 587, 105, 1, 0, 0, 0, 588, 600, 5, 229, 0, 0, 589, 600, - 3, 114, 57, 0, 590, 600, 3, 116, 58, 0, 591, 592, 3, 110, 55, 0, 592, 593, - 3, 122, 61, 0, 593, 594, 3, 50, 25, 0, 594, 600, 1, 0, 0, 0, 595, 600, - 5, 227, 0, 0, 596, 600, 5, 77, 0, 0, 597, 600, 5, 233, 0, 0, 598, 600, - 5, 243, 0, 0, 599, 588, 1, 0, 0, 0, 599, 589, 1, 0, 0, 0, 599, 590, 1, - 0, 0, 0, 599, 591, 1, 0, 0, 0, 599, 595, 1, 0, 0, 0, 599, 596, 1, 0, 0, - 0, 599, 597, 1, 0, 0, 0, 599, 598, 1, 0, 0, 0, 600, 107, 1, 0, 0, 0, 601, - 602, 5, 248, 0, 0, 602, 109, 1, 0, 0, 0, 603, 604, 7, 11, 0, 0, 604, 111, - 1, 0, 0, 0, 605, 606, 5, 85, 0, 0, 606, 113, 1, 0, 0, 0, 607, 611, 1, 0, - 0, 0, 608, 611, 5, 245, 0, 0, 609, 611, 5, 252, 0, 0, 610, 607, 1, 0, 0, - 0, 610, 608, 1, 0, 0, 0, 610, 609, 1, 0, 0, 0, 611, 115, 1, 0, 0, 0, 612, - 613, 3, 118, 59, 0, 613, 614, 5, 238, 0, 0, 614, 615, 3, 120, 60, 0, 615, - 616, 3, 122, 61, 0, 616, 617, 3, 124, 62, 0, 617, 117, 1, 0, 0, 0, 618, - 619, 5, 237, 0, 0, 619, 119, 1, 0, 0, 0, 620, 624, 5, 239, 0, 0, 621, 622, - 5, 240, 0, 0, 622, 624, 5, 236, 0, 0, 623, 620, 1, 0, 0, 0, 623, 621, 1, - 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, - 0, 626, 121, 1, 0, 0, 0, 627, 628, 7, 12, 0, 0, 628, 123, 1, 0, 0, 0, 629, - 630, 5, 241, 0, 0, 630, 125, 1, 0, 0, 0, 68, 129, 135, 141, 144, 149, 152, - 159, 162, 168, 171, 177, 185, 192, 201, 210, 221, 228, 232, 266, 272, 286, - 298, 303, 317, 330, 357, 366, 377, 383, 385, 390, 396, 401, 410, 418, 423, - 427, 432, 439, 442, 445, 449, 453, 456, 460, 464, 468, 471, 474, 478, 482, - 485, 489, 493, 502, 504, 516, 524, 527, 536, 544, 557, 567, 586, 599, 610, - 623, 625, + 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 271, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, + 3, 5, 277, 8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, + 1, 10, 1, 11, 1, 11, 3, 11, 291, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 303, 8, 15, 1, 16, 1, 16, + 1, 17, 1, 17, 1, 17, 3, 17, 310, 8, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, + 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 322, 8, 21, 10, 21, 12, 21, + 325, 9, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, + 24, 1, 24, 3, 24, 337, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 364, + 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 372, 8, 27, 1, + 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 382, 8, 27, + 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 388, 8, 27, 3, 27, 390, 8, 27, 1, 28, + 1, 28, 1, 28, 3, 28, 395, 8, 28, 1, 29, 1, 29, 1, 30, 1, 30, 3, 30, 401, + 8, 30, 1, 30, 1, 30, 1, 30, 3, 30, 406, 8, 30, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 30, 3, 30, 415, 8, 30, 1, 31, 1, 31, 1, 32, 1, 32, + 1, 32, 1, 32, 3, 32, 423, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 428, 8, 32, + 5, 32, 430, 8, 32, 10, 32, 12, 32, 433, 9, 32, 1, 32, 1, 32, 3, 32, 437, + 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 444, 8, 35, 1, 35, 3, + 35, 447, 8, 35, 1, 35, 3, 35, 450, 8, 35, 1, 35, 1, 35, 3, 35, 454, 8, + 35, 1, 35, 1, 35, 3, 35, 458, 8, 35, 1, 35, 3, 35, 461, 8, 35, 1, 35, 1, + 35, 3, 35, 465, 8, 35, 5, 35, 467, 8, 35, 10, 35, 12, 35, 470, 9, 35, 1, + 36, 3, 36, 473, 8, 36, 1, 36, 3, 36, 476, 8, 36, 1, 36, 3, 36, 479, 8, + 36, 1, 36, 1, 36, 3, 36, 483, 8, 36, 1, 36, 1, 36, 3, 36, 487, 8, 36, 1, + 36, 3, 36, 490, 8, 36, 1, 36, 1, 36, 3, 36, 494, 8, 36, 5, 36, 496, 8, + 36, 10, 36, 12, 36, 499, 9, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, + 3, 38, 507, 8, 38, 3, 38, 509, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, + 1, 41, 1, 41, 1, 41, 5, 41, 519, 8, 41, 10, 41, 12, 41, 522, 9, 41, 1, + 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 529, 8, 42, 1, 42, 3, 42, 532, 8, + 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 541, 8, 42, + 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 549, 8, 43, 1, 44, 1, + 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, + 562, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, + 48, 572, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, + 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 591, + 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 3, 54, 604, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, + 1, 58, 1, 58, 1, 58, 3, 58, 615, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, + 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 4, 61, 628, 8, 61, 11, 61, + 12, 61, 629, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 0, 0, 65, + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, + 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, + 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, + 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 0, 15, 8, 0, 133, + 141, 152, 169, 171, 177, 180, 180, 182, 182, 184, 185, 187, 187, 211, 218, + 3, 0, 227, 227, 235, 235, 243, 243, 3, 0, 142, 151, 195, 199, 229, 229, + 1, 0, 91, 127, 1, 0, 87, 88, 2, 0, 86, 86, 89, 89, 5, 0, 28, 28, 31, 31, + 45, 45, 47, 47, 59, 60, 5, 0, 30, 30, 32, 32, 53, 53, 56, 58, 68, 68, 1, + 0, 63, 64, 8, 0, 29, 29, 34, 34, 46, 46, 48, 49, 51, 52, 62, 62, 66, 67, + 69, 75, 2, 0, 80, 80, 83, 83, 1, 0, 78, 79, 1, 0, 35, 44, 2, 0, 3, 3, 5, + 6, 1, 0, 228, 229, 706, 0, 133, 1, 0, 0, 0, 2, 236, 1, 0, 0, 0, 4, 238, + 1, 0, 0, 0, 6, 240, 1, 0, 0, 0, 8, 270, 1, 0, 0, 0, 10, 276, 1, 0, 0, 0, + 12, 278, 1, 0, 0, 0, 14, 280, 1, 0, 0, 0, 16, 282, 1, 0, 0, 0, 18, 284, + 1, 0, 0, 0, 20, 286, 1, 0, 0, 0, 22, 290, 1, 0, 0, 0, 24, 292, 1, 0, 0, + 0, 26, 296, 1, 0, 0, 0, 28, 298, 1, 0, 0, 0, 30, 302, 1, 0, 0, 0, 32, 304, + 1, 0, 0, 0, 34, 309, 1, 0, 0, 0, 36, 311, 1, 0, 0, 0, 38, 313, 1, 0, 0, + 0, 40, 315, 1, 0, 0, 0, 42, 317, 1, 0, 0, 0, 44, 328, 1, 0, 0, 0, 46, 332, + 1, 0, 0, 0, 48, 336, 1, 0, 0, 0, 50, 338, 1, 0, 0, 0, 52, 363, 1, 0, 0, + 0, 54, 389, 1, 0, 0, 0, 56, 394, 1, 0, 0, 0, 58, 396, 1, 0, 0, 0, 60, 414, + 1, 0, 0, 0, 62, 416, 1, 0, 0, 0, 64, 436, 1, 0, 0, 0, 66, 438, 1, 0, 0, + 0, 68, 440, 1, 0, 0, 0, 70, 443, 1, 0, 0, 0, 72, 472, 1, 0, 0, 0, 74, 500, + 1, 0, 0, 0, 76, 508, 1, 0, 0, 0, 78, 510, 1, 0, 0, 0, 80, 512, 1, 0, 0, + 0, 82, 514, 1, 0, 0, 0, 84, 540, 1, 0, 0, 0, 86, 548, 1, 0, 0, 0, 88, 550, + 1, 0, 0, 0, 90, 552, 1, 0, 0, 0, 92, 554, 1, 0, 0, 0, 94, 561, 1, 0, 0, + 0, 96, 571, 1, 0, 0, 0, 98, 573, 1, 0, 0, 0, 100, 575, 1, 0, 0, 0, 102, + 577, 1, 0, 0, 0, 104, 579, 1, 0, 0, 0, 106, 590, 1, 0, 0, 0, 108, 603, + 1, 0, 0, 0, 110, 605, 1, 0, 0, 0, 112, 607, 1, 0, 0, 0, 114, 609, 1, 0, + 0, 0, 116, 614, 1, 0, 0, 0, 118, 616, 1, 0, 0, 0, 120, 622, 1, 0, 0, 0, + 122, 627, 1, 0, 0, 0, 124, 631, 1, 0, 0, 0, 126, 633, 1, 0, 0, 0, 128, + 635, 1, 0, 0, 0, 130, 132, 3, 2, 1, 0, 131, 130, 1, 0, 0, 0, 132, 135, + 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 136, 1, 0, + 0, 0, 135, 133, 1, 0, 0, 0, 136, 137, 5, 0, 0, 1, 137, 1, 1, 0, 0, 0, 138, + 140, 3, 4, 2, 0, 139, 138, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 141, + 1, 0, 0, 0, 141, 142, 3, 6, 3, 0, 142, 143, 3, 70, 35, 0, 143, 145, 3, + 60, 30, 0, 144, 146, 3, 82, 41, 0, 145, 144, 1, 0, 0, 0, 145, 146, 1, 0, + 0, 0, 146, 237, 1, 0, 0, 0, 147, 149, 3, 4, 2, 0, 148, 147, 1, 0, 0, 0, + 148, 149, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 151, 3, 16, 8, 0, 151, + 153, 3, 18, 9, 0, 152, 154, 3, 82, 41, 0, 153, 152, 1, 0, 0, 0, 153, 154, + 1, 0, 0, 0, 154, 237, 1, 0, 0, 0, 155, 157, 3, 4, 2, 0, 156, 155, 1, 0, + 0, 0, 156, 157, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 159, 3, 16, 8, 0, + 159, 160, 5, 1, 0, 0, 160, 161, 3, 18, 9, 0, 161, 163, 5, 1, 0, 0, 162, + 164, 3, 82, 41, 0, 163, 162, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 237, + 1, 0, 0, 0, 165, 167, 3, 4, 2, 0, 166, 165, 1, 0, 0, 0, 166, 167, 1, 0, + 0, 0, 167, 168, 1, 0, 0, 0, 168, 170, 3, 20, 10, 0, 169, 171, 3, 22, 11, + 0, 170, 169, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, + 173, 1, 0, 0, 0, 173, 237, 1, 0, 0, 0, 174, 176, 3, 4, 2, 0, 175, 174, + 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 178, 3, 30, + 15, 0, 178, 179, 3, 32, 16, 0, 179, 237, 1, 0, 0, 0, 180, 182, 3, 4, 2, + 0, 181, 180, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, + 184, 3, 30, 15, 0, 184, 185, 5, 1, 0, 0, 185, 186, 3, 32, 16, 0, 186, 187, + 5, 1, 0, 0, 187, 237, 1, 0, 0, 0, 188, 190, 3, 4, 2, 0, 189, 188, 1, 0, + 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 3, 34, 17, + 0, 192, 193, 3, 56, 28, 0, 193, 194, 3, 72, 36, 0, 194, 237, 1, 0, 0, 0, + 195, 197, 3, 4, 2, 0, 196, 195, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, + 198, 1, 0, 0, 0, 198, 199, 3, 34, 17, 0, 199, 200, 5, 1, 0, 0, 200, 201, + 3, 56, 28, 0, 201, 202, 5, 1, 0, 0, 202, 203, 3, 72, 36, 0, 203, 237, 1, + 0, 0, 0, 204, 206, 3, 4, 2, 0, 205, 204, 1, 0, 0, 0, 205, 206, 1, 0, 0, + 0, 206, 207, 1, 0, 0, 0, 207, 208, 3, 34, 17, 0, 208, 209, 3, 56, 28, 0, + 209, 210, 3, 72, 36, 0, 210, 211, 5, 8, 0, 0, 211, 212, 3, 74, 37, 0, 212, + 237, 1, 0, 0, 0, 213, 215, 3, 4, 2, 0, 214, 213, 1, 0, 0, 0, 214, 215, + 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 3, 34, 17, 0, 217, 218, 5, + 1, 0, 0, 218, 219, 3, 56, 28, 0, 219, 220, 5, 1, 0, 0, 220, 221, 3, 72, + 36, 0, 221, 222, 5, 8, 0, 0, 222, 223, 3, 74, 37, 0, 223, 237, 1, 0, 0, + 0, 224, 226, 3, 4, 2, 0, 225, 224, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, + 227, 1, 0, 0, 0, 227, 228, 3, 36, 18, 0, 228, 229, 3, 38, 19, 0, 229, 230, + 3, 82, 41, 0, 230, 237, 1, 0, 0, 0, 231, 233, 3, 4, 2, 0, 232, 231, 1, + 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 237, 3, 8, 4, + 0, 235, 237, 3, 4, 2, 0, 236, 139, 1, 0, 0, 0, 236, 148, 1, 0, 0, 0, 236, + 156, 1, 0, 0, 0, 236, 166, 1, 0, 0, 0, 236, 175, 1, 0, 0, 0, 236, 181, + 1, 0, 0, 0, 236, 189, 1, 0, 0, 0, 236, 196, 1, 0, 0, 0, 236, 205, 1, 0, + 0, 0, 236, 214, 1, 0, 0, 0, 236, 225, 1, 0, 0, 0, 236, 232, 1, 0, 0, 0, + 236, 235, 1, 0, 0, 0, 237, 3, 1, 0, 0, 0, 238, 239, 5, 12, 0, 0, 239, 5, + 1, 0, 0, 0, 240, 241, 5, 219, 0, 0, 241, 7, 1, 0, 0, 0, 242, 243, 3, 50, + 25, 0, 243, 244, 3, 52, 26, 0, 244, 271, 1, 0, 0, 0, 245, 246, 3, 50, 25, + 0, 246, 247, 5, 1, 0, 0, 247, 248, 3, 52, 26, 0, 248, 249, 5, 1, 0, 0, + 249, 271, 1, 0, 0, 0, 250, 251, 3, 48, 24, 0, 251, 252, 3, 82, 41, 0, 252, + 271, 1, 0, 0, 0, 253, 254, 3, 10, 5, 0, 254, 255, 5, 1, 0, 0, 255, 256, + 3, 52, 26, 0, 256, 257, 5, 1, 0, 0, 257, 271, 1, 0, 0, 0, 258, 259, 3, + 12, 6, 0, 259, 260, 5, 1, 0, 0, 260, 261, 3, 52, 26, 0, 261, 262, 5, 1, + 0, 0, 262, 271, 1, 0, 0, 0, 263, 264, 3, 14, 7, 0, 264, 265, 3, 52, 26, + 0, 265, 271, 1, 0, 0, 0, 266, 267, 3, 40, 20, 0, 267, 268, 3, 52, 26, 0, + 268, 269, 3, 42, 21, 0, 269, 271, 1, 0, 0, 0, 270, 242, 1, 0, 0, 0, 270, + 245, 1, 0, 0, 0, 270, 250, 1, 0, 0, 0, 270, 253, 1, 0, 0, 0, 270, 258, + 1, 0, 0, 0, 270, 263, 1, 0, 0, 0, 270, 266, 1, 0, 0, 0, 271, 9, 1, 0, 0, + 0, 272, 277, 1, 0, 0, 0, 273, 277, 5, 129, 0, 0, 274, 277, 5, 130, 0, 0, + 275, 277, 5, 131, 0, 0, 276, 272, 1, 0, 0, 0, 276, 273, 1, 0, 0, 0, 276, + 274, 1, 0, 0, 0, 276, 275, 1, 0, 0, 0, 277, 11, 1, 0, 0, 0, 278, 279, 5, + 181, 0, 0, 279, 13, 1, 0, 0, 0, 280, 281, 7, 0, 0, 0, 281, 15, 1, 0, 0, + 0, 282, 283, 5, 220, 0, 0, 283, 17, 1, 0, 0, 0, 284, 285, 5, 9, 0, 0, 285, + 19, 1, 0, 0, 0, 286, 287, 5, 188, 0, 0, 287, 21, 1, 0, 0, 0, 288, 291, + 5, 229, 0, 0, 289, 291, 3, 24, 12, 0, 290, 288, 1, 0, 0, 0, 290, 289, 1, + 0, 0, 0, 291, 23, 1, 0, 0, 0, 292, 293, 3, 26, 13, 0, 293, 294, 5, 15, + 0, 0, 294, 295, 3, 28, 14, 0, 295, 25, 1, 0, 0, 0, 296, 297, 5, 229, 0, + 0, 297, 27, 1, 0, 0, 0, 298, 299, 5, 229, 0, 0, 299, 29, 1, 0, 0, 0, 300, + 303, 5, 189, 0, 0, 301, 303, 5, 190, 0, 0, 302, 300, 1, 0, 0, 0, 302, 301, + 1, 0, 0, 0, 303, 31, 1, 0, 0, 0, 304, 305, 7, 1, 0, 0, 305, 33, 1, 0, 0, + 0, 306, 310, 5, 193, 0, 0, 307, 310, 5, 192, 0, 0, 308, 310, 5, 191, 0, + 0, 309, 306, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 308, 1, 0, 0, 0, 310, + 35, 1, 0, 0, 0, 311, 312, 5, 194, 0, 0, 312, 37, 1, 0, 0, 0, 313, 314, + 5, 229, 0, 0, 314, 39, 1, 0, 0, 0, 315, 316, 5, 132, 0, 0, 316, 41, 1, + 0, 0, 0, 317, 318, 5, 1, 0, 0, 318, 323, 3, 44, 22, 0, 319, 320, 5, 7, + 0, 0, 320, 322, 3, 44, 22, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, + 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, + 323, 1, 0, 0, 0, 326, 327, 5, 1, 0, 0, 327, 43, 1, 0, 0, 0, 328, 329, 3, + 46, 23, 0, 329, 330, 5, 4, 0, 0, 330, 331, 3, 52, 26, 0, 331, 45, 1, 0, + 0, 0, 332, 333, 5, 221, 0, 0, 333, 47, 1, 0, 0, 0, 334, 337, 5, 178, 0, + 0, 335, 337, 5, 179, 0, 0, 336, 334, 1, 0, 0, 0, 336, 335, 1, 0, 0, 0, + 337, 49, 1, 0, 0, 0, 338, 339, 7, 2, 0, 0, 339, 51, 1, 0, 0, 0, 340, 364, + 5, 229, 0, 0, 341, 364, 3, 24, 12, 0, 342, 364, 5, 204, 0, 0, 343, 364, + 5, 203, 0, 0, 344, 364, 5, 209, 0, 0, 345, 364, 5, 205, 0, 0, 346, 364, + 5, 202, 0, 0, 347, 364, 5, 208, 0, 0, 348, 364, 5, 225, 0, 0, 349, 364, + 5, 200, 0, 0, 350, 364, 5, 210, 0, 0, 351, 364, 5, 201, 0, 0, 352, 364, + 5, 206, 0, 0, 353, 364, 5, 207, 0, 0, 354, 355, 5, 9, 0, 0, 355, 364, 5, + 229, 0, 0, 356, 364, 5, 9, 0, 0, 357, 364, 5, 235, 0, 0, 358, 364, 5, 227, + 0, 0, 359, 364, 5, 243, 0, 0, 360, 364, 5, 247, 0, 0, 361, 364, 5, 128, + 0, 0, 362, 364, 3, 54, 27, 0, 363, 340, 1, 0, 0, 0, 363, 341, 1, 0, 0, + 0, 363, 342, 1, 0, 0, 0, 363, 343, 1, 0, 0, 0, 363, 344, 1, 0, 0, 0, 363, + 345, 1, 0, 0, 0, 363, 346, 1, 0, 0, 0, 363, 347, 1, 0, 0, 0, 363, 348, + 1, 0, 0, 0, 363, 349, 1, 0, 0, 0, 363, 350, 1, 0, 0, 0, 363, 351, 1, 0, + 0, 0, 363, 352, 1, 0, 0, 0, 363, 353, 1, 0, 0, 0, 363, 354, 1, 0, 0, 0, + 363, 356, 1, 0, 0, 0, 363, 357, 1, 0, 0, 0, 363, 358, 1, 0, 0, 0, 363, + 359, 1, 0, 0, 0, 363, 360, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, + 1, 0, 0, 0, 364, 53, 1, 0, 0, 0, 365, 372, 3, 128, 64, 0, 366, 367, 5, + 2, 0, 0, 367, 368, 3, 110, 55, 0, 368, 369, 5, 2, 0, 0, 369, 372, 1, 0, + 0, 0, 370, 372, 5, 227, 0, 0, 371, 365, 1, 0, 0, 0, 371, 366, 1, 0, 0, + 0, 371, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 374, 5, 19, 0, 0, 374, + 390, 3, 78, 39, 0, 375, 382, 3, 128, 64, 0, 376, 377, 5, 2, 0, 0, 377, + 378, 3, 110, 55, 0, 378, 379, 5, 2, 0, 0, 379, 382, 1, 0, 0, 0, 380, 382, + 5, 227, 0, 0, 381, 375, 1, 0, 0, 0, 381, 376, 1, 0, 0, 0, 381, 380, 1, + 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 384, 5, 19, 0, 0, 384, 387, 3, 80, + 40, 0, 385, 386, 5, 4, 0, 0, 386, 388, 3, 116, 58, 0, 387, 385, 1, 0, 0, + 0, 387, 388, 1, 0, 0, 0, 388, 390, 1, 0, 0, 0, 389, 371, 1, 0, 0, 0, 389, + 381, 1, 0, 0, 0, 390, 55, 1, 0, 0, 0, 391, 395, 5, 229, 0, 0, 392, 395, + 3, 24, 12, 0, 393, 395, 5, 235, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, 1, + 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 57, 1, 0, 0, 0, 396, 397, 5, 10, 0, + 0, 397, 59, 1, 0, 0, 0, 398, 400, 5, 1, 0, 0, 399, 401, 3, 58, 29, 0, 400, + 399, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, + 5, 257, 0, 0, 403, 405, 3, 62, 31, 0, 404, 406, 3, 64, 32, 0, 405, 404, + 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 5, 1, + 0, 0, 408, 415, 1, 0, 0, 0, 409, 410, 5, 1, 0, 0, 410, 411, 3, 64, 32, + 0, 411, 412, 5, 1, 0, 0, 412, 415, 1, 0, 0, 0, 413, 415, 3, 64, 32, 0, + 414, 398, 1, 0, 0, 0, 414, 409, 1, 0, 0, 0, 414, 413, 1, 0, 0, 0, 415, + 61, 1, 0, 0, 0, 416, 417, 7, 3, 0, 0, 417, 63, 1, 0, 0, 0, 418, 437, 3, + 78, 39, 0, 419, 437, 5, 235, 0, 0, 420, 423, 5, 229, 0, 0, 421, 423, 3, + 24, 12, 0, 422, 420, 1, 0, 0, 0, 422, 421, 1, 0, 0, 0, 423, 431, 1, 0, + 0, 0, 424, 427, 5, 7, 0, 0, 425, 428, 5, 229, 0, 0, 426, 428, 3, 24, 12, + 0, 427, 425, 1, 0, 0, 0, 427, 426, 1, 0, 0, 0, 428, 430, 1, 0, 0, 0, 429, + 424, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, + 1, 0, 0, 0, 432, 437, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 437, 5, 256, + 0, 0, 435, 437, 5, 258, 0, 0, 436, 418, 1, 0, 0, 0, 436, 419, 1, 0, 0, + 0, 436, 422, 1, 0, 0, 0, 436, 434, 1, 0, 0, 0, 436, 435, 1, 0, 0, 0, 437, + 65, 1, 0, 0, 0, 438, 439, 5, 10, 0, 0, 439, 67, 1, 0, 0, 0, 440, 441, 5, + 90, 0, 0, 441, 69, 1, 0, 0, 0, 442, 444, 5, 1, 0, 0, 443, 442, 1, 0, 0, + 0, 443, 444, 1, 0, 0, 0, 444, 446, 1, 0, 0, 0, 445, 447, 3, 66, 33, 0, + 446, 445, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 1, 0, 0, 0, 448, + 450, 3, 68, 34, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, + 1, 0, 0, 0, 451, 453, 3, 76, 38, 0, 452, 454, 5, 1, 0, 0, 453, 452, 1, + 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 468, 1, 0, 0, 0, 455, 457, 5, 8, 0, + 0, 456, 458, 5, 1, 0, 0, 457, 456, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, + 460, 1, 0, 0, 0, 459, 461, 3, 66, 33, 0, 460, 459, 1, 0, 0, 0, 460, 461, + 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 464, 3, 76, 38, 0, 463, 465, 5, + 1, 0, 0, 464, 463, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 1, 0, 0, + 0, 466, 455, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468, + 469, 1, 0, 0, 0, 469, 71, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 473, 5, + 1, 0, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 475, 1, 0, 0, + 0, 474, 476, 3, 66, 33, 0, 475, 474, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, + 476, 478, 1, 0, 0, 0, 477, 479, 3, 68, 34, 0, 478, 477, 1, 0, 0, 0, 478, + 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 3, 76, 38, 0, 481, 483, + 5, 1, 0, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 497, 1, 0, + 0, 0, 484, 486, 5, 7, 0, 0, 485, 487, 5, 1, 0, 0, 486, 485, 1, 0, 0, 0, + 486, 487, 1, 0, 0, 0, 487, 489, 1, 0, 0, 0, 488, 490, 3, 66, 33, 0, 489, + 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 493, + 3, 76, 38, 0, 492, 494, 5, 1, 0, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, + 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 484, 1, 0, 0, 0, 496, 499, 1, 0, 0, + 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 73, 1, 0, 0, 0, 499, + 497, 1, 0, 0, 0, 500, 501, 3, 76, 38, 0, 501, 75, 1, 0, 0, 0, 502, 509, + 3, 78, 39, 0, 503, 506, 3, 80, 40, 0, 504, 505, 5, 4, 0, 0, 505, 507, 3, + 116, 58, 0, 506, 504, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 509, 1, 0, + 0, 0, 508, 502, 1, 0, 0, 0, 508, 503, 1, 0, 0, 0, 509, 77, 1, 0, 0, 0, + 510, 511, 7, 4, 0, 0, 511, 79, 1, 0, 0, 0, 512, 513, 7, 5, 0, 0, 513, 81, + 1, 0, 0, 0, 514, 515, 5, 1, 0, 0, 515, 520, 3, 84, 42, 0, 516, 517, 5, + 7, 0, 0, 517, 519, 3, 84, 42, 0, 518, 516, 1, 0, 0, 0, 519, 522, 1, 0, + 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 523, 1, 0, 0, 0, + 522, 520, 1, 0, 0, 0, 523, 524, 5, 1, 0, 0, 524, 83, 1, 0, 0, 0, 525, 526, + 3, 94, 47, 0, 526, 528, 5, 4, 0, 0, 527, 529, 5, 10, 0, 0, 528, 527, 1, + 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 531, 1, 0, 0, 0, 530, 532, 5, 3, 0, + 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, + 534, 3, 106, 53, 0, 534, 541, 1, 0, 0, 0, 535, 536, 3, 94, 47, 0, 536, + 537, 5, 4, 0, 0, 537, 538, 3, 106, 53, 0, 538, 541, 1, 0, 0, 0, 539, 541, + 3, 86, 43, 0, 540, 525, 1, 0, 0, 0, 540, 535, 1, 0, 0, 0, 540, 539, 1, + 0, 0, 0, 541, 85, 1, 0, 0, 0, 542, 549, 3, 88, 44, 0, 543, 549, 3, 90, + 45, 0, 544, 549, 3, 92, 46, 0, 545, 546, 5, 84, 0, 0, 546, 547, 5, 4, 0, + 0, 547, 549, 3, 114, 57, 0, 548, 542, 1, 0, 0, 0, 548, 543, 1, 0, 0, 0, + 548, 544, 1, 0, 0, 0, 548, 545, 1, 0, 0, 0, 549, 87, 1, 0, 0, 0, 550, 551, + 7, 6, 0, 0, 551, 89, 1, 0, 0, 0, 552, 553, 7, 7, 0, 0, 553, 91, 1, 0, 0, + 0, 554, 555, 5, 33, 0, 0, 555, 93, 1, 0, 0, 0, 556, 562, 3, 96, 48, 0, + 557, 562, 3, 98, 49, 0, 558, 562, 3, 100, 50, 0, 559, 562, 3, 104, 52, + 0, 560, 562, 3, 102, 51, 0, 561, 556, 1, 0, 0, 0, 561, 557, 1, 0, 0, 0, + 561, 558, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 560, 1, 0, 0, 0, 562, + 95, 1, 0, 0, 0, 563, 572, 5, 61, 0, 0, 564, 572, 5, 50, 0, 0, 565, 572, + 5, 54, 0, 0, 566, 572, 5, 55, 0, 0, 567, 572, 5, 65, 0, 0, 568, 572, 5, + 76, 0, 0, 569, 572, 5, 81, 0, 0, 570, 572, 5, 82, 0, 0, 571, 563, 1, 0, + 0, 0, 571, 564, 1, 0, 0, 0, 571, 565, 1, 0, 0, 0, 571, 566, 1, 0, 0, 0, + 571, 567, 1, 0, 0, 0, 571, 568, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, + 570, 1, 0, 0, 0, 572, 97, 1, 0, 0, 0, 573, 574, 7, 8, 0, 0, 574, 99, 1, + 0, 0, 0, 575, 576, 7, 9, 0, 0, 576, 101, 1, 0, 0, 0, 577, 578, 7, 10, 0, + 0, 578, 103, 1, 0, 0, 0, 579, 580, 7, 11, 0, 0, 580, 105, 1, 0, 0, 0, 581, + 591, 3, 108, 54, 0, 582, 583, 5, 2, 0, 0, 583, 584, 3, 108, 54, 0, 584, + 585, 5, 2, 0, 0, 585, 591, 1, 0, 0, 0, 586, 587, 5, 2, 0, 0, 587, 588, + 3, 110, 55, 0, 588, 589, 5, 2, 0, 0, 589, 591, 1, 0, 0, 0, 590, 581, 1, + 0, 0, 0, 590, 582, 1, 0, 0, 0, 590, 586, 1, 0, 0, 0, 591, 107, 1, 0, 0, + 0, 592, 604, 5, 229, 0, 0, 593, 604, 3, 116, 58, 0, 594, 604, 3, 118, 59, + 0, 595, 596, 3, 112, 56, 0, 596, 597, 3, 124, 62, 0, 597, 598, 3, 52, 26, + 0, 598, 604, 1, 0, 0, 0, 599, 604, 5, 227, 0, 0, 600, 604, 5, 77, 0, 0, + 601, 604, 5, 233, 0, 0, 602, 604, 5, 243, 0, 0, 603, 592, 1, 0, 0, 0, 603, + 593, 1, 0, 0, 0, 603, 594, 1, 0, 0, 0, 603, 595, 1, 0, 0, 0, 603, 599, + 1, 0, 0, 0, 603, 600, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 602, 1, 0, + 0, 0, 604, 109, 1, 0, 0, 0, 605, 606, 5, 248, 0, 0, 606, 111, 1, 0, 0, + 0, 607, 608, 7, 12, 0, 0, 608, 113, 1, 0, 0, 0, 609, 610, 5, 85, 0, 0, + 610, 115, 1, 0, 0, 0, 611, 615, 1, 0, 0, 0, 612, 615, 5, 245, 0, 0, 613, + 615, 5, 252, 0, 0, 614, 611, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 613, + 1, 0, 0, 0, 615, 117, 1, 0, 0, 0, 616, 617, 3, 120, 60, 0, 617, 618, 5, + 238, 0, 0, 618, 619, 3, 122, 61, 0, 619, 620, 3, 124, 62, 0, 620, 621, + 3, 126, 63, 0, 621, 119, 1, 0, 0, 0, 622, 623, 5, 237, 0, 0, 623, 121, + 1, 0, 0, 0, 624, 628, 5, 239, 0, 0, 625, 626, 5, 240, 0, 0, 626, 628, 5, + 236, 0, 0, 627, 624, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 629, 1, 0, + 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 123, 1, 0, 0, 0, + 631, 632, 7, 13, 0, 0, 632, 125, 1, 0, 0, 0, 633, 634, 5, 241, 0, 0, 634, + 127, 1, 0, 0, 0, 635, 636, 7, 14, 0, 0, 636, 129, 1, 0, 0, 0, 68, 133, + 139, 145, 148, 153, 156, 163, 166, 172, 175, 181, 189, 196, 205, 214, 225, + 232, 236, 270, 276, 290, 302, 309, 323, 336, 363, 371, 381, 387, 389, 394, + 400, 405, 414, 422, 427, 431, 436, 443, 446, 449, 453, 457, 460, 464, 468, + 472, 475, 478, 482, 486, 489, 493, 497, 506, 508, 520, 528, 531, 540, 548, + 561, 571, 590, 603, 614, 627, 629, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -799,53 +801,55 @@ const ( SecLangParserRULE_range_start = 13 SecLangParserRULE_range_end = 14 SecLangParserRULE_string_remove_rules = 15 - SecLangParserRULE_update_target_rules = 16 - SecLangParserRULE_update_action_rule = 17 - SecLangParserRULE_id = 18 - SecLangParserRULE_engine_config_sec_cache_transformations = 19 - SecLangParserRULE_option_list = 20 - SecLangParserRULE_option = 21 - SecLangParserRULE_option_name = 22 - SecLangParserRULE_engine_config_action_directive = 23 - SecLangParserRULE_stmt_audit_log = 24 - SecLangParserRULE_values = 25 - SecLangParserRULE_action_ctl_target_value = 26 - SecLangParserRULE_update_target_rules_values = 27 - SecLangParserRULE_operator_not = 28 - SecLangParserRULE_operator = 29 - SecLangParserRULE_operator_name = 30 - SecLangParserRULE_operator_value = 31 - SecLangParserRULE_var_not = 32 - SecLangParserRULE_var_count = 33 - SecLangParserRULE_variables = 34 - SecLangParserRULE_update_variables = 35 - SecLangParserRULE_new_target = 36 - SecLangParserRULE_var_stmt = 37 - SecLangParserRULE_variable_enum = 38 - SecLangParserRULE_collection_enum = 39 - SecLangParserRULE_actions = 40 - SecLangParserRULE_action = 41 - SecLangParserRULE_action_only = 42 - SecLangParserRULE_disruptive_action_only = 43 - SecLangParserRULE_non_disruptive_action_only = 44 - SecLangParserRULE_flow_action_only = 45 - SecLangParserRULE_action_with_params = 46 - SecLangParserRULE_metadata_action_with_params = 47 - SecLangParserRULE_disruptive_action_with_params = 48 - SecLangParserRULE_non_disruptive_action_with_params = 49 - SecLangParserRULE_data_action_with_params = 50 - SecLangParserRULE_flow_action_with_params = 51 - SecLangParserRULE_action_value = 52 - SecLangParserRULE_action_value_types = 53 - SecLangParserRULE_string_literal = 54 - SecLangParserRULE_ctl_action = 55 - SecLangParserRULE_transformation_action_value = 56 - SecLangParserRULE_collection_value = 57 - SecLangParserRULE_setvar_action = 58 - SecLangParserRULE_col_name = 59 - SecLangParserRULE_setvar_stmt = 60 - SecLangParserRULE_assignment = 61 - SecLangParserRULE_var_assignment = 62 + SecLangParserRULE_string_remove_rules_values = 16 + SecLangParserRULE_update_target_rules = 17 + SecLangParserRULE_update_action_rule = 18 + SecLangParserRULE_id = 19 + SecLangParserRULE_engine_config_sec_cache_transformations = 20 + SecLangParserRULE_option_list = 21 + SecLangParserRULE_option = 22 + SecLangParserRULE_option_name = 23 + SecLangParserRULE_engine_config_action_directive = 24 + SecLangParserRULE_stmt_audit_log = 25 + SecLangParserRULE_values = 26 + SecLangParserRULE_action_ctl_target_value = 27 + SecLangParserRULE_update_target_rules_values = 28 + SecLangParserRULE_operator_not = 29 + SecLangParserRULE_operator = 30 + SecLangParserRULE_operator_name = 31 + SecLangParserRULE_operator_value = 32 + SecLangParserRULE_var_not = 33 + SecLangParserRULE_var_count = 34 + SecLangParserRULE_variables = 35 + SecLangParserRULE_update_variables = 36 + SecLangParserRULE_new_target = 37 + SecLangParserRULE_var_stmt = 38 + SecLangParserRULE_variable_enum = 39 + SecLangParserRULE_collection_enum = 40 + SecLangParserRULE_actions = 41 + SecLangParserRULE_action = 42 + SecLangParserRULE_action_only = 43 + SecLangParserRULE_disruptive_action_only = 44 + SecLangParserRULE_non_disruptive_action_only = 45 + SecLangParserRULE_flow_action_only = 46 + SecLangParserRULE_action_with_params = 47 + SecLangParserRULE_metadata_action_with_params = 48 + SecLangParserRULE_disruptive_action_with_params = 49 + SecLangParserRULE_non_disruptive_action_with_params = 50 + SecLangParserRULE_data_action_with_params = 51 + SecLangParserRULE_flow_action_with_params = 52 + SecLangParserRULE_action_value = 53 + SecLangParserRULE_action_value_types = 54 + SecLangParserRULE_string_literal = 55 + SecLangParserRULE_ctl_action = 56 + SecLangParserRULE_transformation_action_value = 57 + SecLangParserRULE_collection_value = 58 + SecLangParserRULE_setvar_action = 59 + SecLangParserRULE_col_name = 60 + SecLangParserRULE_setvar_stmt = 61 + SecLangParserRULE_assignment = 62 + SecLangParserRULE_var_assignment = 63 + SecLangParserRULE_ctl_id = 64 ) // IConfigurationContext is an interface to support dynamic dispatch. @@ -967,7 +971,7 @@ func (p *SecLangParser) Configuration() (localctx IConfigurationContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(129) + p.SetState(133) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -976,11 +980,11 @@ func (p *SecLangParser) Configuration() (localctx IConfigurationContext) { for _la == SecLangParserQUOTE || _la == SecLangParserCOMMENT || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-162131785608593409) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&68987650175) != 0) { { - p.SetState(126) + p.SetState(130) p.Stmt() } - p.SetState(131) + p.SetState(135) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -988,7 +992,7 @@ func (p *SecLangParser) Configuration() (localctx IConfigurationContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(132) + p.SetState(136) p.Match(SecLangParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1030,7 +1034,7 @@ type IStmtContext interface { AllRemove_rule_by_id_values() []IRemove_rule_by_id_valuesContext Remove_rule_by_id_values(i int) IRemove_rule_by_id_valuesContext String_remove_rules() IString_remove_rulesContext - Values() IValuesContext + String_remove_rules_values() IString_remove_rules_valuesContext Update_target_rules() IUpdate_target_rulesContext Update_target_rules_values() IUpdate_target_rules_valuesContext Update_variables() IUpdate_variablesContext @@ -1269,10 +1273,10 @@ func (s *StmtContext) String_remove_rules() IString_remove_rulesContext { return t.(IString_remove_rulesContext) } -func (s *StmtContext) Values() IValuesContext { +func (s *StmtContext) String_remove_rules_values() IString_remove_rules_valuesContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IValuesContext); ok { + if _, ok := ctx.(IString_remove_rules_valuesContext); ok { t = ctx.(antlr.RuleContext) break } @@ -1282,7 +1286,7 @@ func (s *StmtContext) Values() IValuesContext { return nil } - return t.(IValuesContext) + return t.(IString_remove_rules_valuesContext) } func (s *StmtContext) Update_target_rules() IUpdate_target_rulesContext { @@ -1428,7 +1432,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { var _alt int - p.SetState(232) + p.SetState(236) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1437,7 +1441,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 17, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) - p.SetState(135) + p.SetState(139) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1446,29 +1450,29 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(134) + p.SetState(138) p.Comment() } } { - p.SetState(137) + p.SetState(141) p.Rules_directive() } { - p.SetState(138) + p.SetState(142) p.Variables() } { - p.SetState(139) + p.SetState(143) p.Operator() } - p.SetState(141) + p.SetState(145) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 2, p.GetParserRuleContext()) == 1 { { - p.SetState(140) + p.SetState(144) p.Actions() } @@ -1478,7 +1482,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { case 2: p.EnterOuterAlt(localctx, 2) - p.SetState(144) + p.SetState(148) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1487,25 +1491,25 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(143) + p.SetState(147) p.Comment() } } { - p.SetState(146) + p.SetState(150) p.Rule_script_directive() } { - p.SetState(147) + p.SetState(151) p.File_path() } - p.SetState(149) + p.SetState(153) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 4, p.GetParserRuleContext()) == 1 { { - p.SetState(148) + p.SetState(152) p.Actions() } @@ -1515,7 +1519,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { case 3: p.EnterOuterAlt(localctx, 3) - p.SetState(152) + p.SetState(156) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1524,17 +1528,17 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(151) + p.SetState(155) p.Comment() } } { - p.SetState(154) + p.SetState(158) p.Rule_script_directive() } { - p.SetState(155) + p.SetState(159) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1542,23 +1546,23 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(156) + p.SetState(160) p.File_path() } { - p.SetState(157) + p.SetState(161) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(159) + p.SetState(163) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(158) + p.SetState(162) p.Actions() } @@ -1568,7 +1572,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { case 4: p.EnterOuterAlt(localctx, 4) - p.SetState(162) + p.SetState(166) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1577,16 +1581,16 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(161) + p.SetState(165) p.Comment() } } { - p.SetState(164) + p.SetState(168) p.Remove_rule_by_id() } - p.SetState(166) + p.SetState(170) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1596,7 +1600,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { switch _alt { case 1: { - p.SetState(165) + p.SetState(169) p.Remove_rule_by_id_values() } @@ -1605,7 +1609,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { goto errorExit } - p.SetState(168) + p.SetState(172) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) if p.HasError() { @@ -1615,7 +1619,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { case 5: p.EnterOuterAlt(localctx, 5) - p.SetState(171) + p.SetState(175) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1624,23 +1628,23 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(170) + p.SetState(174) p.Comment() } } { - p.SetState(173) + p.SetState(177) p.String_remove_rules() } { - p.SetState(174) - p.Values() + p.SetState(178) + p.String_remove_rules_values() } case 6: p.EnterOuterAlt(localctx, 6) - p.SetState(177) + p.SetState(181) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1649,17 +1653,17 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(176) + p.SetState(180) p.Comment() } } { - p.SetState(179) + p.SetState(183) p.String_remove_rules() } { - p.SetState(180) + p.SetState(184) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1667,11 +1671,11 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(181) - p.Values() + p.SetState(185) + p.String_remove_rules_values() } { - p.SetState(182) + p.SetState(186) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1681,7 +1685,7 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { case 7: p.EnterOuterAlt(localctx, 7) - p.SetState(185) + p.SetState(189) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1690,27 +1694,27 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(184) + p.SetState(188) p.Comment() } } { - p.SetState(187) + p.SetState(191) p.Update_target_rules() } { - p.SetState(188) + p.SetState(192) p.Update_target_rules_values() } { - p.SetState(189) + p.SetState(193) p.Update_variables() } case 8: p.EnterOuterAlt(localctx, 8) - p.SetState(192) + p.SetState(196) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1719,17 +1723,17 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(191) + p.SetState(195) p.Comment() } } { - p.SetState(194) + p.SetState(198) p.Update_target_rules() } { - p.SetState(195) + p.SetState(199) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1737,11 +1741,11 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(196) + p.SetState(200) p.Update_target_rules_values() } { - p.SetState(197) + p.SetState(201) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1749,13 +1753,13 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(198) + p.SetState(202) p.Update_variables() } case 9: p.EnterOuterAlt(localctx, 9) - p.SetState(201) + p.SetState(205) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1764,25 +1768,25 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(200) + p.SetState(204) p.Comment() } } { - p.SetState(203) + p.SetState(207) p.Update_target_rules() } { - p.SetState(204) + p.SetState(208) p.Update_target_rules_values() } { - p.SetState(205) + p.SetState(209) p.Update_variables() } { - p.SetState(206) + p.SetState(210) p.Match(SecLangParserPIPE) if p.HasError() { // Recognition error - abort rule @@ -1790,13 +1794,13 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(207) + p.SetState(211) p.New_target() } case 10: p.EnterOuterAlt(localctx, 10) - p.SetState(210) + p.SetState(214) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1805,17 +1809,17 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(209) + p.SetState(213) p.Comment() } } { - p.SetState(212) + p.SetState(216) p.Update_target_rules() } { - p.SetState(213) + p.SetState(217) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1823,11 +1827,11 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(214) + p.SetState(218) p.Update_target_rules_values() } { - p.SetState(215) + p.SetState(219) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -1835,11 +1839,11 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(216) + p.SetState(220) p.Update_variables() } { - p.SetState(217) + p.SetState(221) p.Match(SecLangParserPIPE) if p.HasError() { // Recognition error - abort rule @@ -1847,13 +1851,13 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { } } { - p.SetState(218) + p.SetState(222) p.New_target() } case 11: p.EnterOuterAlt(localctx, 11) - p.SetState(221) + p.SetState(225) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1862,27 +1866,27 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(220) + p.SetState(224) p.Comment() } } { - p.SetState(223) + p.SetState(227) p.Update_action_rule() } { - p.SetState(224) + p.SetState(228) p.Id() } { - p.SetState(225) + p.SetState(229) p.Actions() } case 12: p.EnterOuterAlt(localctx, 12) - p.SetState(228) + p.SetState(232) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1891,20 +1895,20 @@ func (p *SecLangParser) Stmt() (localctx IStmtContext) { if _la == SecLangParserCOMMENT { { - p.SetState(227) + p.SetState(231) p.Comment() } } { - p.SetState(230) + p.SetState(234) p.Engine_config_directive() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(231) + p.SetState(235) p.Comment() } @@ -2000,7 +2004,7 @@ func (p *SecLangParser) Comment() (localctx ICommentContext) { p.EnterRule(localctx, 4, SecLangParserRULE_comment) p.EnterOuterAlt(localctx, 1) { - p.SetState(234) + p.SetState(238) p.Match(SecLangParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -2096,7 +2100,7 @@ func (p *SecLangParser) Rules_directive() (localctx IRules_directiveContext) { p.EnterRule(localctx, 6, SecLangParserRULE_rules_directive) p.EnterOuterAlt(localctx, 1) { - p.SetState(236) + p.SetState(240) p.Match(SecLangParserDIRECTIVE) if p.HasError() { // Recognition error - abort rule @@ -2348,7 +2352,7 @@ func (s *Engine_config_directiveContext) ExitRule(listener antlr.ParseTreeListen func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_directiveContext) { localctx = NewEngine_config_directiveContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, SecLangParserRULE_engine_config_directive) - p.SetState(266) + p.SetState(270) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2358,22 +2362,22 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(238) + p.SetState(242) p.Stmt_audit_log() } { - p.SetState(239) + p.SetState(243) p.Values() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(241) + p.SetState(245) p.Stmt_audit_log() } { - p.SetState(242) + p.SetState(246) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2381,11 +2385,11 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc } } { - p.SetState(243) + p.SetState(247) p.Values() } { - p.SetState(244) + p.SetState(248) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2396,22 +2400,22 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(246) + p.SetState(250) p.Engine_config_action_directive() } { - p.SetState(247) + p.SetState(251) p.Actions() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(249) + p.SetState(253) p.String_engine_config_directive() } { - p.SetState(250) + p.SetState(254) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2419,11 +2423,11 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc } } { - p.SetState(251) + p.SetState(255) p.Values() } { - p.SetState(252) + p.SetState(256) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2434,11 +2438,11 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(254) + p.SetState(258) p.Sec_marker_directive() } { - p.SetState(255) + p.SetState(259) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2446,11 +2450,11 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc } } { - p.SetState(256) + p.SetState(260) p.Values() } { - p.SetState(257) + p.SetState(261) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -2461,26 +2465,26 @@ func (p *SecLangParser) Engine_config_directive() (localctx IEngine_config_direc case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(259) + p.SetState(263) p.Engine_config_directive_with_param() } { - p.SetState(260) + p.SetState(264) p.Values() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(262) + p.SetState(266) p.Engine_config_sec_cache_transformations() } { - p.SetState(263) + p.SetState(267) p.Values() } { - p.SetState(264) + p.SetState(268) p.Option_list() } @@ -2584,7 +2588,7 @@ func (s *String_engine_config_directiveContext) ExitRule(listener antlr.ParseTre func (p *SecLangParser) String_engine_config_directive() (localctx IString_engine_config_directiveContext) { localctx = NewString_engine_config_directiveContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 10, SecLangParserRULE_string_engine_config_directive) - p.SetState(272) + p.SetState(276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2597,7 +2601,7 @@ func (p *SecLangParser) String_engine_config_directive() (localctx IString_engin case SecLangParserCONFIG_COMPONENT_SIG: p.EnterOuterAlt(localctx, 2) { - p.SetState(269) + p.SetState(273) p.Match(SecLangParserCONFIG_COMPONENT_SIG) if p.HasError() { // Recognition error - abort rule @@ -2608,7 +2612,7 @@ func (p *SecLangParser) String_engine_config_directive() (localctx IString_engin case SecLangParserCONFIG_SEC_SERVER_SIG: p.EnterOuterAlt(localctx, 3) { - p.SetState(270) + p.SetState(274) p.Match(SecLangParserCONFIG_SEC_SERVER_SIG) if p.HasError() { // Recognition error - abort rule @@ -2619,7 +2623,7 @@ func (p *SecLangParser) String_engine_config_directive() (localctx IString_engin case SecLangParserCONFIG_SEC_WEB_APP_ID: p.EnterOuterAlt(localctx, 4) { - p.SetState(271) + p.SetState(275) p.Match(SecLangParserCONFIG_SEC_WEB_APP_ID) if p.HasError() { // Recognition error - abort rule @@ -2720,7 +2724,7 @@ func (p *SecLangParser) Sec_marker_directive() (localctx ISec_marker_directiveCo p.EnterRule(localctx, 12, SecLangParserRULE_sec_marker_directive) p.EnterOuterAlt(localctx, 1) { - p.SetState(274) + p.SetState(278) p.Match(SecLangParserCONFIG_DIR_SEC_MARKER) if p.HasError() { // Recognition error - abort rule @@ -3048,7 +3052,7 @@ func (p *SecLangParser) Engine_config_directive_with_param() (localctx IEngine_c p.EnterOuterAlt(localctx, 1) { - p.SetState(276) + p.SetState(280) _la = p.GetTokenStream().LA(1) if !(((int64((_la-133)) & ^0x3f) == 0 && ((int64(1)<<(_la-133))&25508532324925951) != 0) || ((int64((_la-211)) & ^0x3f) == 0 && ((int64(1)<<(_la-211))&255) != 0)) { @@ -3147,7 +3151,7 @@ func (p *SecLangParser) Rule_script_directive() (localctx IRule_script_directive p.EnterRule(localctx, 16, SecLangParserRULE_rule_script_directive) p.EnterOuterAlt(localctx, 1) { - p.SetState(278) + p.SetState(282) p.Match(SecLangParserDIRECTIVE_SECRULESCRIPT) if p.HasError() { // Recognition error - abort rule @@ -3243,7 +3247,7 @@ func (p *SecLangParser) File_path() (localctx IFile_pathContext) { p.EnterRule(localctx, 18, SecLangParserRULE_file_path) p.EnterOuterAlt(localctx, 1) { - p.SetState(280) + p.SetState(284) p.Match(SecLangParserCONFIG_VALUE_PATH) if p.HasError() { // Recognition error - abort rule @@ -3339,7 +3343,7 @@ func (p *SecLangParser) Remove_rule_by_id() (localctx IRemove_rule_by_idContext) p.EnterRule(localctx, 20, SecLangParserRULE_remove_rule_by_id) p.EnterOuterAlt(localctx, 1) { - p.SetState(282) + p.SetState(286) p.Match(SecLangParserCONFIG_SEC_RULE_REMOVE_BY_ID) if p.HasError() { // Recognition error - abort rule @@ -3497,7 +3501,7 @@ func (s *Remove_rule_by_id_int_rangeContext) ExitRule(listener antlr.ParseTreeLi func (p *SecLangParser) Remove_rule_by_id_values() (localctx IRemove_rule_by_id_valuesContext) { localctx = NewRemove_rule_by_id_valuesContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 22, SecLangParserRULE_remove_rule_by_id_values) - p.SetState(286) + p.SetState(290) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3508,7 +3512,7 @@ func (p *SecLangParser) Remove_rule_by_id_values() (localctx IRemove_rule_by_id_ localctx = NewRemove_rule_by_id_intContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(284) + p.SetState(288) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -3520,7 +3524,7 @@ func (p *SecLangParser) Remove_rule_by_id_values() (localctx IRemove_rule_by_id_ localctx = NewRemove_rule_by_id_int_rangeContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(285) + p.SetState(289) p.Int_range() } @@ -3650,11 +3654,11 @@ func (p *SecLangParser) Int_range() (localctx IInt_rangeContext) { p.EnterRule(localctx, 24, SecLangParserRULE_int_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(288) + p.SetState(292) p.Range_start() } { - p.SetState(289) + p.SetState(293) p.Match(SecLangParserMINUS) if p.HasError() { // Recognition error - abort rule @@ -3662,7 +3666,7 @@ func (p *SecLangParser) Int_range() (localctx IInt_rangeContext) { } } { - p.SetState(290) + p.SetState(294) p.Range_end() } @@ -3754,7 +3758,7 @@ func (p *SecLangParser) Range_start() (localctx IRange_startContext) { p.EnterRule(localctx, 26, SecLangParserRULE_range_start) p.EnterOuterAlt(localctx, 1) { - p.SetState(292) + p.SetState(296) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -3850,7 +3854,7 @@ func (p *SecLangParser) Range_end() (localctx IRange_endContext) { p.EnterRule(localctx, 28, SecLangParserRULE_range_end) p.EnterOuterAlt(localctx, 1) { - p.SetState(294) + p.SetState(298) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -3996,7 +4000,7 @@ func (s *Remove_rule_by_tagContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) String_remove_rules() (localctx IString_remove_rulesContext) { localctx = NewString_remove_rulesContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 30, SecLangParserRULE_string_remove_rules) - p.SetState(298) + p.SetState(302) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4007,7 +4011,7 @@ func (p *SecLangParser) String_remove_rules() (localctx IString_remove_rulesCont localctx = NewRemove_rule_by_msgContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(296) + p.SetState(300) p.Match(SecLangParserCONFIG_SEC_RULE_REMOVE_BY_MSG) if p.HasError() { // Recognition error - abort rule @@ -4019,7 +4023,7 @@ func (p *SecLangParser) String_remove_rules() (localctx IString_remove_rulesCont localctx = NewRemove_rule_by_tagContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(297) + p.SetState(301) p.Match(SecLangParserCONFIG_SEC_RULE_REMOVE_BY_TAG) if p.HasError() { // Recognition error - abort rule @@ -4045,6 +4049,117 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } +// IString_remove_rules_valuesContext is an interface to support dynamic dispatch. +type IString_remove_rules_valuesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + STRING() antlr.TerminalNode + VARIABLE_NAME() antlr.TerminalNode + COMMA_SEPARATED_STRING() antlr.TerminalNode + + // IsString_remove_rules_valuesContext differentiates from other interfaces. + IsString_remove_rules_valuesContext() +} + +type String_remove_rules_valuesContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyString_remove_rules_valuesContext() *String_remove_rules_valuesContext { + var p = new(String_remove_rules_valuesContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = SecLangParserRULE_string_remove_rules_values + return p +} + +func InitEmptyString_remove_rules_valuesContext(p *String_remove_rules_valuesContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = SecLangParserRULE_string_remove_rules_values +} + +func (*String_remove_rules_valuesContext) IsString_remove_rules_valuesContext() {} + +func NewString_remove_rules_valuesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *String_remove_rules_valuesContext { + var p = new(String_remove_rules_valuesContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = SecLangParserRULE_string_remove_rules_values + + return p +} + +func (s *String_remove_rules_valuesContext) GetParser() antlr.Parser { return s.parser } + +func (s *String_remove_rules_valuesContext) STRING() antlr.TerminalNode { + return s.GetToken(SecLangParserSTRING, 0) +} + +func (s *String_remove_rules_valuesContext) VARIABLE_NAME() antlr.TerminalNode { + return s.GetToken(SecLangParserVARIABLE_NAME, 0) +} + +func (s *String_remove_rules_valuesContext) COMMA_SEPARATED_STRING() antlr.TerminalNode { + return s.GetToken(SecLangParserCOMMA_SEPARATED_STRING, 0) +} + +func (s *String_remove_rules_valuesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *String_remove_rules_valuesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *String_remove_rules_valuesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SecLangParserListener); ok { + listenerT.EnterString_remove_rules_values(s) + } +} + +func (s *String_remove_rules_valuesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SecLangParserListener); ok { + listenerT.ExitString_remove_rules_values(s) + } +} + +func (p *SecLangParser) String_remove_rules_values() (localctx IString_remove_rules_valuesContext) { + localctx = NewString_remove_rules_valuesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 32, SecLangParserRULE_string_remove_rules_values) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(304) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-227)) & ^0x3f) == 0 && ((int64(1)<<(_la-227))&65793) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + // IUpdate_target_rulesContext is an interface to support dynamic dispatch. type IUpdate_target_rulesContext interface { antlr.ParserRuleContext @@ -4203,8 +4318,8 @@ func (s *Update_target_by_msgContext) ExitRule(listener antlr.ParseTreeListener) func (p *SecLangParser) Update_target_rules() (localctx IUpdate_target_rulesContext) { localctx = NewUpdate_target_rulesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, SecLangParserRULE_update_target_rules) - p.SetState(303) + p.EnterRule(localctx, 34, SecLangParserRULE_update_target_rules) + p.SetState(309) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4215,7 +4330,7 @@ func (p *SecLangParser) Update_target_rules() (localctx IUpdate_target_rulesCont localctx = NewUpdate_target_by_idContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(300) + p.SetState(306) p.Match(SecLangParserCONFIG_SEC_RULE_UPDATE_TARGET_BY_ID) if p.HasError() { // Recognition error - abort rule @@ -4227,7 +4342,7 @@ func (p *SecLangParser) Update_target_rules() (localctx IUpdate_target_rulesCont localctx = NewUpdate_target_by_msgContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(301) + p.SetState(307) p.Match(SecLangParserCONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG) if p.HasError() { // Recognition error - abort rule @@ -4239,7 +4354,7 @@ func (p *SecLangParser) Update_target_rules() (localctx IUpdate_target_rulesCont localctx = NewUpdate_target_by_tagContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(302) + p.SetState(308) p.Match(SecLangParserCONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG) if p.HasError() { // Recognition error - abort rule @@ -4337,10 +4452,10 @@ func (s *Update_action_ruleContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Update_action_rule() (localctx IUpdate_action_ruleContext) { localctx = NewUpdate_action_ruleContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, SecLangParserRULE_update_action_rule) + p.EnterRule(localctx, 36, SecLangParserRULE_update_action_rule) p.EnterOuterAlt(localctx, 1) { - p.SetState(305) + p.SetState(311) p.Match(SecLangParserCONFIG_SEC_RULE_UPDATE_ACTION_BY_ID) if p.HasError() { // Recognition error - abort rule @@ -4433,10 +4548,10 @@ func (s *IdContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Id() (localctx IIdContext) { localctx = NewIdContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, SecLangParserRULE_id) + p.EnterRule(localctx, 38, SecLangParserRULE_id) p.EnterOuterAlt(localctx, 1) { - p.SetState(307) + p.SetState(313) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -4530,10 +4645,10 @@ func (s *Engine_config_sec_cache_transformationsContext) ExitRule(listener antlr func (p *SecLangParser) Engine_config_sec_cache_transformations() (localctx IEngine_config_sec_cache_transformationsContext) { localctx = NewEngine_config_sec_cache_transformationsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, SecLangParserRULE_engine_config_sec_cache_transformations) + p.EnterRule(localctx, 40, SecLangParserRULE_engine_config_sec_cache_transformations) p.EnterOuterAlt(localctx, 1) { - p.SetState(309) + p.SetState(315) p.Match(SecLangParserCONFIG_SEC_CACHE_TRANSFORMATIONS) if p.HasError() { // Recognition error - abort rule @@ -4684,12 +4799,12 @@ func (s *Option_listContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Option_list() (localctx IOption_listContext) { localctx = NewOption_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, SecLangParserRULE_option_list) + p.EnterRule(localctx, 42, SecLangParserRULE_option_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(311) + p.SetState(317) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -4697,10 +4812,10 @@ func (p *SecLangParser) Option_list() (localctx IOption_listContext) { } } { - p.SetState(312) + p.SetState(318) p.Option() } - p.SetState(317) + p.SetState(323) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4709,7 +4824,7 @@ func (p *SecLangParser) Option_list() (localctx IOption_listContext) { for _la == SecLangParserCOMMA { { - p.SetState(313) + p.SetState(319) p.Match(SecLangParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -4717,11 +4832,11 @@ func (p *SecLangParser) Option_list() (localctx IOption_listContext) { } } { - p.SetState(314) + p.SetState(320) p.Option() } - p.SetState(319) + p.SetState(325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4729,7 +4844,7 @@ func (p *SecLangParser) Option_list() (localctx IOption_listContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(320) + p.SetState(326) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -4856,14 +4971,14 @@ func (s *OptionContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Option() (localctx IOptionContext) { localctx = NewOptionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, SecLangParserRULE_option) + p.EnterRule(localctx, 44, SecLangParserRULE_option) p.EnterOuterAlt(localctx, 1) { - p.SetState(322) + p.SetState(328) p.Option_name() } { - p.SetState(323) + p.SetState(329) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -4871,7 +4986,7 @@ func (p *SecLangParser) Option() (localctx IOptionContext) { } } { - p.SetState(324) + p.SetState(330) p.Values() } @@ -4960,10 +5075,10 @@ func (s *Option_nameContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Option_name() (localctx IOption_nameContext) { localctx = NewOption_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, SecLangParserRULE_option_name) + p.EnterRule(localctx, 46, SecLangParserRULE_option_name) p.EnterOuterAlt(localctx, 1) { - p.SetState(326) + p.SetState(332) p.Match(SecLangParserOPTION_NAME) if p.HasError() { // Recognition error - abort rule @@ -5108,8 +5223,8 @@ func (s *Config_dir_sec_default_actionContext) ExitRule(listener antlr.ParseTree func (p *SecLangParser) Engine_config_action_directive() (localctx IEngine_config_action_directiveContext) { localctx = NewEngine_config_action_directiveContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, SecLangParserRULE_engine_config_action_directive) - p.SetState(330) + p.EnterRule(localctx, 48, SecLangParserRULE_engine_config_action_directive) + p.SetState(336) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5120,7 +5235,7 @@ func (p *SecLangParser) Engine_config_action_directive() (localctx IEngine_confi localctx = NewConfig_dir_sec_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(328) + p.SetState(334) p.Match(SecLangParserCONFIG_DIR_SEC_ACTION) if p.HasError() { // Recognition error - abort rule @@ -5132,7 +5247,7 @@ func (p *SecLangParser) Engine_config_action_directive() (localctx IEngine_confi localctx = NewConfig_dir_sec_default_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(329) + p.SetState(335) p.Match(SecLangParserCONFIG_DIR_SEC_DEFAULT_ACTION) if p.HasError() { // Recognition error - abort rule @@ -5305,12 +5420,12 @@ func (s *Stmt_audit_logContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Stmt_audit_log() (localctx IStmt_audit_logContext) { localctx = NewStmt_audit_logContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, SecLangParserRULE_stmt_audit_log) + p.EnterRule(localctx, 50, SecLangParserRULE_stmt_audit_log) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(332) + p.SetState(338) _la = p.GetTokenStream().LA(1) if !(((int64((_la-142)) & ^0x3f) == 0 && ((int64(1)<<(_la-142))&279223176896971775) != 0) || _la == SecLangParserINT) { @@ -5530,8 +5645,8 @@ func (s *ValuesContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Values() (localctx IValuesContext) { localctx = NewValuesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, SecLangParserRULE_values) - p.SetState(357) + p.EnterRule(localctx, 52, SecLangParserRULE_values) + p.SetState(363) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5541,7 +5656,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(334) + p.SetState(340) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -5552,14 +5667,14 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(335) + p.SetState(341) p.Int_range() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(336) + p.SetState(342) p.Match(SecLangParserCONFIG_VALUE_ON) if p.HasError() { // Recognition error - abort rule @@ -5570,7 +5685,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(337) + p.SetState(343) p.Match(SecLangParserCONFIG_VALUE_OFF) if p.HasError() { // Recognition error - abort rule @@ -5581,7 +5696,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(338) + p.SetState(344) p.Match(SecLangParserCONFIG_VALUE_SERIAL) if p.HasError() { // Recognition error - abort rule @@ -5592,7 +5707,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(339) + p.SetState(345) p.Match(SecLangParserCONFIG_VALUE_PARALLEL) if p.HasError() { // Recognition error - abort rule @@ -5603,7 +5718,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(340) + p.SetState(346) p.Match(SecLangParserCONFIG_VALUE_HTTPS) if p.HasError() { // Recognition error - abort rule @@ -5614,7 +5729,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(341) + p.SetState(347) p.Match(SecLangParserCONFIG_VALUE_RELEVANT_ONLY) if p.HasError() { // Recognition error - abort rule @@ -5625,7 +5740,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(342) + p.SetState(348) p.Match(SecLangParserNATIVE) if p.HasError() { // Recognition error - abort rule @@ -5636,7 +5751,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(343) + p.SetState(349) p.Match(SecLangParserCONFIG_VALUE_ABORT) if p.HasError() { // Recognition error - abort rule @@ -5647,7 +5762,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(344) + p.SetState(350) p.Match(SecLangParserCONFIG_VALUE_WARN) if p.HasError() { // Recognition error - abort rule @@ -5658,7 +5773,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(345) + p.SetState(351) p.Match(SecLangParserCONFIG_VALUE_DETC) if p.HasError() { // Recognition error - abort rule @@ -5669,7 +5784,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(346) + p.SetState(352) p.Match(SecLangParserCONFIG_VALUE_PROCESS_PARTIAL) if p.HasError() { // Recognition error - abort rule @@ -5680,7 +5795,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(347) + p.SetState(353) p.Match(SecLangParserCONFIG_VALUE_REJECT) if p.HasError() { // Recognition error - abort rule @@ -5691,7 +5806,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(348) + p.SetState(354) p.Match(SecLangParserCONFIG_VALUE_PATH) if p.HasError() { // Recognition error - abort rule @@ -5699,7 +5814,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { } } { - p.SetState(349) + p.SetState(355) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -5710,7 +5825,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(350) + p.SetState(356) p.Match(SecLangParserCONFIG_VALUE_PATH) if p.HasError() { // Recognition error - abort rule @@ -5721,7 +5836,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(351) + p.SetState(357) p.Match(SecLangParserSTRING) if p.HasError() { // Recognition error - abort rule @@ -5732,7 +5847,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(352) + p.SetState(358) p.Match(SecLangParserVARIABLE_NAME) if p.HasError() { // Recognition error - abort rule @@ -5743,7 +5858,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(353) + p.SetState(359) p.Match(SecLangParserCOMMA_SEPARATED_STRING) if p.HasError() { // Recognition error - abort rule @@ -5754,7 +5869,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(354) + p.SetState(360) p.Match(SecLangParserACTION_CTL_BODY_PROCESSOR_TYPE) if p.HasError() { // Recognition error - abort rule @@ -5765,7 +5880,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 21: p.EnterOuterAlt(localctx, 21) { - p.SetState(355) + p.SetState(361) p.Match(SecLangParserAUDIT_PARTS) if p.HasError() { // Recognition error - abort rule @@ -5776,7 +5891,7 @@ func (p *SecLangParser) Values() (localctx IValuesContext) { case 22: p.EnterOuterAlt(localctx, 22) { - p.SetState(356) + p.SetState(362) p.Action_ctl_target_value() } @@ -5807,8 +5922,7 @@ type IAction_ctl_target_valueContext interface { // Getter signatures SEMI() antlr.TerminalNode Variable_enum() IVariable_enumContext - INT() antlr.TerminalNode - IDENT() antlr.TerminalNode + Ctl_id() ICtl_idContext AllSINGLE_QUOTE() []antlr.TerminalNode SINGLE_QUOTE(i int) antlr.TerminalNode String_literal() IString_literalContext @@ -5873,12 +5987,20 @@ func (s *Action_ctl_target_valueContext) Variable_enum() IVariable_enumContext { return t.(IVariable_enumContext) } -func (s *Action_ctl_target_valueContext) INT() antlr.TerminalNode { - return s.GetToken(SecLangParserINT, 0) -} +func (s *Action_ctl_target_valueContext) Ctl_id() ICtl_idContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICtl_idContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *Action_ctl_target_valueContext) IDENT() antlr.TerminalNode { - return s.GetToken(SecLangParserIDENT, 0) + if t == nil { + return nil + } + + return t.(ICtl_idContext) } func (s *Action_ctl_target_valueContext) AllSINGLE_QUOTE() []antlr.TerminalNode { @@ -5967,10 +6089,10 @@ func (s *Action_ctl_target_valueContext) ExitRule(listener antlr.ParseTreeListen func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_valueContext) { localctx = NewAction_ctl_target_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, SecLangParserRULE_action_ctl_target_value) + p.EnterRule(localctx, 54, SecLangParserRULE_action_ctl_target_value) var _la int - p.SetState(385) + p.SetState(389) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5979,36 +6101,22 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) - p.SetState(366) + p.SetState(371) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case SecLangParserINT: + case SecLangParserIDENT, SecLangParserINT: { - p.SetState(359) - p.Match(SecLangParserINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case SecLangParserIDENT: - { - p.SetState(360) - p.Match(SecLangParserIDENT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(365) + p.Ctl_id() } case SecLangParserSINGLE_QUOTE: { - p.SetState(361) + p.SetState(366) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -6016,11 +6124,11 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v } } { - p.SetState(362) + p.SetState(367) p.String_literal() } { - p.SetState(363) + p.SetState(368) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -6030,7 +6138,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v case SecLangParserVARIABLE_NAME: { - p.SetState(365) + p.SetState(370) p.Match(SecLangParserVARIABLE_NAME) if p.HasError() { // Recognition error - abort rule @@ -6043,7 +6151,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v goto errorExit } { - p.SetState(368) + p.SetState(373) p.Match(SecLangParserSEMI) if p.HasError() { // Recognition error - abort rule @@ -6051,42 +6159,28 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v } } { - p.SetState(369) + p.SetState(374) p.Variable_enum() } case 2: p.EnterOuterAlt(localctx, 2) - p.SetState(377) + p.SetState(381) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case SecLangParserINT: + case SecLangParserIDENT, SecLangParserINT: { - p.SetState(370) - p.Match(SecLangParserINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case SecLangParserIDENT: - { - p.SetState(371) - p.Match(SecLangParserIDENT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(375) + p.Ctl_id() } case SecLangParserSINGLE_QUOTE: { - p.SetState(372) + p.SetState(376) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -6094,11 +6188,11 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v } } { - p.SetState(373) + p.SetState(377) p.String_literal() } { - p.SetState(374) + p.SetState(378) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -6108,7 +6202,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v case SecLangParserVARIABLE_NAME: { - p.SetState(376) + p.SetState(380) p.Match(SecLangParserVARIABLE_NAME) if p.HasError() { // Recognition error - abort rule @@ -6121,7 +6215,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v goto errorExit } { - p.SetState(379) + p.SetState(383) p.Match(SecLangParserSEMI) if p.HasError() { // Recognition error - abort rule @@ -6129,10 +6223,10 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v } } { - p.SetState(380) + p.SetState(384) p.Collection_enum() } - p.SetState(383) + p.SetState(387) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6141,7 +6235,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v if _la == SecLangParserCOLON { { - p.SetState(381) + p.SetState(385) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -6149,7 +6243,7 @@ func (p *SecLangParser) Action_ctl_target_value() (localctx IAction_ctl_target_v } } { - p.SetState(382) + p.SetState(386) p.Collection_value() } @@ -6266,8 +6360,8 @@ func (s *Update_target_rules_valuesContext) ExitRule(listener antlr.ParseTreeLis func (p *SecLangParser) Update_target_rules_values() (localctx IUpdate_target_rules_valuesContext) { localctx = NewUpdate_target_rules_valuesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, SecLangParserRULE_update_target_rules_values) - p.SetState(390) + p.EnterRule(localctx, 56, SecLangParserRULE_update_target_rules_values) + p.SetState(394) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6277,7 +6371,7 @@ func (p *SecLangParser) Update_target_rules_values() (localctx IUpdate_target_ru case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(387) + p.SetState(391) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -6288,14 +6382,14 @@ func (p *SecLangParser) Update_target_rules_values() (localctx IUpdate_target_ru case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(388) + p.SetState(392) p.Int_range() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(389) + p.SetState(393) p.Match(SecLangParserSTRING) if p.HasError() { // Recognition error - abort rule @@ -6392,10 +6486,10 @@ func (s *Operator_notContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Operator_not() (localctx IOperator_notContext) { localctx = NewOperator_notContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, SecLangParserRULE_operator_not) + p.EnterRule(localctx, 58, SecLangParserRULE_operator_not) p.EnterOuterAlt(localctx, 1) { - p.SetState(392) + p.SetState(396) p.Match(SecLangParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6549,10 +6643,10 @@ func (s *OperatorContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Operator() (localctx IOperatorContext) { localctx = NewOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, SecLangParserRULE_operator) + p.EnterRule(localctx, 60, SecLangParserRULE_operator) var _la int - p.SetState(410) + p.SetState(414) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6562,14 +6656,14 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(394) + p.SetState(398) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(396) + p.SetState(400) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6578,13 +6672,13 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { if _la == SecLangParserNOT { { - p.SetState(395) + p.SetState(399) p.Operator_not() } } { - p.SetState(398) + p.SetState(402) p.Match(SecLangParserAT) if p.HasError() { // Recognition error - abort rule @@ -6592,10 +6686,10 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { } } { - p.SetState(399) + p.SetState(403) p.Operator_name() } - p.SetState(401) + p.SetState(405) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6604,13 +6698,13 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { if _la == SecLangParserVARIABLE_NAME_ENUM || _la == SecLangParserUNKNOWN_VARIABLES || ((int64((_la-229)) & ^0x3f) == 0 && ((int64(1)<<(_la-229))&671088705) != 0) { { - p.SetState(400) + p.SetState(404) p.Operator_value() } } { - p.SetState(403) + p.SetState(407) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -6621,7 +6715,7 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(405) + p.SetState(409) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -6629,11 +6723,11 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { } } { - p.SetState(406) + p.SetState(410) p.Operator_value() } { - p.SetState(407) + p.SetState(411) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -6644,7 +6738,7 @@ func (p *SecLangParser) Operator() (localctx IOperatorContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(409) + p.SetState(413) p.Operator_value() } @@ -6917,12 +7011,12 @@ func (s *Operator_nameContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Operator_name() (localctx IOperator_nameContext) { localctx = NewOperator_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, SecLangParserRULE_operator_name) + p.EnterRule(localctx, 62, SecLangParserRULE_operator_name) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(412) + p.SetState(416) _la = p.GetTokenStream().LA(1) if !((int64((_la-91)) & ^0x3f) == 0 && ((int64(1)<<(_la-91))&137438953471) != 0) { @@ -7108,10 +7202,10 @@ func (s *Operator_valueContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { localctx = NewOperator_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, SecLangParserRULE_operator_value) + p.EnterRule(localctx, 64, SecLangParserRULE_operator_value) var _la int - p.SetState(432) + p.SetState(436) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7121,14 +7215,14 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case SecLangParserVARIABLE_NAME_ENUM, SecLangParserUNKNOWN_VARIABLES: p.EnterOuterAlt(localctx, 1) { - p.SetState(414) + p.SetState(418) p.Variable_enum() } case SecLangParserSTRING: p.EnterOuterAlt(localctx, 2) { - p.SetState(415) + p.SetState(419) p.Match(SecLangParserSTRING) if p.HasError() { // Recognition error - abort rule @@ -7138,7 +7232,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case SecLangParserINT: p.EnterOuterAlt(localctx, 3) - p.SetState(418) + p.SetState(422) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7147,7 +7241,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 34, p.GetParserRuleContext()) { case 1: { - p.SetState(416) + p.SetState(420) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -7157,14 +7251,14 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case 2: { - p.SetState(417) + p.SetState(421) p.Int_range() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(427) + p.SetState(431) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7173,14 +7267,14 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { for _la == SecLangParserCOMMA { { - p.SetState(420) + p.SetState(424) p.Match(SecLangParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(423) + p.SetState(427) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7189,7 +7283,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 35, p.GetParserRuleContext()) { case 1: { - p.SetState(421) + p.SetState(425) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -7199,7 +7293,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case 2: { - p.SetState(422) + p.SetState(426) p.Int_range() } @@ -7207,7 +7301,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { goto errorExit } - p.SetState(429) + p.SetState(433) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7218,7 +7312,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case SecLangParserOPERATOR_UNQUOTED_STRING: p.EnterOuterAlt(localctx, 4) { - p.SetState(430) + p.SetState(434) p.Match(SecLangParserOPERATOR_UNQUOTED_STRING) if p.HasError() { // Recognition error - abort rule @@ -7229,7 +7323,7 @@ func (p *SecLangParser) Operator_value() (localctx IOperator_valueContext) { case SecLangParserOPERATOR_QUOTED_STRING: p.EnterOuterAlt(localctx, 5) { - p.SetState(431) + p.SetState(435) p.Match(SecLangParserOPERATOR_QUOTED_STRING) if p.HasError() { // Recognition error - abort rule @@ -7327,10 +7421,10 @@ func (s *Var_notContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Var_not() (localctx IVar_notContext) { localctx = NewVar_notContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, SecLangParserRULE_var_not) + p.EnterRule(localctx, 66, SecLangParserRULE_var_not) p.EnterOuterAlt(localctx, 1) { - p.SetState(434) + p.SetState(438) p.Match(SecLangParserNOT) if p.HasError() { // Recognition error - abort rule @@ -7423,10 +7517,10 @@ func (s *Var_countContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Var_count() (localctx IVar_countContext) { localctx = NewVar_countContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, SecLangParserRULE_var_count) + p.EnterRule(localctx, 68, SecLangParserRULE_var_count) p.EnterOuterAlt(localctx, 1) { - p.SetState(436) + p.SetState(440) p.Match(SecLangParserVAR_COUNT) if p.HasError() { // Recognition error - abort rule @@ -7637,11 +7731,11 @@ func (s *VariablesContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Variables() (localctx IVariablesContext) { localctx = NewVariablesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, SecLangParserRULE_variables) + p.EnterRule(localctx, 70, SecLangParserRULE_variables) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(439) + p.SetState(443) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7650,7 +7744,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { if _la == SecLangParserQUOTE { { - p.SetState(438) + p.SetState(442) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -7659,7 +7753,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { } } - p.SetState(442) + p.SetState(446) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7668,12 +7762,12 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { if _la == SecLangParserNOT { { - p.SetState(441) + p.SetState(445) p.Var_not() } } - p.SetState(445) + p.SetState(449) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7682,21 +7776,21 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { if _la == SecLangParserVAR_COUNT { { - p.SetState(444) + p.SetState(448) p.Var_count() } } { - p.SetState(447) + p.SetState(451) p.Var_stmt() } - p.SetState(449) + p.SetState(453) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 41, p.GetParserRuleContext()) == 1 { { - p.SetState(448) + p.SetState(452) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -7707,7 +7801,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(464) + p.SetState(468) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7716,14 +7810,14 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { for _la == SecLangParserPIPE { { - p.SetState(451) + p.SetState(455) p.Match(SecLangParserPIPE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(453) + p.SetState(457) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7732,7 +7826,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { if _la == SecLangParserQUOTE { { - p.SetState(452) + p.SetState(456) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -7741,7 +7835,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { } } - p.SetState(456) + p.SetState(460) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7750,21 +7844,21 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { if _la == SecLangParserNOT { { - p.SetState(455) + p.SetState(459) p.Var_not() } } { - p.SetState(458) + p.SetState(462) p.Var_stmt() } - p.SetState(460) + p.SetState(464) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { { - p.SetState(459) + p.SetState(463) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -7776,7 +7870,7 @@ func (p *SecLangParser) Variables() (localctx IVariablesContext) { goto errorExit } - p.SetState(466) + p.SetState(470) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7987,11 +8081,11 @@ func (s *Update_variablesContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { localctx = NewUpdate_variablesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, SecLangParserRULE_update_variables) + p.EnterRule(localctx, 72, SecLangParserRULE_update_variables) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(468) + p.SetState(472) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8000,7 +8094,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { if _la == SecLangParserQUOTE { { - p.SetState(467) + p.SetState(471) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8009,7 +8103,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { } } - p.SetState(471) + p.SetState(475) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8018,12 +8112,12 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { if _la == SecLangParserNOT { { - p.SetState(470) + p.SetState(474) p.Var_not() } } - p.SetState(474) + p.SetState(478) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8032,21 +8126,21 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { if _la == SecLangParserVAR_COUNT { { - p.SetState(473) + p.SetState(477) p.Var_count() } } { - p.SetState(476) + p.SetState(480) p.Var_stmt() } - p.SetState(478) + p.SetState(482) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 49, p.GetParserRuleContext()) == 1 { { - p.SetState(477) + p.SetState(481) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8057,7 +8151,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(493) + p.SetState(497) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8066,14 +8160,14 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { for _la == SecLangParserCOMMA { { - p.SetState(480) + p.SetState(484) p.Match(SecLangParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(482) + p.SetState(486) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8082,7 +8176,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { if _la == SecLangParserQUOTE { { - p.SetState(481) + p.SetState(485) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8091,7 +8185,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { } } - p.SetState(485) + p.SetState(489) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8100,21 +8194,21 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { if _la == SecLangParserNOT { { - p.SetState(484) + p.SetState(488) p.Var_not() } } { - p.SetState(487) + p.SetState(491) p.Var_stmt() } - p.SetState(489) + p.SetState(493) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 52, p.GetParserRuleContext()) == 1 { { - p.SetState(488) + p.SetState(492) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8126,7 +8220,7 @@ func (p *SecLangParser) Update_variables() (localctx IUpdate_variablesContext) { goto errorExit } - p.SetState(495) + p.SetState(499) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8231,10 +8325,10 @@ func (s *New_targetContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) New_target() (localctx INew_targetContext) { localctx = NewNew_targetContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, SecLangParserRULE_new_target) + p.EnterRule(localctx, 74, SecLangParserRULE_new_target) p.EnterOuterAlt(localctx, 1) { - p.SetState(496) + p.SetState(500) p.Var_stmt() } @@ -8374,10 +8468,10 @@ func (s *Var_stmtContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Var_stmt() (localctx IVar_stmtContext) { localctx = NewVar_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, SecLangParserRULE_var_stmt) + p.EnterRule(localctx, 76, SecLangParserRULE_var_stmt) var _la int - p.SetState(504) + p.SetState(508) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8387,17 +8481,17 @@ func (p *SecLangParser) Var_stmt() (localctx IVar_stmtContext) { case SecLangParserVARIABLE_NAME_ENUM, SecLangParserUNKNOWN_VARIABLES: p.EnterOuterAlt(localctx, 1) { - p.SetState(498) + p.SetState(502) p.Variable_enum() } case SecLangParserCOLLECTION_NAME_ENUM, SecLangParserRUN_TIME_VAR_XML: p.EnterOuterAlt(localctx, 2) { - p.SetState(499) + p.SetState(503) p.Collection_enum() } - p.SetState(502) + p.SetState(506) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8406,7 +8500,7 @@ func (p *SecLangParser) Var_stmt() (localctx IVar_stmtContext) { if _la == SecLangParserCOLON { { - p.SetState(500) + p.SetState(504) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -8414,7 +8508,7 @@ func (p *SecLangParser) Var_stmt() (localctx IVar_stmtContext) { } } { - p.SetState(501) + p.SetState(505) p.Collection_value() } @@ -8515,12 +8609,12 @@ func (s *Variable_enumContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Variable_enum() (localctx IVariable_enumContext) { localctx = NewVariable_enumContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, SecLangParserRULE_variable_enum) + p.EnterRule(localctx, 78, SecLangParserRULE_variable_enum) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(506) + p.SetState(510) _la = p.GetTokenStream().LA(1) if !(_la == SecLangParserVARIABLE_NAME_ENUM || _la == SecLangParserUNKNOWN_VARIABLES) { @@ -8621,12 +8715,12 @@ func (s *Collection_enumContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Collection_enum() (localctx ICollection_enumContext) { localctx = NewCollection_enumContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, SecLangParserRULE_collection_enum) + p.EnterRule(localctx, 80, SecLangParserRULE_collection_enum) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(508) + p.SetState(512) _la = p.GetTokenStream().LA(1) if !(_la == SecLangParserCOLLECTION_NAME_ENUM || _la == SecLangParserRUN_TIME_VAR_XML) { @@ -8780,12 +8874,12 @@ func (s *ActionsContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Actions() (localctx IActionsContext) { localctx = NewActionsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, SecLangParserRULE_actions) + p.EnterRule(localctx, 82, SecLangParserRULE_actions) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(510) + p.SetState(514) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8793,10 +8887,10 @@ func (p *SecLangParser) Actions() (localctx IActionsContext) { } } { - p.SetState(511) + p.SetState(515) p.Action_() } - p.SetState(516) + p.SetState(520) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8805,7 +8899,7 @@ func (p *SecLangParser) Actions() (localctx IActionsContext) { for _la == SecLangParserCOMMA { { - p.SetState(512) + p.SetState(516) p.Match(SecLangParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -8813,11 +8907,11 @@ func (p *SecLangParser) Actions() (localctx IActionsContext) { } } { - p.SetState(513) + p.SetState(517) p.Action_() } - p.SetState(518) + p.SetState(522) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8825,7 +8919,7 @@ func (p *SecLangParser) Actions() (localctx IActionsContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(519) + p.SetState(523) p.Match(SecLangParserQUOTE) if p.HasError() { // Recognition error - abort rule @@ -8979,10 +9073,10 @@ func (s *ActionContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Action_() (localctx IActionContext) { localctx = NewActionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, SecLangParserRULE_action) + p.EnterRule(localctx, 84, SecLangParserRULE_action) var _la int - p.SetState(536) + p.SetState(540) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8992,18 +9086,18 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(521) + p.SetState(525) p.Action_with_params() } { - p.SetState(522) + p.SetState(526) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(524) + p.SetState(528) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9012,7 +9106,7 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { if _la == SecLangParserNOT { { - p.SetState(523) + p.SetState(527) p.Match(SecLangParserNOT) if p.HasError() { // Recognition error - abort rule @@ -9021,7 +9115,7 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { } } - p.SetState(527) + p.SetState(531) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9030,7 +9124,7 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { if _la == SecLangParserEQUAL { { - p.SetState(526) + p.SetState(530) p.Match(SecLangParserEQUAL) if p.HasError() { // Recognition error - abort rule @@ -9040,18 +9134,18 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { } { - p.SetState(529) + p.SetState(533) p.Action_value() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(531) + p.SetState(535) p.Action_with_params() } { - p.SetState(532) + p.SetState(536) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -9059,14 +9153,14 @@ func (p *SecLangParser) Action_() (localctx IActionContext) { } } { - p.SetState(533) + p.SetState(537) p.Action_value() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(535) + p.SetState(539) p.Action_only() } @@ -9232,8 +9326,8 @@ func (s *Action_onlyContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Action_only() (localctx IAction_onlyContext) { localctx = NewAction_onlyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, SecLangParserRULE_action_only) - p.SetState(544) + p.EnterRule(localctx, 86, SecLangParserRULE_action_only) + p.SetState(548) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9243,28 +9337,28 @@ func (p *SecLangParser) Action_only() (localctx IAction_onlyContext) { case SecLangParserACTION_ALLOW, SecLangParserACTION_BLOCK, SecLangParserACTION_DENY, SecLangParserACTION_DROP, SecLangParserACTION_PASS, SecLangParserACTION_PAUSE: p.EnterOuterAlt(localctx, 1) { - p.SetState(538) + p.SetState(542) p.Disruptive_action_only() } case SecLangParserACTION_AUDIT_LOG, SecLangParserACTION_CAPTURE, SecLangParserACTION_LOG, SecLangParserACTION_MULTI_MATCH, SecLangParserACTION_NO_AUDIT_LOG, SecLangParserACTION_NO_LOG, SecLangParserACTION_SANITISE_MATCHED: p.EnterOuterAlt(localctx, 2) { - p.SetState(539) + p.SetState(543) p.Non_disruptive_action_only() } case SecLangParserACTION_CHAIN: p.EnterOuterAlt(localctx, 3) { - p.SetState(540) + p.SetState(544) p.Flow_action_only() } case SecLangParserACTION_TRANSFORMATION: p.EnterOuterAlt(localctx, 4) { - p.SetState(541) + p.SetState(545) p.Match(SecLangParserACTION_TRANSFORMATION) if p.HasError() { // Recognition error - abort rule @@ -9272,7 +9366,7 @@ func (p *SecLangParser) Action_only() (localctx IAction_onlyContext) { } } { - p.SetState(542) + p.SetState(546) p.Match(SecLangParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -9280,7 +9374,7 @@ func (p *SecLangParser) Action_only() (localctx IAction_onlyContext) { } } { - p.SetState(543) + p.SetState(547) p.Transformation_action_value() } @@ -9399,12 +9493,12 @@ func (s *Disruptive_action_onlyContext) ExitRule(listener antlr.ParseTreeListene func (p *SecLangParser) Disruptive_action_only() (localctx IDisruptive_action_onlyContext) { localctx = NewDisruptive_action_onlyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, SecLangParserRULE_disruptive_action_only) + p.EnterRule(localctx, 88, SecLangParserRULE_disruptive_action_only) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(546) + p.SetState(550) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1729558181186633728) != 0) { @@ -9530,12 +9624,12 @@ func (s *Non_disruptive_action_onlyContext) ExitRule(listener antlr.ParseTreeLis func (p *SecLangParser) Non_disruptive_action_only() (localctx INon_disruptive_action_onlyContext) { localctx = NewNon_disruptive_action_onlyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, SecLangParserRULE_non_disruptive_action_only) + p.EnterRule(localctx, 90, SecLangParserRULE_non_disruptive_action_only) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(548) + p.SetState(552) _la = p.GetTokenStream().LA(1) if !((int64((_la-30)) & ^0x3f) == 0 && ((int64(1)<<(_la-30))&275356057605) != 0) { @@ -9631,10 +9725,10 @@ func (s *Flow_action_onlyContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Flow_action_only() (localctx IFlow_action_onlyContext) { localctx = NewFlow_action_onlyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, SecLangParserRULE_flow_action_only) + p.EnterRule(localctx, 92, SecLangParserRULE_flow_action_only) p.EnterOuterAlt(localctx, 1) { - p.SetState(550) + p.SetState(554) p.Match(SecLangParserACTION_CHAIN) if p.HasError() { // Recognition error - abort rule @@ -9807,8 +9901,8 @@ func (s *Action_with_paramsContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Action_with_params() (localctx IAction_with_paramsContext) { localctx = NewAction_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, SecLangParserRULE_action_with_params) - p.SetState(557) + p.EnterRule(localctx, 94, SecLangParserRULE_action_with_params) + p.SetState(561) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9818,35 +9912,35 @@ func (p *SecLangParser) Action_with_params() (localctx IAction_with_paramsContex case SecLangParserACTION_ID, SecLangParserACTION_MATURITY, SecLangParserACTION_MSG, SecLangParserACTION_PHASE, SecLangParserACTION_REV, SecLangParserACTION_SEVERITY, SecLangParserACTION_TAG, SecLangParserACTION_VER: p.EnterOuterAlt(localctx, 1) { - p.SetState(552) + p.SetState(556) p.Metadata_action_with_params() } case SecLangParserACTION_PROXY, SecLangParserACTION_REDIRECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(553) + p.SetState(557) p.Disruptive_action_with_params() } case SecLangParserACTION_APPEND, SecLangParserACTION_CTL, SecLangParserACTION_DEPRECATE_VAR, SecLangParserACTION_EXEC, SecLangParserACTION_EXPIRE_VAR, SecLangParserACTION_INITCOL, SecLangParserACTION_LOG_DATA, SecLangParserACTION_PREPEND, SecLangParserACTION_SANITISE_ARG, SecLangParserACTION_SANITISE_MATCHED_BYTES, SecLangParserACTION_SANITISE_REQUEST_HEADER, SecLangParserACTION_SANITISE_RESPONSE_HEADER, SecLangParserACTION_SETENV, SecLangParserACTION_SETRSC, SecLangParserACTION_SETSID, SecLangParserACTION_SETUID, SecLangParserACTION_SETVAR: p.EnterOuterAlt(localctx, 3) { - p.SetState(554) + p.SetState(558) p.Non_disruptive_action_with_params() } case SecLangParserACTION_SKIP_AFTER, SecLangParserACTION_SKIP: p.EnterOuterAlt(localctx, 4) { - p.SetState(555) + p.SetState(559) p.Flow_action_with_params() } case SecLangParserACTION_STATUS, SecLangParserACTION_XMLNS: p.EnterOuterAlt(localctx, 5) { - p.SetState(556) + p.SetState(560) p.Data_action_with_params() } @@ -10196,8 +10290,8 @@ func (s *ACTION_TAGContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action_with_paramsContext) { localctx = NewMetadata_action_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, SecLangParserRULE_metadata_action_with_params) - p.SetState(567) + p.EnterRule(localctx, 96, SecLangParserRULE_metadata_action_with_params) + p.SetState(571) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10208,7 +10302,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_PHASEContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(559) + p.SetState(563) p.Match(SecLangParserACTION_PHASE) if p.HasError() { // Recognition error - abort rule @@ -10220,7 +10314,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_IDContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(560) + p.SetState(564) p.Match(SecLangParserACTION_ID) if p.HasError() { // Recognition error - abort rule @@ -10232,7 +10326,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_MATURITYContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(561) + p.SetState(565) p.Match(SecLangParserACTION_MATURITY) if p.HasError() { // Recognition error - abort rule @@ -10244,7 +10338,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_MSGContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(562) + p.SetState(566) p.Match(SecLangParserACTION_MSG) if p.HasError() { // Recognition error - abort rule @@ -10256,7 +10350,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_REVContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(563) + p.SetState(567) p.Match(SecLangParserACTION_REV) if p.HasError() { // Recognition error - abort rule @@ -10268,7 +10362,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_SEVERITYContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(564) + p.SetState(568) p.Match(SecLangParserACTION_SEVERITY) if p.HasError() { // Recognition error - abort rule @@ -10280,7 +10374,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_TAGContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(565) + p.SetState(569) p.Match(SecLangParserACTION_TAG) if p.HasError() { // Recognition error - abort rule @@ -10292,7 +10386,7 @@ func (p *SecLangParser) Metadata_action_with_params() (localctx IMetadata_action localctx = NewACTION_VERContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(566) + p.SetState(570) p.Match(SecLangParserACTION_VER) if p.HasError() { // Recognition error - abort rule @@ -10395,12 +10489,12 @@ func (s *Disruptive_action_with_paramsContext) ExitRule(listener antlr.ParseTree func (p *SecLangParser) Disruptive_action_with_params() (localctx IDisruptive_action_with_paramsContext) { localctx = NewDisruptive_action_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, SecLangParserRULE_disruptive_action_with_params) + p.EnterRule(localctx, 98, SecLangParserRULE_disruptive_action_with_params) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(569) + p.SetState(573) _la = p.GetTokenStream().LA(1) if !(_la == SecLangParserACTION_PROXY || _la == SecLangParserACTION_REDIRECT) { @@ -10576,12 +10670,12 @@ func (s *Non_disruptive_action_with_paramsContext) ExitRule(listener antlr.Parse func (p *SecLangParser) Non_disruptive_action_with_params() (localctx INon_disruptive_action_with_paramsContext) { localctx = NewNon_disruptive_action_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, SecLangParserRULE_non_disruptive_action_with_params) + p.EnterRule(localctx, 100, SecLangParserRULE_non_disruptive_action_with_params) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(571) + p.SetState(575) _la = p.GetTokenStream().LA(1) if !((int64((_la-29)) & ^0x3f) == 0 && ((int64(1)<<(_la-29))&140058897809441) != 0) { @@ -10682,12 +10776,12 @@ func (s *Data_action_with_paramsContext) ExitRule(listener antlr.ParseTreeListen func (p *SecLangParser) Data_action_with_params() (localctx IData_action_with_paramsContext) { localctx = NewData_action_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, SecLangParserRULE_data_action_with_params) + p.EnterRule(localctx, 102, SecLangParserRULE_data_action_with_params) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(573) + p.SetState(577) _la = p.GetTokenStream().LA(1) if !(_la == SecLangParserACTION_STATUS || _la == SecLangParserACTION_XMLNS) { @@ -10788,12 +10882,12 @@ func (s *Flow_action_with_paramsContext) ExitRule(listener antlr.ParseTreeListen func (p *SecLangParser) Flow_action_with_params() (localctx IFlow_action_with_paramsContext) { localctx = NewFlow_action_with_paramsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, SecLangParserRULE_flow_action_with_params) + p.EnterRule(localctx, 104, SecLangParserRULE_flow_action_with_params) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(575) + p.SetState(579) _la = p.GetTokenStream().LA(1) if !(_la == SecLangParserACTION_SKIP_AFTER || _la == SecLangParserACTION_SKIP) { @@ -10928,8 +11022,8 @@ func (s *Action_valueContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Action_value() (localctx IAction_valueContext) { localctx = NewAction_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, SecLangParserRULE_action_value) - p.SetState(586) + p.EnterRule(localctx, 106, SecLangParserRULE_action_value) + p.SetState(590) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10939,14 +11033,14 @@ func (p *SecLangParser) Action_value() (localctx IAction_valueContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(577) + p.SetState(581) p.Action_value_types() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(578) + p.SetState(582) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -10954,11 +11048,11 @@ func (p *SecLangParser) Action_value() (localctx IAction_valueContext) { } } { - p.SetState(579) + p.SetState(583) p.Action_value_types() } { - p.SetState(580) + p.SetState(584) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -10969,7 +11063,7 @@ func (p *SecLangParser) Action_value() (localctx IAction_valueContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(582) + p.SetState(586) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -10977,11 +11071,11 @@ func (p *SecLangParser) Action_value() (localctx IAction_valueContext) { } } { - p.SetState(583) + p.SetState(587) p.String_literal() } { - p.SetState(584) + p.SetState(588) p.Match(SecLangParserSINGLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -11183,8 +11277,8 @@ func (s *Action_value_typesContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContext) { localctx = NewAction_value_typesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, SecLangParserRULE_action_value_types) - p.SetState(599) + p.EnterRule(localctx, 108, SecLangParserRULE_action_value_types) + p.SetState(603) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11194,7 +11288,7 @@ func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContex case SecLangParserINT: p.EnterOuterAlt(localctx, 1) { - p.SetState(588) + p.SetState(592) p.Match(SecLangParserINT) if p.HasError() { // Recognition error - abort rule @@ -11205,36 +11299,36 @@ func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContex case SecLangParserQUOTE, SecLangParserSINGLE_QUOTE, SecLangParserCOMMA, SecLangParserXPATH_EXPRESSION, SecLangParserCOLLECTION_ELEMENT_VALUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(589) + p.SetState(593) p.Collection_value() } case SecLangParserCOLLECTION_NAME_SETVAR: p.EnterOuterAlt(localctx, 3) { - p.SetState(590) + p.SetState(594) p.Setvar_action() } case SecLangParserACTION_CTL_AUDIT_ENGINE, SecLangParserACTION_CTL_AUDIT_LOG_PARTS, SecLangParserACTION_CTL_REQUEST_BODY_PROCESSOR, SecLangParserACTION_CTL_FORCE_REQ_BODY_VAR, SecLangParserACTION_CTL_REQUEST_BODY_ACCESS, SecLangParserACTION_CTL_RULE_ENGINE, SecLangParserACTION_CTL_RULE_REMOVE_BY_TAG, SecLangParserACTION_CTL_RULE_REMOVE_BY_ID, SecLangParserACTION_CTL_RULE_REMOVE_TARGET_BY_ID, SecLangParserACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: p.EnterOuterAlt(localctx, 4) { - p.SetState(591) + p.SetState(595) p.Ctl_action() } { - p.SetState(592) + p.SetState(596) p.Assignment() } { - p.SetState(593) + p.SetState(597) p.Values() } case SecLangParserVARIABLE_NAME: p.EnterOuterAlt(localctx, 5) { - p.SetState(595) + p.SetState(599) p.Match(SecLangParserVARIABLE_NAME) if p.HasError() { // Recognition error - abort rule @@ -11245,7 +11339,7 @@ func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContex case SecLangParserACTION_SEVERITY_VALUE: p.EnterOuterAlt(localctx, 6) { - p.SetState(596) + p.SetState(600) p.Match(SecLangParserACTION_SEVERITY_VALUE) if p.HasError() { // Recognition error - abort rule @@ -11256,7 +11350,7 @@ func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContex case SecLangParserFREE_TEXT_QUOTE_MACRO_EXPANSION: p.EnterOuterAlt(localctx, 7) { - p.SetState(597) + p.SetState(601) p.Match(SecLangParserFREE_TEXT_QUOTE_MACRO_EXPANSION) if p.HasError() { // Recognition error - abort rule @@ -11267,7 +11361,7 @@ func (p *SecLangParser) Action_value_types() (localctx IAction_value_typesContex case SecLangParserCOMMA_SEPARATED_STRING: p.EnterOuterAlt(localctx, 8) { - p.SetState(598) + p.SetState(602) p.Match(SecLangParserCOMMA_SEPARATED_STRING) if p.HasError() { // Recognition error - abort rule @@ -11365,10 +11459,10 @@ func (s *String_literalContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) String_literal() (localctx IString_literalContext) { localctx = NewString_literalContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, SecLangParserRULE_string_literal) + p.EnterRule(localctx, 110, SecLangParserRULE_string_literal) p.EnterOuterAlt(localctx, 1) { - p.SetState(601) + p.SetState(605) p.Match(SecLangParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -11506,12 +11600,12 @@ func (s *Ctl_actionContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Ctl_action() (localctx ICtl_actionContext) { localctx = NewCtl_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, SecLangParserRULE_ctl_action) + p.EnterRule(localctx, 112, SecLangParserRULE_ctl_action) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(603) + p.SetState(607) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&35150012350464) != 0) { @@ -11607,10 +11701,10 @@ func (s *Transformation_action_valueContext) ExitRule(listener antlr.ParseTreeLi func (p *SecLangParser) Transformation_action_value() (localctx ITransformation_action_valueContext) { localctx = NewTransformation_action_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, SecLangParserRULE_transformation_action_value) + p.EnterRule(localctx, 114, SecLangParserRULE_transformation_action_value) p.EnterOuterAlt(localctx, 1) { - p.SetState(605) + p.SetState(609) p.Match(SecLangParserTRANSFORMATION_VALUE) if p.HasError() { // Recognition error - abort rule @@ -11708,8 +11802,8 @@ func (s *Collection_valueContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Collection_value() (localctx ICollection_valueContext) { localctx = NewCollection_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, SecLangParserRULE_collection_value) - p.SetState(610) + p.EnterRule(localctx, 116, SecLangParserRULE_collection_value) + p.SetState(614) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11722,7 +11816,7 @@ func (p *SecLangParser) Collection_value() (localctx ICollection_valueContext) { case SecLangParserXPATH_EXPRESSION: p.EnterOuterAlt(localctx, 2) { - p.SetState(608) + p.SetState(612) p.Match(SecLangParserXPATH_EXPRESSION) if p.HasError() { // Recognition error - abort rule @@ -11733,7 +11827,7 @@ func (p *SecLangParser) Collection_value() (localctx ICollection_valueContext) { case SecLangParserCOLLECTION_ELEMENT_VALUE: p.EnterOuterAlt(localctx, 3) { - p.SetState(609) + p.SetState(613) p.Match(SecLangParserCOLLECTION_ELEMENT_VALUE) if p.HasError() { // Recognition error - abort rule @@ -11899,14 +11993,14 @@ func (s *Setvar_actionContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Setvar_action() (localctx ISetvar_actionContext) { localctx = NewSetvar_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, SecLangParserRULE_setvar_action) + p.EnterRule(localctx, 118, SecLangParserRULE_setvar_action) p.EnterOuterAlt(localctx, 1) { - p.SetState(612) + p.SetState(616) p.Col_name() } { - p.SetState(613) + p.SetState(617) p.Match(SecLangParserDOT) if p.HasError() { // Recognition error - abort rule @@ -11914,15 +12008,15 @@ func (p *SecLangParser) Setvar_action() (localctx ISetvar_actionContext) { } } { - p.SetState(614) + p.SetState(618) p.Setvar_stmt() } { - p.SetState(615) + p.SetState(619) p.Assignment() } { - p.SetState(616) + p.SetState(620) p.Var_assignment() } @@ -12011,10 +12105,10 @@ func (s *Col_nameContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Col_name() (localctx ICol_nameContext) { localctx = NewCol_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, SecLangParserRULE_col_name) + p.EnterRule(localctx, 120, SecLangParserRULE_col_name) p.EnterOuterAlt(localctx, 1) { - p.SetState(618) + p.SetState(622) p.Match(SecLangParserCOLLECTION_NAME_SETVAR) if p.HasError() { // Recognition error - abort rule @@ -12132,11 +12226,11 @@ func (s *Setvar_stmtContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { localctx = NewSetvar_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, SecLangParserRULE_setvar_stmt) + p.EnterRule(localctx, 122, SecLangParserRULE_setvar_stmt) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(623) + p.SetState(627) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12144,7 +12238,7 @@ func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == SecLangParserCOLLECTION_ELEMENT || _la == SecLangParserCOLLECTION_WITH_MACRO { - p.SetState(623) + p.SetState(627) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12153,7 +12247,7 @@ func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { switch p.GetTokenStream().LA(1) { case SecLangParserCOLLECTION_ELEMENT: { - p.SetState(620) + p.SetState(624) p.Match(SecLangParserCOLLECTION_ELEMENT) if p.HasError() { // Recognition error - abort rule @@ -12163,7 +12257,7 @@ func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { case SecLangParserCOLLECTION_WITH_MACRO: { - p.SetState(621) + p.SetState(625) p.Match(SecLangParserCOLLECTION_WITH_MACRO) if p.HasError() { // Recognition error - abort rule @@ -12171,7 +12265,7 @@ func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { } } { - p.SetState(622) + p.SetState(626) p.Match(SecLangParserMACRO_EXPANSION) if p.HasError() { // Recognition error - abort rule @@ -12184,7 +12278,7 @@ func (p *SecLangParser) Setvar_stmt() (localctx ISetvar_stmtContext) { goto errorExit } - p.SetState(625) + p.SetState(629) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12287,12 +12381,12 @@ func (s *AssignmentContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Assignment() (localctx IAssignmentContext) { localctx = NewAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, SecLangParserRULE_assignment) + p.EnterRule(localctx, 124, SecLangParserRULE_assignment) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(627) + p.SetState(631) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&104) != 0) { @@ -12388,10 +12482,10 @@ func (s *Var_assignmentContext) ExitRule(listener antlr.ParseTreeListener) { func (p *SecLangParser) Var_assignment() (localctx IVar_assignmentContext) { localctx = NewVar_assignmentContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, SecLangParserRULE_var_assignment) + p.EnterRule(localctx, 126, SecLangParserRULE_var_assignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(629) + p.SetState(633) p.Match(SecLangParserVAR_ASSIGNMENT) if p.HasError() { // Recognition error - abort rule @@ -12411,3 +12505,109 @@ errorExit: return localctx goto errorExit // Trick to prevent compiler error if the label is not used } + +// ICtl_idContext is an interface to support dynamic dispatch. +type ICtl_idContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + INT() antlr.TerminalNode + IDENT() antlr.TerminalNode + + // IsCtl_idContext differentiates from other interfaces. + IsCtl_idContext() +} + +type Ctl_idContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCtl_idContext() *Ctl_idContext { + var p = new(Ctl_idContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = SecLangParserRULE_ctl_id + return p +} + +func InitEmptyCtl_idContext(p *Ctl_idContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = SecLangParserRULE_ctl_id +} + +func (*Ctl_idContext) IsCtl_idContext() {} + +func NewCtl_idContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ctl_idContext { + var p = new(Ctl_idContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = SecLangParserRULE_ctl_id + + return p +} + +func (s *Ctl_idContext) GetParser() antlr.Parser { return s.parser } + +func (s *Ctl_idContext) INT() antlr.TerminalNode { + return s.GetToken(SecLangParserINT, 0) +} + +func (s *Ctl_idContext) IDENT() antlr.TerminalNode { + return s.GetToken(SecLangParserIDENT, 0) +} + +func (s *Ctl_idContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Ctl_idContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Ctl_idContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SecLangParserListener); ok { + listenerT.EnterCtl_id(s) + } +} + +func (s *Ctl_idContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SecLangParserListener); ok { + listenerT.ExitCtl_id(s) + } +} + +func (p *SecLangParser) Ctl_id() (localctx ICtl_idContext) { + localctx = NewCtl_idContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 128, SecLangParserRULE_ctl_id) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(635) + _la = p.GetTokenStream().LA(1) + + if !(_la == SecLangParserIDENT || _la == SecLangParserINT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} diff --git a/parser/seclangparser_base_listener.go b/parser/seclangparser_base_listener.go index 5a827d7..46f5401 100644 --- a/parser/seclangparser_base_listener.go +++ b/parser/seclangparser_base_listener.go @@ -136,6 +136,14 @@ func (s *BaseSecLangParserListener) EnterRemove_rule_by_tag(ctx *Remove_rule_by_ // ExitRemove_rule_by_tag is called when production remove_rule_by_tag is exited. func (s *BaseSecLangParserListener) ExitRemove_rule_by_tag(ctx *Remove_rule_by_tagContext) {} +// EnterString_remove_rules_values is called when production string_remove_rules_values is entered. +func (s *BaseSecLangParserListener) EnterString_remove_rules_values(ctx *String_remove_rules_valuesContext) { +} + +// ExitString_remove_rules_values is called when production string_remove_rules_values is exited. +func (s *BaseSecLangParserListener) ExitString_remove_rules_values(ctx *String_remove_rules_valuesContext) { +} + // EnterUpdate_target_by_id is called when production update_target_by_id is entered. func (s *BaseSecLangParserListener) EnterUpdate_target_by_id(ctx *Update_target_by_idContext) {} @@ -497,3 +505,9 @@ func (s *BaseSecLangParserListener) EnterVar_assignment(ctx *Var_assignmentConte // ExitVar_assignment is called when production var_assignment is exited. func (s *BaseSecLangParserListener) ExitVar_assignment(ctx *Var_assignmentContext) {} + +// EnterCtl_id is called when production ctl_id is entered. +func (s *BaseSecLangParserListener) EnterCtl_id(ctx *Ctl_idContext) {} + +// ExitCtl_id is called when production ctl_id is exited. +func (s *BaseSecLangParserListener) ExitCtl_id(ctx *Ctl_idContext) {} diff --git a/parser/seclangparser_listener.go b/parser/seclangparser_listener.go index e28c849..a961996 100644 --- a/parser/seclangparser_listener.go +++ b/parser/seclangparser_listener.go @@ -61,6 +61,9 @@ type SecLangParserListener interface { // EnterRemove_rule_by_tag is called when entering the remove_rule_by_tag production. EnterRemove_rule_by_tag(c *Remove_rule_by_tagContext) + // EnterString_remove_rules_values is called when entering the string_remove_rules_values production. + EnterString_remove_rules_values(c *String_remove_rules_valuesContext) + // EnterUpdate_target_by_id is called when entering the update_target_by_id production. EnterUpdate_target_by_id(c *Update_target_by_idContext) @@ -232,6 +235,9 @@ type SecLangParserListener interface { // EnterVar_assignment is called when entering the var_assignment production. EnterVar_assignment(c *Var_assignmentContext) + // EnterCtl_id is called when entering the ctl_id production. + EnterCtl_id(c *Ctl_idContext) + // ExitConfiguration is called when exiting the configuration production. ExitConfiguration(c *ConfigurationContext) @@ -286,6 +292,9 @@ type SecLangParserListener interface { // ExitRemove_rule_by_tag is called when exiting the remove_rule_by_tag production. ExitRemove_rule_by_tag(c *Remove_rule_by_tagContext) + // ExitString_remove_rules_values is called when exiting the string_remove_rules_values production. + ExitString_remove_rules_values(c *String_remove_rules_valuesContext) + // ExitUpdate_target_by_id is called when exiting the update_target_by_id production. ExitUpdate_target_by_id(c *Update_target_by_idContext) @@ -456,4 +465,7 @@ type SecLangParserListener interface { // ExitVar_assignment is called when exiting the var_assignment production. ExitVar_assignment(c *Var_assignmentContext) + + // ExitCtl_id is called when exiting the ctl_id production. + ExitCtl_id(c *Ctl_idContext) } diff --git a/src/seclang_parser/SecLangParser.py b/src/seclang_parser/SecLangParser.py index e6cfb4e..023f2f3 100644 --- a/src/seclang_parser/SecLangParser.py +++ b/src/seclang_parser/SecLangParser.py @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,1,265,632,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,265,638,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -19,239 +19,241 @@ def serializedATN(): 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, - 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,1,0,5,0,128,8,0,10,0,12,0, - 131,9,0,1,0,1,0,1,1,3,1,136,8,1,1,1,1,1,1,1,1,1,3,1,142,8,1,1,1, - 3,1,145,8,1,1,1,1,1,1,1,3,1,150,8,1,1,1,3,1,153,8,1,1,1,1,1,1,1, - 1,1,1,1,3,1,160,8,1,1,1,3,1,163,8,1,1,1,1,1,4,1,167,8,1,11,1,12, - 1,168,1,1,3,1,172,8,1,1,1,1,1,1,1,1,1,3,1,178,8,1,1,1,1,1,1,1,1, - 1,1,1,1,1,3,1,186,8,1,1,1,1,1,1,1,1,1,1,1,3,1,193,8,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,3,1,202,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,211, - 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,222,8,1,1,1,1,1,1,1, - 1,1,1,1,3,1,229,8,1,1,1,1,1,3,1,233,8,1,1,2,1,2,1,3,1,3,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,267,8,4,1,5,1,5,1,5, - 1,5,3,5,273,8,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1, - 11,3,11,287,8,11,1,12,1,12,1,12,1,12,1,13,1,13,1,14,1,14,1,15,1, - 15,3,15,299,8,15,1,16,1,16,1,16,3,16,304,8,16,1,17,1,17,1,18,1,18, - 1,19,1,19,1,20,1,20,1,20,1,20,5,20,316,8,20,10,20,12,20,319,9,20, - 1,20,1,20,1,21,1,21,1,21,1,21,1,22,1,22,1,23,1,23,3,23,331,8,23, - 1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, - 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25, - 358,8,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,367,8,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,378,8,26,1,26,1,26,1, - 26,1,26,3,26,384,8,26,3,26,386,8,26,1,27,1,27,1,27,3,27,391,8,27, - 1,28,1,28,1,29,1,29,3,29,397,8,29,1,29,1,29,1,29,3,29,402,8,29,1, - 29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,411,8,29,1,30,1,30,1,31,1, - 31,1,31,1,31,3,31,419,8,31,1,31,1,31,1,31,3,31,424,8,31,5,31,426, - 8,31,10,31,12,31,429,9,31,1,31,1,31,3,31,433,8,31,1,32,1,32,1,33, - 1,33,1,34,3,34,440,8,34,1,34,3,34,443,8,34,1,34,3,34,446,8,34,1, - 34,1,34,3,34,450,8,34,1,34,1,34,3,34,454,8,34,1,34,3,34,457,8,34, - 1,34,1,34,3,34,461,8,34,5,34,463,8,34,10,34,12,34,466,9,34,1,35, - 3,35,469,8,35,1,35,3,35,472,8,35,1,35,3,35,475,8,35,1,35,1,35,3, - 35,479,8,35,1,35,1,35,3,35,483,8,35,1,35,3,35,486,8,35,1,35,1,35, - 3,35,490,8,35,5,35,492,8,35,10,35,12,35,495,9,35,1,36,1,36,1,37, - 1,37,1,37,1,37,3,37,503,8,37,3,37,505,8,37,1,38,1,38,1,39,1,39,1, - 40,1,40,1,40,1,40,5,40,515,8,40,10,40,12,40,518,9,40,1,40,1,40,1, - 41,1,41,1,41,3,41,525,8,41,1,41,3,41,528,8,41,1,41,1,41,1,41,1,41, - 1,41,1,41,1,41,3,41,537,8,41,1,42,1,42,1,42,1,42,1,42,1,42,3,42, - 545,8,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1,46,1,46,1,46, - 3,46,558,8,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,568,8, - 47,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,3,52,587,8,52,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,3,53,600,8,53,1,54,1,54,1,55,1,55,1, - 56,1,56,1,57,1,57,1,57,3,57,611,8,57,1,58,1,58,1,58,1,58,1,58,1, - 58,1,59,1,59,1,60,1,60,1,60,4,60,624,8,60,11,60,12,60,625,1,61,1, - 61,1,62,1,62,1,62,0,0,63,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28, - 30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72, - 74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112, - 114,116,118,120,122,124,0,13,8,0,133,141,152,169,171,177,180,180, - 182,182,184,185,187,187,211,218,3,0,142,151,195,199,229,229,1,0, - 91,127,1,0,87,88,2,0,86,86,89,89,5,0,28,28,31,31,45,45,47,47,59, - 60,5,0,30,30,32,32,53,53,56,58,68,68,1,0,63,64,8,0,29,29,34,34,46, - 46,48,49,51,52,62,62,66,67,69,75,2,0,80,80,83,83,1,0,78,79,1,0,35, - 44,2,0,3,3,5,6,704,0,129,1,0,0,0,2,232,1,0,0,0,4,234,1,0,0,0,6,236, - 1,0,0,0,8,266,1,0,0,0,10,272,1,0,0,0,12,274,1,0,0,0,14,276,1,0,0, - 0,16,278,1,0,0,0,18,280,1,0,0,0,20,282,1,0,0,0,22,286,1,0,0,0,24, - 288,1,0,0,0,26,292,1,0,0,0,28,294,1,0,0,0,30,298,1,0,0,0,32,303, - 1,0,0,0,34,305,1,0,0,0,36,307,1,0,0,0,38,309,1,0,0,0,40,311,1,0, - 0,0,42,322,1,0,0,0,44,326,1,0,0,0,46,330,1,0,0,0,48,332,1,0,0,0, - 50,357,1,0,0,0,52,385,1,0,0,0,54,390,1,0,0,0,56,392,1,0,0,0,58,410, - 1,0,0,0,60,412,1,0,0,0,62,432,1,0,0,0,64,434,1,0,0,0,66,436,1,0, - 0,0,68,439,1,0,0,0,70,468,1,0,0,0,72,496,1,0,0,0,74,504,1,0,0,0, - 76,506,1,0,0,0,78,508,1,0,0,0,80,510,1,0,0,0,82,536,1,0,0,0,84,544, - 1,0,0,0,86,546,1,0,0,0,88,548,1,0,0,0,90,550,1,0,0,0,92,557,1,0, - 0,0,94,567,1,0,0,0,96,569,1,0,0,0,98,571,1,0,0,0,100,573,1,0,0,0, - 102,575,1,0,0,0,104,586,1,0,0,0,106,599,1,0,0,0,108,601,1,0,0,0, - 110,603,1,0,0,0,112,605,1,0,0,0,114,610,1,0,0,0,116,612,1,0,0,0, - 118,618,1,0,0,0,120,623,1,0,0,0,122,627,1,0,0,0,124,629,1,0,0,0, - 126,128,3,2,1,0,127,126,1,0,0,0,128,131,1,0,0,0,129,127,1,0,0,0, - 129,130,1,0,0,0,130,132,1,0,0,0,131,129,1,0,0,0,132,133,5,0,0,1, - 133,1,1,0,0,0,134,136,3,4,2,0,135,134,1,0,0,0,135,136,1,0,0,0,136, - 137,1,0,0,0,137,138,3,6,3,0,138,139,3,68,34,0,139,141,3,58,29,0, - 140,142,3,80,40,0,141,140,1,0,0,0,141,142,1,0,0,0,142,233,1,0,0, - 0,143,145,3,4,2,0,144,143,1,0,0,0,144,145,1,0,0,0,145,146,1,0,0, - 0,146,147,3,16,8,0,147,149,3,18,9,0,148,150,3,80,40,0,149,148,1, - 0,0,0,149,150,1,0,0,0,150,233,1,0,0,0,151,153,3,4,2,0,152,151,1, - 0,0,0,152,153,1,0,0,0,153,154,1,0,0,0,154,155,3,16,8,0,155,156,5, - 1,0,0,156,157,3,18,9,0,157,159,5,1,0,0,158,160,3,80,40,0,159,158, - 1,0,0,0,159,160,1,0,0,0,160,233,1,0,0,0,161,163,3,4,2,0,162,161, - 1,0,0,0,162,163,1,0,0,0,163,164,1,0,0,0,164,166,3,20,10,0,165,167, - 3,22,11,0,166,165,1,0,0,0,167,168,1,0,0,0,168,166,1,0,0,0,168,169, - 1,0,0,0,169,233,1,0,0,0,170,172,3,4,2,0,171,170,1,0,0,0,171,172, - 1,0,0,0,172,173,1,0,0,0,173,174,3,30,15,0,174,175,3,50,25,0,175, - 233,1,0,0,0,176,178,3,4,2,0,177,176,1,0,0,0,177,178,1,0,0,0,178, - 179,1,0,0,0,179,180,3,30,15,0,180,181,5,1,0,0,181,182,3,50,25,0, - 182,183,5,1,0,0,183,233,1,0,0,0,184,186,3,4,2,0,185,184,1,0,0,0, - 185,186,1,0,0,0,186,187,1,0,0,0,187,188,3,32,16,0,188,189,3,54,27, - 0,189,190,3,70,35,0,190,233,1,0,0,0,191,193,3,4,2,0,192,191,1,0, - 0,0,192,193,1,0,0,0,193,194,1,0,0,0,194,195,3,32,16,0,195,196,5, - 1,0,0,196,197,3,54,27,0,197,198,5,1,0,0,198,199,3,70,35,0,199,233, - 1,0,0,0,200,202,3,4,2,0,201,200,1,0,0,0,201,202,1,0,0,0,202,203, - 1,0,0,0,203,204,3,32,16,0,204,205,3,54,27,0,205,206,3,70,35,0,206, - 207,5,8,0,0,207,208,3,72,36,0,208,233,1,0,0,0,209,211,3,4,2,0,210, - 209,1,0,0,0,210,211,1,0,0,0,211,212,1,0,0,0,212,213,3,32,16,0,213, - 214,5,1,0,0,214,215,3,54,27,0,215,216,5,1,0,0,216,217,3,70,35,0, - 217,218,5,8,0,0,218,219,3,72,36,0,219,233,1,0,0,0,220,222,3,4,2, - 0,221,220,1,0,0,0,221,222,1,0,0,0,222,223,1,0,0,0,223,224,3,34,17, - 0,224,225,3,36,18,0,225,226,3,80,40,0,226,233,1,0,0,0,227,229,3, - 4,2,0,228,227,1,0,0,0,228,229,1,0,0,0,229,230,1,0,0,0,230,233,3, - 8,4,0,231,233,3,4,2,0,232,135,1,0,0,0,232,144,1,0,0,0,232,152,1, - 0,0,0,232,162,1,0,0,0,232,171,1,0,0,0,232,177,1,0,0,0,232,185,1, - 0,0,0,232,192,1,0,0,0,232,201,1,0,0,0,232,210,1,0,0,0,232,221,1, - 0,0,0,232,228,1,0,0,0,232,231,1,0,0,0,233,3,1,0,0,0,234,235,5,12, - 0,0,235,5,1,0,0,0,236,237,5,219,0,0,237,7,1,0,0,0,238,239,3,48,24, - 0,239,240,3,50,25,0,240,267,1,0,0,0,241,242,3,48,24,0,242,243,5, - 1,0,0,243,244,3,50,25,0,244,245,5,1,0,0,245,267,1,0,0,0,246,247, - 3,46,23,0,247,248,3,80,40,0,248,267,1,0,0,0,249,250,3,10,5,0,250, - 251,5,1,0,0,251,252,3,50,25,0,252,253,5,1,0,0,253,267,1,0,0,0,254, - 255,3,12,6,0,255,256,5,1,0,0,256,257,3,50,25,0,257,258,5,1,0,0,258, - 267,1,0,0,0,259,260,3,14,7,0,260,261,3,50,25,0,261,267,1,0,0,0,262, - 263,3,38,19,0,263,264,3,50,25,0,264,265,3,40,20,0,265,267,1,0,0, - 0,266,238,1,0,0,0,266,241,1,0,0,0,266,246,1,0,0,0,266,249,1,0,0, - 0,266,254,1,0,0,0,266,259,1,0,0,0,266,262,1,0,0,0,267,9,1,0,0,0, - 268,273,1,0,0,0,269,273,5,129,0,0,270,273,5,130,0,0,271,273,5,131, - 0,0,272,268,1,0,0,0,272,269,1,0,0,0,272,270,1,0,0,0,272,271,1,0, - 0,0,273,11,1,0,0,0,274,275,5,181,0,0,275,13,1,0,0,0,276,277,7,0, - 0,0,277,15,1,0,0,0,278,279,5,220,0,0,279,17,1,0,0,0,280,281,5,9, - 0,0,281,19,1,0,0,0,282,283,5,188,0,0,283,21,1,0,0,0,284,287,5,229, - 0,0,285,287,3,24,12,0,286,284,1,0,0,0,286,285,1,0,0,0,287,23,1,0, - 0,0,288,289,3,26,13,0,289,290,5,15,0,0,290,291,3,28,14,0,291,25, - 1,0,0,0,292,293,5,229,0,0,293,27,1,0,0,0,294,295,5,229,0,0,295,29, - 1,0,0,0,296,299,5,189,0,0,297,299,5,190,0,0,298,296,1,0,0,0,298, - 297,1,0,0,0,299,31,1,0,0,0,300,304,5,193,0,0,301,304,5,192,0,0,302, - 304,5,191,0,0,303,300,1,0,0,0,303,301,1,0,0,0,303,302,1,0,0,0,304, - 33,1,0,0,0,305,306,5,194,0,0,306,35,1,0,0,0,307,308,5,229,0,0,308, - 37,1,0,0,0,309,310,5,132,0,0,310,39,1,0,0,0,311,312,5,1,0,0,312, - 317,3,42,21,0,313,314,5,7,0,0,314,316,3,42,21,0,315,313,1,0,0,0, - 316,319,1,0,0,0,317,315,1,0,0,0,317,318,1,0,0,0,318,320,1,0,0,0, - 319,317,1,0,0,0,320,321,5,1,0,0,321,41,1,0,0,0,322,323,3,44,22,0, - 323,324,5,4,0,0,324,325,3,50,25,0,325,43,1,0,0,0,326,327,5,221,0, - 0,327,45,1,0,0,0,328,331,5,178,0,0,329,331,5,179,0,0,330,328,1,0, - 0,0,330,329,1,0,0,0,331,47,1,0,0,0,332,333,7,1,0,0,333,49,1,0,0, - 0,334,358,5,229,0,0,335,358,3,24,12,0,336,358,5,204,0,0,337,358, - 5,203,0,0,338,358,5,209,0,0,339,358,5,205,0,0,340,358,5,202,0,0, - 341,358,5,208,0,0,342,358,5,225,0,0,343,358,5,200,0,0,344,358,5, - 210,0,0,345,358,5,201,0,0,346,358,5,206,0,0,347,358,5,207,0,0,348, - 349,5,9,0,0,349,358,5,229,0,0,350,358,5,9,0,0,351,358,5,235,0,0, - 352,358,5,227,0,0,353,358,5,243,0,0,354,358,5,247,0,0,355,358,5, - 128,0,0,356,358,3,52,26,0,357,334,1,0,0,0,357,335,1,0,0,0,357,336, - 1,0,0,0,357,337,1,0,0,0,357,338,1,0,0,0,357,339,1,0,0,0,357,340, - 1,0,0,0,357,341,1,0,0,0,357,342,1,0,0,0,357,343,1,0,0,0,357,344, - 1,0,0,0,357,345,1,0,0,0,357,346,1,0,0,0,357,347,1,0,0,0,357,348, - 1,0,0,0,357,350,1,0,0,0,357,351,1,0,0,0,357,352,1,0,0,0,357,353, - 1,0,0,0,357,354,1,0,0,0,357,355,1,0,0,0,357,356,1,0,0,0,358,51,1, - 0,0,0,359,367,5,229,0,0,360,367,5,228,0,0,361,362,5,2,0,0,362,363, - 3,108,54,0,363,364,5,2,0,0,364,367,1,0,0,0,365,367,5,227,0,0,366, - 359,1,0,0,0,366,360,1,0,0,0,366,361,1,0,0,0,366,365,1,0,0,0,367, - 368,1,0,0,0,368,369,5,19,0,0,369,386,3,76,38,0,370,378,5,229,0,0, - 371,378,5,228,0,0,372,373,5,2,0,0,373,374,3,108,54,0,374,375,5,2, - 0,0,375,378,1,0,0,0,376,378,5,227,0,0,377,370,1,0,0,0,377,371,1, - 0,0,0,377,372,1,0,0,0,377,376,1,0,0,0,378,379,1,0,0,0,379,380,5, - 19,0,0,380,383,3,78,39,0,381,382,5,4,0,0,382,384,3,114,57,0,383, - 381,1,0,0,0,383,384,1,0,0,0,384,386,1,0,0,0,385,366,1,0,0,0,385, - 377,1,0,0,0,386,53,1,0,0,0,387,391,5,229,0,0,388,391,3,24,12,0,389, - 391,5,235,0,0,390,387,1,0,0,0,390,388,1,0,0,0,390,389,1,0,0,0,391, - 55,1,0,0,0,392,393,5,10,0,0,393,57,1,0,0,0,394,396,5,1,0,0,395,397, - 3,56,28,0,396,395,1,0,0,0,396,397,1,0,0,0,397,398,1,0,0,0,398,399, - 5,257,0,0,399,401,3,60,30,0,400,402,3,62,31,0,401,400,1,0,0,0,401, - 402,1,0,0,0,402,403,1,0,0,0,403,404,5,1,0,0,404,411,1,0,0,0,405, - 406,5,1,0,0,406,407,3,62,31,0,407,408,5,1,0,0,408,411,1,0,0,0,409, - 411,3,62,31,0,410,394,1,0,0,0,410,405,1,0,0,0,410,409,1,0,0,0,411, - 59,1,0,0,0,412,413,7,2,0,0,413,61,1,0,0,0,414,433,3,76,38,0,415, - 433,5,235,0,0,416,419,5,229,0,0,417,419,3,24,12,0,418,416,1,0,0, - 0,418,417,1,0,0,0,419,427,1,0,0,0,420,423,5,7,0,0,421,424,5,229, - 0,0,422,424,3,24,12,0,423,421,1,0,0,0,423,422,1,0,0,0,424,426,1, - 0,0,0,425,420,1,0,0,0,426,429,1,0,0,0,427,425,1,0,0,0,427,428,1, - 0,0,0,428,433,1,0,0,0,429,427,1,0,0,0,430,433,5,256,0,0,431,433, - 5,258,0,0,432,414,1,0,0,0,432,415,1,0,0,0,432,418,1,0,0,0,432,430, - 1,0,0,0,432,431,1,0,0,0,433,63,1,0,0,0,434,435,5,10,0,0,435,65,1, - 0,0,0,436,437,5,90,0,0,437,67,1,0,0,0,438,440,5,1,0,0,439,438,1, - 0,0,0,439,440,1,0,0,0,440,442,1,0,0,0,441,443,3,64,32,0,442,441, - 1,0,0,0,442,443,1,0,0,0,443,445,1,0,0,0,444,446,3,66,33,0,445,444, - 1,0,0,0,445,446,1,0,0,0,446,447,1,0,0,0,447,449,3,74,37,0,448,450, - 5,1,0,0,449,448,1,0,0,0,449,450,1,0,0,0,450,464,1,0,0,0,451,453, - 5,8,0,0,452,454,5,1,0,0,453,452,1,0,0,0,453,454,1,0,0,0,454,456, - 1,0,0,0,455,457,3,64,32,0,456,455,1,0,0,0,456,457,1,0,0,0,457,458, - 1,0,0,0,458,460,3,74,37,0,459,461,5,1,0,0,460,459,1,0,0,0,460,461, - 1,0,0,0,461,463,1,0,0,0,462,451,1,0,0,0,463,466,1,0,0,0,464,462, - 1,0,0,0,464,465,1,0,0,0,465,69,1,0,0,0,466,464,1,0,0,0,467,469,5, - 1,0,0,468,467,1,0,0,0,468,469,1,0,0,0,469,471,1,0,0,0,470,472,3, - 64,32,0,471,470,1,0,0,0,471,472,1,0,0,0,472,474,1,0,0,0,473,475, - 3,66,33,0,474,473,1,0,0,0,474,475,1,0,0,0,475,476,1,0,0,0,476,478, - 3,74,37,0,477,479,5,1,0,0,478,477,1,0,0,0,478,479,1,0,0,0,479,493, - 1,0,0,0,480,482,5,7,0,0,481,483,5,1,0,0,482,481,1,0,0,0,482,483, - 1,0,0,0,483,485,1,0,0,0,484,486,3,64,32,0,485,484,1,0,0,0,485,486, - 1,0,0,0,486,487,1,0,0,0,487,489,3,74,37,0,488,490,5,1,0,0,489,488, - 1,0,0,0,489,490,1,0,0,0,490,492,1,0,0,0,491,480,1,0,0,0,492,495, - 1,0,0,0,493,491,1,0,0,0,493,494,1,0,0,0,494,71,1,0,0,0,495,493,1, - 0,0,0,496,497,3,74,37,0,497,73,1,0,0,0,498,505,3,76,38,0,499,502, - 3,78,39,0,500,501,5,4,0,0,501,503,3,114,57,0,502,500,1,0,0,0,502, - 503,1,0,0,0,503,505,1,0,0,0,504,498,1,0,0,0,504,499,1,0,0,0,505, - 75,1,0,0,0,506,507,7,3,0,0,507,77,1,0,0,0,508,509,7,4,0,0,509,79, - 1,0,0,0,510,511,5,1,0,0,511,516,3,82,41,0,512,513,5,7,0,0,513,515, - 3,82,41,0,514,512,1,0,0,0,515,518,1,0,0,0,516,514,1,0,0,0,516,517, - 1,0,0,0,517,519,1,0,0,0,518,516,1,0,0,0,519,520,5,1,0,0,520,81,1, - 0,0,0,521,522,3,92,46,0,522,524,5,4,0,0,523,525,5,10,0,0,524,523, - 1,0,0,0,524,525,1,0,0,0,525,527,1,0,0,0,526,528,5,3,0,0,527,526, - 1,0,0,0,527,528,1,0,0,0,528,529,1,0,0,0,529,530,3,104,52,0,530,537, - 1,0,0,0,531,532,3,92,46,0,532,533,5,4,0,0,533,534,3,104,52,0,534, - 537,1,0,0,0,535,537,3,84,42,0,536,521,1,0,0,0,536,531,1,0,0,0,536, - 535,1,0,0,0,537,83,1,0,0,0,538,545,3,86,43,0,539,545,3,88,44,0,540, - 545,3,90,45,0,541,542,5,84,0,0,542,543,5,4,0,0,543,545,3,112,56, - 0,544,538,1,0,0,0,544,539,1,0,0,0,544,540,1,0,0,0,544,541,1,0,0, - 0,545,85,1,0,0,0,546,547,7,5,0,0,547,87,1,0,0,0,548,549,7,6,0,0, - 549,89,1,0,0,0,550,551,5,33,0,0,551,91,1,0,0,0,552,558,3,94,47,0, - 553,558,3,96,48,0,554,558,3,98,49,0,555,558,3,102,51,0,556,558,3, - 100,50,0,557,552,1,0,0,0,557,553,1,0,0,0,557,554,1,0,0,0,557,555, - 1,0,0,0,557,556,1,0,0,0,558,93,1,0,0,0,559,568,5,61,0,0,560,568, - 5,50,0,0,561,568,5,54,0,0,562,568,5,55,0,0,563,568,5,65,0,0,564, - 568,5,76,0,0,565,568,5,81,0,0,566,568,5,82,0,0,567,559,1,0,0,0,567, - 560,1,0,0,0,567,561,1,0,0,0,567,562,1,0,0,0,567,563,1,0,0,0,567, - 564,1,0,0,0,567,565,1,0,0,0,567,566,1,0,0,0,568,95,1,0,0,0,569,570, - 7,7,0,0,570,97,1,0,0,0,571,572,7,8,0,0,572,99,1,0,0,0,573,574,7, - 9,0,0,574,101,1,0,0,0,575,576,7,10,0,0,576,103,1,0,0,0,577,587,3, - 106,53,0,578,579,5,2,0,0,579,580,3,106,53,0,580,581,5,2,0,0,581, - 587,1,0,0,0,582,583,5,2,0,0,583,584,3,108,54,0,584,585,5,2,0,0,585, - 587,1,0,0,0,586,577,1,0,0,0,586,578,1,0,0,0,586,582,1,0,0,0,587, - 105,1,0,0,0,588,600,5,229,0,0,589,600,3,114,57,0,590,600,3,116,58, - 0,591,592,3,110,55,0,592,593,3,122,61,0,593,594,3,50,25,0,594,600, - 1,0,0,0,595,600,5,227,0,0,596,600,5,77,0,0,597,600,5,233,0,0,598, - 600,5,243,0,0,599,588,1,0,0,0,599,589,1,0,0,0,599,590,1,0,0,0,599, - 591,1,0,0,0,599,595,1,0,0,0,599,596,1,0,0,0,599,597,1,0,0,0,599, - 598,1,0,0,0,600,107,1,0,0,0,601,602,5,248,0,0,602,109,1,0,0,0,603, - 604,7,11,0,0,604,111,1,0,0,0,605,606,5,85,0,0,606,113,1,0,0,0,607, - 611,1,0,0,0,608,611,5,245,0,0,609,611,5,252,0,0,610,607,1,0,0,0, - 610,608,1,0,0,0,610,609,1,0,0,0,611,115,1,0,0,0,612,613,3,118,59, - 0,613,614,5,238,0,0,614,615,3,120,60,0,615,616,3,122,61,0,616,617, - 3,124,62,0,617,117,1,0,0,0,618,619,5,237,0,0,619,119,1,0,0,0,620, - 624,5,239,0,0,621,622,5,240,0,0,622,624,5,236,0,0,623,620,1,0,0, - 0,623,621,1,0,0,0,624,625,1,0,0,0,625,623,1,0,0,0,625,626,1,0,0, - 0,626,121,1,0,0,0,627,628,7,12,0,0,628,123,1,0,0,0,629,630,5,241, - 0,0,630,125,1,0,0,0,68,129,135,141,144,149,152,159,162,168,171,177, - 185,192,201,210,221,228,232,266,272,286,298,303,317,330,357,366, - 377,383,385,390,396,401,410,418,423,427,432,439,442,445,449,453, - 456,460,464,468,471,474,478,482,485,489,493,502,504,516,524,527, - 536,544,557,567,586,599,610,623,625 + 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,1,0,5, + 0,132,8,0,10,0,12,0,135,9,0,1,0,1,0,1,1,3,1,140,8,1,1,1,1,1,1,1, + 1,1,3,1,146,8,1,1,1,3,1,149,8,1,1,1,1,1,1,1,3,1,154,8,1,1,1,3,1, + 157,8,1,1,1,1,1,1,1,1,1,1,1,3,1,164,8,1,1,1,3,1,167,8,1,1,1,1,1, + 4,1,171,8,1,11,1,12,1,172,1,1,3,1,176,8,1,1,1,1,1,1,1,1,1,3,1,182, + 8,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,190,8,1,1,1,1,1,1,1,1,1,1,1,3,1, + 197,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,206,8,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,3,1,215,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1, + 226,8,1,1,1,1,1,1,1,1,1,1,1,3,1,233,8,1,1,1,1,1,3,1,237,8,1,1,2, + 1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4, + 271,8,4,1,5,1,5,1,5,1,5,3,5,277,8,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9, + 1,9,1,10,1,10,1,11,1,11,3,11,291,8,11,1,12,1,12,1,12,1,12,1,13,1, + 13,1,14,1,14,1,15,1,15,3,15,303,8,15,1,16,1,16,1,17,1,17,1,17,3, + 17,310,8,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,21,1,21,5, + 21,322,8,21,10,21,12,21,325,9,21,1,21,1,21,1,22,1,22,1,22,1,22,1, + 23,1,23,1,24,1,24,3,24,337,8,24,1,25,1,25,1,26,1,26,1,26,1,26,1, + 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1, + 26,1,26,1,26,1,26,1,26,1,26,3,26,364,8,26,1,27,1,27,1,27,1,27,1, + 27,1,27,3,27,372,8,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3, + 27,382,8,27,1,27,1,27,1,27,1,27,3,27,388,8,27,3,27,390,8,27,1,28, + 1,28,1,28,3,28,395,8,28,1,29,1,29,1,30,1,30,3,30,401,8,30,1,30,1, + 30,1,30,3,30,406,8,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,415, + 8,30,1,31,1,31,1,32,1,32,1,32,1,32,3,32,423,8,32,1,32,1,32,1,32, + 3,32,428,8,32,5,32,430,8,32,10,32,12,32,433,9,32,1,32,1,32,3,32, + 437,8,32,1,33,1,33,1,34,1,34,1,35,3,35,444,8,35,1,35,3,35,447,8, + 35,1,35,3,35,450,8,35,1,35,1,35,3,35,454,8,35,1,35,1,35,3,35,458, + 8,35,1,35,3,35,461,8,35,1,35,1,35,3,35,465,8,35,5,35,467,8,35,10, + 35,12,35,470,9,35,1,36,3,36,473,8,36,1,36,3,36,476,8,36,1,36,3,36, + 479,8,36,1,36,1,36,3,36,483,8,36,1,36,1,36,3,36,487,8,36,1,36,3, + 36,490,8,36,1,36,1,36,3,36,494,8,36,5,36,496,8,36,10,36,12,36,499, + 9,36,1,37,1,37,1,38,1,38,1,38,1,38,3,38,507,8,38,3,38,509,8,38,1, + 39,1,39,1,40,1,40,1,41,1,41,1,41,1,41,5,41,519,8,41,10,41,12,41, + 522,9,41,1,41,1,41,1,42,1,42,1,42,3,42,529,8,42,1,42,3,42,532,8, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,541,8,42,1,43,1,43,1, + 43,1,43,1,43,1,43,3,43,549,8,43,1,44,1,44,1,45,1,45,1,46,1,46,1, + 47,1,47,1,47,1,47,1,47,3,47,562,8,47,1,48,1,48,1,48,1,48,1,48,1, + 48,1,48,1,48,3,48,572,8,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1, + 52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,591,8,53,1, + 54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,604,8, + 54,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,58,3,58,615,8,58,1, + 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,61,1,61,1,61,4,61,628,8, + 61,11,61,12,61,629,1,62,1,62,1,63,1,63,1,64,1,64,1,64,0,0,65,0,2, + 4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48, + 50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92, + 94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, + 128,0,15,8,0,133,141,152,169,171,177,180,180,182,182,184,185,187, + 187,211,218,3,0,227,227,235,235,243,243,3,0,142,151,195,199,229, + 229,1,0,91,127,1,0,87,88,2,0,86,86,89,89,5,0,28,28,31,31,45,45,47, + 47,59,60,5,0,30,30,32,32,53,53,56,58,68,68,1,0,63,64,8,0,29,29,34, + 34,46,46,48,49,51,52,62,62,66,67,69,75,2,0,80,80,83,83,1,0,78,79, + 1,0,35,44,2,0,3,3,5,6,1,0,228,229,706,0,133,1,0,0,0,2,236,1,0,0, + 0,4,238,1,0,0,0,6,240,1,0,0,0,8,270,1,0,0,0,10,276,1,0,0,0,12,278, + 1,0,0,0,14,280,1,0,0,0,16,282,1,0,0,0,18,284,1,0,0,0,20,286,1,0, + 0,0,22,290,1,0,0,0,24,292,1,0,0,0,26,296,1,0,0,0,28,298,1,0,0,0, + 30,302,1,0,0,0,32,304,1,0,0,0,34,309,1,0,0,0,36,311,1,0,0,0,38,313, + 1,0,0,0,40,315,1,0,0,0,42,317,1,0,0,0,44,328,1,0,0,0,46,332,1,0, + 0,0,48,336,1,0,0,0,50,338,1,0,0,0,52,363,1,0,0,0,54,389,1,0,0,0, + 56,394,1,0,0,0,58,396,1,0,0,0,60,414,1,0,0,0,62,416,1,0,0,0,64,436, + 1,0,0,0,66,438,1,0,0,0,68,440,1,0,0,0,70,443,1,0,0,0,72,472,1,0, + 0,0,74,500,1,0,0,0,76,508,1,0,0,0,78,510,1,0,0,0,80,512,1,0,0,0, + 82,514,1,0,0,0,84,540,1,0,0,0,86,548,1,0,0,0,88,550,1,0,0,0,90,552, + 1,0,0,0,92,554,1,0,0,0,94,561,1,0,0,0,96,571,1,0,0,0,98,573,1,0, + 0,0,100,575,1,0,0,0,102,577,1,0,0,0,104,579,1,0,0,0,106,590,1,0, + 0,0,108,603,1,0,0,0,110,605,1,0,0,0,112,607,1,0,0,0,114,609,1,0, + 0,0,116,614,1,0,0,0,118,616,1,0,0,0,120,622,1,0,0,0,122,627,1,0, + 0,0,124,631,1,0,0,0,126,633,1,0,0,0,128,635,1,0,0,0,130,132,3,2, + 1,0,131,130,1,0,0,0,132,135,1,0,0,0,133,131,1,0,0,0,133,134,1,0, + 0,0,134,136,1,0,0,0,135,133,1,0,0,0,136,137,5,0,0,1,137,1,1,0,0, + 0,138,140,3,4,2,0,139,138,1,0,0,0,139,140,1,0,0,0,140,141,1,0,0, + 0,141,142,3,6,3,0,142,143,3,70,35,0,143,145,3,60,30,0,144,146,3, + 82,41,0,145,144,1,0,0,0,145,146,1,0,0,0,146,237,1,0,0,0,147,149, + 3,4,2,0,148,147,1,0,0,0,148,149,1,0,0,0,149,150,1,0,0,0,150,151, + 3,16,8,0,151,153,3,18,9,0,152,154,3,82,41,0,153,152,1,0,0,0,153, + 154,1,0,0,0,154,237,1,0,0,0,155,157,3,4,2,0,156,155,1,0,0,0,156, + 157,1,0,0,0,157,158,1,0,0,0,158,159,3,16,8,0,159,160,5,1,0,0,160, + 161,3,18,9,0,161,163,5,1,0,0,162,164,3,82,41,0,163,162,1,0,0,0,163, + 164,1,0,0,0,164,237,1,0,0,0,165,167,3,4,2,0,166,165,1,0,0,0,166, + 167,1,0,0,0,167,168,1,0,0,0,168,170,3,20,10,0,169,171,3,22,11,0, + 170,169,1,0,0,0,171,172,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0, + 173,237,1,0,0,0,174,176,3,4,2,0,175,174,1,0,0,0,175,176,1,0,0,0, + 176,177,1,0,0,0,177,178,3,30,15,0,178,179,3,32,16,0,179,237,1,0, + 0,0,180,182,3,4,2,0,181,180,1,0,0,0,181,182,1,0,0,0,182,183,1,0, + 0,0,183,184,3,30,15,0,184,185,5,1,0,0,185,186,3,32,16,0,186,187, + 5,1,0,0,187,237,1,0,0,0,188,190,3,4,2,0,189,188,1,0,0,0,189,190, + 1,0,0,0,190,191,1,0,0,0,191,192,3,34,17,0,192,193,3,56,28,0,193, + 194,3,72,36,0,194,237,1,0,0,0,195,197,3,4,2,0,196,195,1,0,0,0,196, + 197,1,0,0,0,197,198,1,0,0,0,198,199,3,34,17,0,199,200,5,1,0,0,200, + 201,3,56,28,0,201,202,5,1,0,0,202,203,3,72,36,0,203,237,1,0,0,0, + 204,206,3,4,2,0,205,204,1,0,0,0,205,206,1,0,0,0,206,207,1,0,0,0, + 207,208,3,34,17,0,208,209,3,56,28,0,209,210,3,72,36,0,210,211,5, + 8,0,0,211,212,3,74,37,0,212,237,1,0,0,0,213,215,3,4,2,0,214,213, + 1,0,0,0,214,215,1,0,0,0,215,216,1,0,0,0,216,217,3,34,17,0,217,218, + 5,1,0,0,218,219,3,56,28,0,219,220,5,1,0,0,220,221,3,72,36,0,221, + 222,5,8,0,0,222,223,3,74,37,0,223,237,1,0,0,0,224,226,3,4,2,0,225, + 224,1,0,0,0,225,226,1,0,0,0,226,227,1,0,0,0,227,228,3,36,18,0,228, + 229,3,38,19,0,229,230,3,82,41,0,230,237,1,0,0,0,231,233,3,4,2,0, + 232,231,1,0,0,0,232,233,1,0,0,0,233,234,1,0,0,0,234,237,3,8,4,0, + 235,237,3,4,2,0,236,139,1,0,0,0,236,148,1,0,0,0,236,156,1,0,0,0, + 236,166,1,0,0,0,236,175,1,0,0,0,236,181,1,0,0,0,236,189,1,0,0,0, + 236,196,1,0,0,0,236,205,1,0,0,0,236,214,1,0,0,0,236,225,1,0,0,0, + 236,232,1,0,0,0,236,235,1,0,0,0,237,3,1,0,0,0,238,239,5,12,0,0,239, + 5,1,0,0,0,240,241,5,219,0,0,241,7,1,0,0,0,242,243,3,50,25,0,243, + 244,3,52,26,0,244,271,1,0,0,0,245,246,3,50,25,0,246,247,5,1,0,0, + 247,248,3,52,26,0,248,249,5,1,0,0,249,271,1,0,0,0,250,251,3,48,24, + 0,251,252,3,82,41,0,252,271,1,0,0,0,253,254,3,10,5,0,254,255,5,1, + 0,0,255,256,3,52,26,0,256,257,5,1,0,0,257,271,1,0,0,0,258,259,3, + 12,6,0,259,260,5,1,0,0,260,261,3,52,26,0,261,262,5,1,0,0,262,271, + 1,0,0,0,263,264,3,14,7,0,264,265,3,52,26,0,265,271,1,0,0,0,266,267, + 3,40,20,0,267,268,3,52,26,0,268,269,3,42,21,0,269,271,1,0,0,0,270, + 242,1,0,0,0,270,245,1,0,0,0,270,250,1,0,0,0,270,253,1,0,0,0,270, + 258,1,0,0,0,270,263,1,0,0,0,270,266,1,0,0,0,271,9,1,0,0,0,272,277, + 1,0,0,0,273,277,5,129,0,0,274,277,5,130,0,0,275,277,5,131,0,0,276, + 272,1,0,0,0,276,273,1,0,0,0,276,274,1,0,0,0,276,275,1,0,0,0,277, + 11,1,0,0,0,278,279,5,181,0,0,279,13,1,0,0,0,280,281,7,0,0,0,281, + 15,1,0,0,0,282,283,5,220,0,0,283,17,1,0,0,0,284,285,5,9,0,0,285, + 19,1,0,0,0,286,287,5,188,0,0,287,21,1,0,0,0,288,291,5,229,0,0,289, + 291,3,24,12,0,290,288,1,0,0,0,290,289,1,0,0,0,291,23,1,0,0,0,292, + 293,3,26,13,0,293,294,5,15,0,0,294,295,3,28,14,0,295,25,1,0,0,0, + 296,297,5,229,0,0,297,27,1,0,0,0,298,299,5,229,0,0,299,29,1,0,0, + 0,300,303,5,189,0,0,301,303,5,190,0,0,302,300,1,0,0,0,302,301,1, + 0,0,0,303,31,1,0,0,0,304,305,7,1,0,0,305,33,1,0,0,0,306,310,5,193, + 0,0,307,310,5,192,0,0,308,310,5,191,0,0,309,306,1,0,0,0,309,307, + 1,0,0,0,309,308,1,0,0,0,310,35,1,0,0,0,311,312,5,194,0,0,312,37, + 1,0,0,0,313,314,5,229,0,0,314,39,1,0,0,0,315,316,5,132,0,0,316,41, + 1,0,0,0,317,318,5,1,0,0,318,323,3,44,22,0,319,320,5,7,0,0,320,322, + 3,44,22,0,321,319,1,0,0,0,322,325,1,0,0,0,323,321,1,0,0,0,323,324, + 1,0,0,0,324,326,1,0,0,0,325,323,1,0,0,0,326,327,5,1,0,0,327,43,1, + 0,0,0,328,329,3,46,23,0,329,330,5,4,0,0,330,331,3,52,26,0,331,45, + 1,0,0,0,332,333,5,221,0,0,333,47,1,0,0,0,334,337,5,178,0,0,335,337, + 5,179,0,0,336,334,1,0,0,0,336,335,1,0,0,0,337,49,1,0,0,0,338,339, + 7,2,0,0,339,51,1,0,0,0,340,364,5,229,0,0,341,364,3,24,12,0,342,364, + 5,204,0,0,343,364,5,203,0,0,344,364,5,209,0,0,345,364,5,205,0,0, + 346,364,5,202,0,0,347,364,5,208,0,0,348,364,5,225,0,0,349,364,5, + 200,0,0,350,364,5,210,0,0,351,364,5,201,0,0,352,364,5,206,0,0,353, + 364,5,207,0,0,354,355,5,9,0,0,355,364,5,229,0,0,356,364,5,9,0,0, + 357,364,5,235,0,0,358,364,5,227,0,0,359,364,5,243,0,0,360,364,5, + 247,0,0,361,364,5,128,0,0,362,364,3,54,27,0,363,340,1,0,0,0,363, + 341,1,0,0,0,363,342,1,0,0,0,363,343,1,0,0,0,363,344,1,0,0,0,363, + 345,1,0,0,0,363,346,1,0,0,0,363,347,1,0,0,0,363,348,1,0,0,0,363, + 349,1,0,0,0,363,350,1,0,0,0,363,351,1,0,0,0,363,352,1,0,0,0,363, + 353,1,0,0,0,363,354,1,0,0,0,363,356,1,0,0,0,363,357,1,0,0,0,363, + 358,1,0,0,0,363,359,1,0,0,0,363,360,1,0,0,0,363,361,1,0,0,0,363, + 362,1,0,0,0,364,53,1,0,0,0,365,372,3,128,64,0,366,367,5,2,0,0,367, + 368,3,110,55,0,368,369,5,2,0,0,369,372,1,0,0,0,370,372,5,227,0,0, + 371,365,1,0,0,0,371,366,1,0,0,0,371,370,1,0,0,0,372,373,1,0,0,0, + 373,374,5,19,0,0,374,390,3,78,39,0,375,382,3,128,64,0,376,377,5, + 2,0,0,377,378,3,110,55,0,378,379,5,2,0,0,379,382,1,0,0,0,380,382, + 5,227,0,0,381,375,1,0,0,0,381,376,1,0,0,0,381,380,1,0,0,0,382,383, + 1,0,0,0,383,384,5,19,0,0,384,387,3,80,40,0,385,386,5,4,0,0,386,388, + 3,116,58,0,387,385,1,0,0,0,387,388,1,0,0,0,388,390,1,0,0,0,389,371, + 1,0,0,0,389,381,1,0,0,0,390,55,1,0,0,0,391,395,5,229,0,0,392,395, + 3,24,12,0,393,395,5,235,0,0,394,391,1,0,0,0,394,392,1,0,0,0,394, + 393,1,0,0,0,395,57,1,0,0,0,396,397,5,10,0,0,397,59,1,0,0,0,398,400, + 5,1,0,0,399,401,3,58,29,0,400,399,1,0,0,0,400,401,1,0,0,0,401,402, + 1,0,0,0,402,403,5,257,0,0,403,405,3,62,31,0,404,406,3,64,32,0,405, + 404,1,0,0,0,405,406,1,0,0,0,406,407,1,0,0,0,407,408,5,1,0,0,408, + 415,1,0,0,0,409,410,5,1,0,0,410,411,3,64,32,0,411,412,5,1,0,0,412, + 415,1,0,0,0,413,415,3,64,32,0,414,398,1,0,0,0,414,409,1,0,0,0,414, + 413,1,0,0,0,415,61,1,0,0,0,416,417,7,3,0,0,417,63,1,0,0,0,418,437, + 3,78,39,0,419,437,5,235,0,0,420,423,5,229,0,0,421,423,3,24,12,0, + 422,420,1,0,0,0,422,421,1,0,0,0,423,431,1,0,0,0,424,427,5,7,0,0, + 425,428,5,229,0,0,426,428,3,24,12,0,427,425,1,0,0,0,427,426,1,0, + 0,0,428,430,1,0,0,0,429,424,1,0,0,0,430,433,1,0,0,0,431,429,1,0, + 0,0,431,432,1,0,0,0,432,437,1,0,0,0,433,431,1,0,0,0,434,437,5,256, + 0,0,435,437,5,258,0,0,436,418,1,0,0,0,436,419,1,0,0,0,436,422,1, + 0,0,0,436,434,1,0,0,0,436,435,1,0,0,0,437,65,1,0,0,0,438,439,5,10, + 0,0,439,67,1,0,0,0,440,441,5,90,0,0,441,69,1,0,0,0,442,444,5,1,0, + 0,443,442,1,0,0,0,443,444,1,0,0,0,444,446,1,0,0,0,445,447,3,66,33, + 0,446,445,1,0,0,0,446,447,1,0,0,0,447,449,1,0,0,0,448,450,3,68,34, + 0,449,448,1,0,0,0,449,450,1,0,0,0,450,451,1,0,0,0,451,453,3,76,38, + 0,452,454,5,1,0,0,453,452,1,0,0,0,453,454,1,0,0,0,454,468,1,0,0, + 0,455,457,5,8,0,0,456,458,5,1,0,0,457,456,1,0,0,0,457,458,1,0,0, + 0,458,460,1,0,0,0,459,461,3,66,33,0,460,459,1,0,0,0,460,461,1,0, + 0,0,461,462,1,0,0,0,462,464,3,76,38,0,463,465,5,1,0,0,464,463,1, + 0,0,0,464,465,1,0,0,0,465,467,1,0,0,0,466,455,1,0,0,0,467,470,1, + 0,0,0,468,466,1,0,0,0,468,469,1,0,0,0,469,71,1,0,0,0,470,468,1,0, + 0,0,471,473,5,1,0,0,472,471,1,0,0,0,472,473,1,0,0,0,473,475,1,0, + 0,0,474,476,3,66,33,0,475,474,1,0,0,0,475,476,1,0,0,0,476,478,1, + 0,0,0,477,479,3,68,34,0,478,477,1,0,0,0,478,479,1,0,0,0,479,480, + 1,0,0,0,480,482,3,76,38,0,481,483,5,1,0,0,482,481,1,0,0,0,482,483, + 1,0,0,0,483,497,1,0,0,0,484,486,5,7,0,0,485,487,5,1,0,0,486,485, + 1,0,0,0,486,487,1,0,0,0,487,489,1,0,0,0,488,490,3,66,33,0,489,488, + 1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,493,3,76,38,0,492,494, + 5,1,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,496,1,0,0,0,495,484, + 1,0,0,0,496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,73,1, + 0,0,0,499,497,1,0,0,0,500,501,3,76,38,0,501,75,1,0,0,0,502,509,3, + 78,39,0,503,506,3,80,40,0,504,505,5,4,0,0,505,507,3,116,58,0,506, + 504,1,0,0,0,506,507,1,0,0,0,507,509,1,0,0,0,508,502,1,0,0,0,508, + 503,1,0,0,0,509,77,1,0,0,0,510,511,7,4,0,0,511,79,1,0,0,0,512,513, + 7,5,0,0,513,81,1,0,0,0,514,515,5,1,0,0,515,520,3,84,42,0,516,517, + 5,7,0,0,517,519,3,84,42,0,518,516,1,0,0,0,519,522,1,0,0,0,520,518, + 1,0,0,0,520,521,1,0,0,0,521,523,1,0,0,0,522,520,1,0,0,0,523,524, + 5,1,0,0,524,83,1,0,0,0,525,526,3,94,47,0,526,528,5,4,0,0,527,529, + 5,10,0,0,528,527,1,0,0,0,528,529,1,0,0,0,529,531,1,0,0,0,530,532, + 5,3,0,0,531,530,1,0,0,0,531,532,1,0,0,0,532,533,1,0,0,0,533,534, + 3,106,53,0,534,541,1,0,0,0,535,536,3,94,47,0,536,537,5,4,0,0,537, + 538,3,106,53,0,538,541,1,0,0,0,539,541,3,86,43,0,540,525,1,0,0,0, + 540,535,1,0,0,0,540,539,1,0,0,0,541,85,1,0,0,0,542,549,3,88,44,0, + 543,549,3,90,45,0,544,549,3,92,46,0,545,546,5,84,0,0,546,547,5,4, + 0,0,547,549,3,114,57,0,548,542,1,0,0,0,548,543,1,0,0,0,548,544,1, + 0,0,0,548,545,1,0,0,0,549,87,1,0,0,0,550,551,7,6,0,0,551,89,1,0, + 0,0,552,553,7,7,0,0,553,91,1,0,0,0,554,555,5,33,0,0,555,93,1,0,0, + 0,556,562,3,96,48,0,557,562,3,98,49,0,558,562,3,100,50,0,559,562, + 3,104,52,0,560,562,3,102,51,0,561,556,1,0,0,0,561,557,1,0,0,0,561, + 558,1,0,0,0,561,559,1,0,0,0,561,560,1,0,0,0,562,95,1,0,0,0,563,572, + 5,61,0,0,564,572,5,50,0,0,565,572,5,54,0,0,566,572,5,55,0,0,567, + 572,5,65,0,0,568,572,5,76,0,0,569,572,5,81,0,0,570,572,5,82,0,0, + 571,563,1,0,0,0,571,564,1,0,0,0,571,565,1,0,0,0,571,566,1,0,0,0, + 571,567,1,0,0,0,571,568,1,0,0,0,571,569,1,0,0,0,571,570,1,0,0,0, + 572,97,1,0,0,0,573,574,7,8,0,0,574,99,1,0,0,0,575,576,7,9,0,0,576, + 101,1,0,0,0,577,578,7,10,0,0,578,103,1,0,0,0,579,580,7,11,0,0,580, + 105,1,0,0,0,581,591,3,108,54,0,582,583,5,2,0,0,583,584,3,108,54, + 0,584,585,5,2,0,0,585,591,1,0,0,0,586,587,5,2,0,0,587,588,3,110, + 55,0,588,589,5,2,0,0,589,591,1,0,0,0,590,581,1,0,0,0,590,582,1,0, + 0,0,590,586,1,0,0,0,591,107,1,0,0,0,592,604,5,229,0,0,593,604,3, + 116,58,0,594,604,3,118,59,0,595,596,3,112,56,0,596,597,3,124,62, + 0,597,598,3,52,26,0,598,604,1,0,0,0,599,604,5,227,0,0,600,604,5, + 77,0,0,601,604,5,233,0,0,602,604,5,243,0,0,603,592,1,0,0,0,603,593, + 1,0,0,0,603,594,1,0,0,0,603,595,1,0,0,0,603,599,1,0,0,0,603,600, + 1,0,0,0,603,601,1,0,0,0,603,602,1,0,0,0,604,109,1,0,0,0,605,606, + 5,248,0,0,606,111,1,0,0,0,607,608,7,12,0,0,608,113,1,0,0,0,609,610, + 5,85,0,0,610,115,1,0,0,0,611,615,1,0,0,0,612,615,5,245,0,0,613,615, + 5,252,0,0,614,611,1,0,0,0,614,612,1,0,0,0,614,613,1,0,0,0,615,117, + 1,0,0,0,616,617,3,120,60,0,617,618,5,238,0,0,618,619,3,122,61,0, + 619,620,3,124,62,0,620,621,3,126,63,0,621,119,1,0,0,0,622,623,5, + 237,0,0,623,121,1,0,0,0,624,628,5,239,0,0,625,626,5,240,0,0,626, + 628,5,236,0,0,627,624,1,0,0,0,627,625,1,0,0,0,628,629,1,0,0,0,629, + 627,1,0,0,0,629,630,1,0,0,0,630,123,1,0,0,0,631,632,7,13,0,0,632, + 125,1,0,0,0,633,634,5,241,0,0,634,127,1,0,0,0,635,636,7,14,0,0,636, + 129,1,0,0,0,68,133,139,145,148,153,156,163,166,172,175,181,189,196, + 205,214,225,232,236,270,276,290,302,309,323,336,363,371,381,387, + 389,394,400,405,414,422,427,431,436,443,446,449,453,457,460,464, + 468,472,475,478,482,486,489,493,497,506,508,520,528,531,540,548, + 561,571,590,603,614,627,629 ] class SecLangParser ( Parser ): @@ -452,61 +454,63 @@ class SecLangParser ( Parser ): RULE_range_start = 13 RULE_range_end = 14 RULE_string_remove_rules = 15 - RULE_update_target_rules = 16 - RULE_update_action_rule = 17 - RULE_id = 18 - RULE_engine_config_sec_cache_transformations = 19 - RULE_option_list = 20 - RULE_option = 21 - RULE_option_name = 22 - RULE_engine_config_action_directive = 23 - RULE_stmt_audit_log = 24 - RULE_values = 25 - RULE_action_ctl_target_value = 26 - RULE_update_target_rules_values = 27 - RULE_operator_not = 28 - RULE_operator = 29 - RULE_operator_name = 30 - RULE_operator_value = 31 - RULE_var_not = 32 - RULE_var_count = 33 - RULE_variables = 34 - RULE_update_variables = 35 - RULE_new_target = 36 - RULE_var_stmt = 37 - RULE_variable_enum = 38 - RULE_collection_enum = 39 - RULE_actions = 40 - RULE_action = 41 - RULE_action_only = 42 - RULE_disruptive_action_only = 43 - RULE_non_disruptive_action_only = 44 - RULE_flow_action_only = 45 - RULE_action_with_params = 46 - RULE_metadata_action_with_params = 47 - RULE_disruptive_action_with_params = 48 - RULE_non_disruptive_action_with_params = 49 - RULE_data_action_with_params = 50 - RULE_flow_action_with_params = 51 - RULE_action_value = 52 - RULE_action_value_types = 53 - RULE_string_literal = 54 - RULE_ctl_action = 55 - RULE_transformation_action_value = 56 - RULE_collection_value = 57 - RULE_setvar_action = 58 - RULE_col_name = 59 - RULE_setvar_stmt = 60 - RULE_assignment = 61 - RULE_var_assignment = 62 + RULE_string_remove_rules_values = 16 + RULE_update_target_rules = 17 + RULE_update_action_rule = 18 + RULE_id = 19 + RULE_engine_config_sec_cache_transformations = 20 + RULE_option_list = 21 + RULE_option = 22 + RULE_option_name = 23 + RULE_engine_config_action_directive = 24 + RULE_stmt_audit_log = 25 + RULE_values = 26 + RULE_action_ctl_target_value = 27 + RULE_update_target_rules_values = 28 + RULE_operator_not = 29 + RULE_operator = 30 + RULE_operator_name = 31 + RULE_operator_value = 32 + RULE_var_not = 33 + RULE_var_count = 34 + RULE_variables = 35 + RULE_update_variables = 36 + RULE_new_target = 37 + RULE_var_stmt = 38 + RULE_variable_enum = 39 + RULE_collection_enum = 40 + RULE_actions = 41 + RULE_action = 42 + RULE_action_only = 43 + RULE_disruptive_action_only = 44 + RULE_non_disruptive_action_only = 45 + RULE_flow_action_only = 46 + RULE_action_with_params = 47 + RULE_metadata_action_with_params = 48 + RULE_disruptive_action_with_params = 49 + RULE_non_disruptive_action_with_params = 50 + RULE_data_action_with_params = 51 + RULE_flow_action_with_params = 52 + RULE_action_value = 53 + RULE_action_value_types = 54 + RULE_string_literal = 55 + RULE_ctl_action = 56 + RULE_transformation_action_value = 57 + RULE_collection_value = 58 + RULE_setvar_action = 59 + RULE_col_name = 60 + RULE_setvar_stmt = 61 + RULE_assignment = 62 + RULE_var_assignment = 63 + RULE_ctl_id = 64 ruleNames = [ "configuration", "stmt", "comment", "rules_directive", "engine_config_directive", "string_engine_config_directive", "sec_marker_directive", "engine_config_directive_with_param", "rule_script_directive", "file_path", "remove_rule_by_id", "remove_rule_by_id_values", "int_range", "range_start", - "range_end", "string_remove_rules", "update_target_rules", - "update_action_rule", "id", "engine_config_sec_cache_transformations", + "range_end", "string_remove_rules", "string_remove_rules_values", + "update_target_rules", "update_action_rule", "id", "engine_config_sec_cache_transformations", "option_list", "option", "option_name", "engine_config_action_directive", "stmt_audit_log", "values", "action_ctl_target_value", "update_target_rules_values", "operator_not", "operator", @@ -520,7 +524,7 @@ class SecLangParser ( Parser ): "action_value", "action_value_types", "string_literal", "ctl_action", "transformation_action_value", "collection_value", "setvar_action", "col_name", "setvar_stmt", "assignment", - "var_assignment" ] + "var_assignment", "ctl_id" ] EOF = Token.EOF QUOTE=1 @@ -836,17 +840,17 @@ def configuration(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 129 + self.state = 133 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1 or _la==12 or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & -162131785608593409) != 0) or ((((_la - 193)) & ~0x3f) == 0 and ((1 << (_la - 193)) & 68987650175) != 0): - self.state = 126 + self.state = 130 self.stmt() - self.state = 131 + self.state = 135 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 132 + self.state = 136 self.match(SecLangParser.EOF) except RecognitionException as re: localctx.exception = re @@ -913,8 +917,8 @@ def string_remove_rules(self): return self.getTypedRuleContext(SecLangParser.String_remove_rulesContext,0) - def values(self): - return self.getTypedRuleContext(SecLangParser.ValuesContext,0) + def string_remove_rules_values(self): + return self.getTypedRuleContext(SecLangParser.String_remove_rules_valuesContext,0) def update_target_rules(self): @@ -968,30 +972,30 @@ def stmt(self): self.enterRule(localctx, 2, self.RULE_stmt) self._la = 0 # Token type try: - self.state = 232 + self.state = 236 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,17,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 135 + self.state = 139 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 134 + self.state = 138 self.comment() - self.state = 137 + self.state = 141 self.rules_directive() - self.state = 138 + self.state = 142 self.variables() - self.state = 139 + self.state = 143 self.operator() - self.state = 141 + self.state = 145 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: - self.state = 140 + self.state = 144 self.actions() @@ -999,23 +1003,23 @@ def stmt(self): elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 144 + self.state = 148 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 143 + self.state = 147 self.comment() - self.state = 146 + self.state = 150 self.rule_script_directive() - self.state = 147 + self.state = 151 self.file_path() - self.state = 149 + self.state = 153 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,4,self._ctx) if la_ == 1: - self.state = 148 + self.state = 152 self.actions() @@ -1023,27 +1027,27 @@ def stmt(self): elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 152 + self.state = 156 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 151 + self.state = 155 self.comment() - self.state = 154 + self.state = 158 self.rule_script_directive() - self.state = 155 + self.state = 159 self.match(SecLangParser.QUOTE) - self.state = 156 + self.state = 160 self.file_path() - self.state = 157 + self.state = 161 self.match(SecLangParser.QUOTE) - self.state = 159 + self.state = 163 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: - self.state = 158 + self.state = 162 self.actions() @@ -1051,27 +1055,27 @@ def stmt(self): elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 162 + self.state = 166 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 161 + self.state = 165 self.comment() - self.state = 164 + self.state = 168 self.remove_rule_by_id() - self.state = 166 + self.state = 170 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 165 + self.state = 169 self.remove_rule_by_id_values() else: raise NoViableAltException(self) - self.state = 168 + self.state = 172 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,8,self._ctx) @@ -1079,163 +1083,163 @@ def stmt(self): elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 171 + self.state = 175 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 170 + self.state = 174 self.comment() - self.state = 173 + self.state = 177 self.string_remove_rules() - self.state = 174 - self.values() + self.state = 178 + self.string_remove_rules_values() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 177 + self.state = 181 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 176 + self.state = 180 self.comment() - self.state = 179 + self.state = 183 self.string_remove_rules() - self.state = 180 + self.state = 184 self.match(SecLangParser.QUOTE) - self.state = 181 - self.values() - self.state = 182 + self.state = 185 + self.string_remove_rules_values() + self.state = 186 self.match(SecLangParser.QUOTE) pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 185 + self.state = 189 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 184 + self.state = 188 self.comment() - self.state = 187 + self.state = 191 self.update_target_rules() - self.state = 188 + self.state = 192 self.update_target_rules_values() - self.state = 189 + self.state = 193 self.update_variables() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 192 + self.state = 196 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 191 + self.state = 195 self.comment() - self.state = 194 + self.state = 198 self.update_target_rules() - self.state = 195 + self.state = 199 self.match(SecLangParser.QUOTE) - self.state = 196 + self.state = 200 self.update_target_rules_values() - self.state = 197 + self.state = 201 self.match(SecLangParser.QUOTE) - self.state = 198 + self.state = 202 self.update_variables() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 201 + self.state = 205 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 200 + self.state = 204 self.comment() - self.state = 203 + self.state = 207 self.update_target_rules() - self.state = 204 + self.state = 208 self.update_target_rules_values() - self.state = 205 + self.state = 209 self.update_variables() - self.state = 206 + self.state = 210 self.match(SecLangParser.PIPE) - self.state = 207 + self.state = 211 self.new_target() pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 210 + self.state = 214 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 209 + self.state = 213 self.comment() - self.state = 212 + self.state = 216 self.update_target_rules() - self.state = 213 + self.state = 217 self.match(SecLangParser.QUOTE) - self.state = 214 + self.state = 218 self.update_target_rules_values() - self.state = 215 + self.state = 219 self.match(SecLangParser.QUOTE) - self.state = 216 + self.state = 220 self.update_variables() - self.state = 217 + self.state = 221 self.match(SecLangParser.PIPE) - self.state = 218 + self.state = 222 self.new_target() pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 221 + self.state = 225 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 220 + self.state = 224 self.comment() - self.state = 223 + self.state = 227 self.update_action_rule() - self.state = 224 + self.state = 228 self.id_() - self.state = 225 + self.state = 229 self.actions() pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 228 + self.state = 232 self._errHandler.sync(self) _la = self._input.LA(1) if _la==12: - self.state = 227 + self.state = 231 self.comment() - self.state = 230 + self.state = 234 self.engine_config_directive() pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 231 + self.state = 235 self.comment() pass @@ -1279,7 +1283,7 @@ def comment(self): self.enterRule(localctx, 4, self.RULE_comment) try: self.enterOuterAlt(localctx, 1) - self.state = 234 + self.state = 238 self.match(SecLangParser.COMMENT) except RecognitionException as re: localctx.exception = re @@ -1320,7 +1324,7 @@ def rules_directive(self): self.enterRule(localctx, 6, self.RULE_rules_directive) try: self.enterOuterAlt(localctx, 1) - self.state = 236 + self.state = 240 self.match(SecLangParser.DIRECTIVE) except RecognitionException as re: localctx.exception = re @@ -1399,76 +1403,76 @@ def engine_config_directive(self): localctx = SecLangParser.Engine_config_directiveContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_engine_config_directive) try: - self.state = 266 + self.state = 270 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,18,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 238 + self.state = 242 self.stmt_audit_log() - self.state = 239 + self.state = 243 self.values() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 241 + self.state = 245 self.stmt_audit_log() - self.state = 242 + self.state = 246 self.match(SecLangParser.QUOTE) - self.state = 243 + self.state = 247 self.values() - self.state = 244 + self.state = 248 self.match(SecLangParser.QUOTE) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 246 + self.state = 250 self.engine_config_action_directive() - self.state = 247 + self.state = 251 self.actions() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 249 + self.state = 253 self.string_engine_config_directive() - self.state = 250 + self.state = 254 self.match(SecLangParser.QUOTE) - self.state = 251 + self.state = 255 self.values() - self.state = 252 + self.state = 256 self.match(SecLangParser.QUOTE) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 254 + self.state = 258 self.sec_marker_directive() - self.state = 255 + self.state = 259 self.match(SecLangParser.QUOTE) - self.state = 256 + self.state = 260 self.values() - self.state = 257 + self.state = 261 self.match(SecLangParser.QUOTE) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 259 + self.state = 263 self.engine_config_directive_with_param() - self.state = 260 + self.state = 264 self.values() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 262 + self.state = 266 self.engine_config_sec_cache_transformations() - self.state = 263 + self.state = 267 self.values() - self.state = 264 + self.state = 268 self.option_list() pass @@ -1517,7 +1521,7 @@ def string_engine_config_directive(self): localctx = SecLangParser.String_engine_config_directiveContext(self, self._ctx, self.state) self.enterRule(localctx, 10, self.RULE_string_engine_config_directive) try: - self.state = 272 + self.state = 276 self._errHandler.sync(self) token = self._input.LA(1) if token in [1]: @@ -1526,17 +1530,17 @@ def string_engine_config_directive(self): pass elif token in [129]: self.enterOuterAlt(localctx, 2) - self.state = 269 + self.state = 273 self.match(SecLangParser.CONFIG_COMPONENT_SIG) pass elif token in [130]: self.enterOuterAlt(localctx, 3) - self.state = 270 + self.state = 274 self.match(SecLangParser.CONFIG_SEC_SERVER_SIG) pass elif token in [131]: self.enterOuterAlt(localctx, 4) - self.state = 271 + self.state = 275 self.match(SecLangParser.CONFIG_SEC_WEB_APP_ID) pass else: @@ -1581,7 +1585,7 @@ def sec_marker_directive(self): self.enterRule(localctx, 12, self.RULE_sec_marker_directive) try: self.enterOuterAlt(localctx, 1) - self.state = 274 + self.state = 278 self.match(SecLangParser.CONFIG_DIR_SEC_MARKER) except RecognitionException as re: localctx.exception = re @@ -1761,7 +1765,7 @@ def engine_config_directive_with_param(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 276 + self.state = 280 _la = self._input.LA(1) if not(((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & 25508532324925951) != 0) or ((((_la - 211)) & ~0x3f) == 0 and ((1 << (_la - 211)) & 255) != 0)): self._errHandler.recoverInline(self) @@ -1807,7 +1811,7 @@ def rule_script_directive(self): self.enterRule(localctx, 16, self.RULE_rule_script_directive) try: self.enterOuterAlt(localctx, 1) - self.state = 278 + self.state = 282 self.match(SecLangParser.DIRECTIVE_SECRULESCRIPT) except RecognitionException as re: localctx.exception = re @@ -1848,7 +1852,7 @@ def file_path(self): self.enterRule(localctx, 18, self.RULE_file_path) try: self.enterOuterAlt(localctx, 1) - self.state = 280 + self.state = 284 self.match(SecLangParser.CONFIG_VALUE_PATH) except RecognitionException as re: localctx.exception = re @@ -1889,7 +1893,7 @@ def remove_rule_by_id(self): self.enterRule(localctx, 20, self.RULE_remove_rule_by_id) try: self.enterOuterAlt(localctx, 1) - self.state = 282 + self.state = 286 self.match(SecLangParser.CONFIG_SEC_RULE_REMOVE_BY_ID) except RecognitionException as re: localctx.exception = re @@ -1960,20 +1964,20 @@ def remove_rule_by_id_values(self): localctx = SecLangParser.Remove_rule_by_id_valuesContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_remove_rule_by_id_values) try: - self.state = 286 + self.state = 290 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,20,self._ctx) if la_ == 1: localctx = SecLangParser.Remove_rule_by_id_intContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 284 + self.state = 288 self.match(SecLangParser.INT) pass elif la_ == 2: localctx = SecLangParser.Remove_rule_by_id_int_rangeContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 285 + self.state = 289 self.int_range() pass @@ -2025,11 +2029,11 @@ def int_range(self): self.enterRule(localctx, 24, self.RULE_int_range) try: self.enterOuterAlt(localctx, 1) - self.state = 288 + self.state = 292 self.range_start() - self.state = 289 + self.state = 293 self.match(SecLangParser.MINUS) - self.state = 290 + self.state = 294 self.range_end() except RecognitionException as re: localctx.exception = re @@ -2070,7 +2074,7 @@ def range_start(self): self.enterRule(localctx, 26, self.RULE_range_start) try: self.enterOuterAlt(localctx, 1) - self.state = 292 + self.state = 296 self.match(SecLangParser.INT) except RecognitionException as re: localctx.exception = re @@ -2111,7 +2115,7 @@ def range_end(self): self.enterRule(localctx, 28, self.RULE_range_end) try: self.enterOuterAlt(localctx, 1) - self.state = 294 + self.state = 298 self.match(SecLangParser.INT) except RecognitionException as re: localctx.exception = re @@ -2181,19 +2185,19 @@ def string_remove_rules(self): localctx = SecLangParser.String_remove_rulesContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_string_remove_rules) try: - self.state = 298 + self.state = 302 self._errHandler.sync(self) token = self._input.LA(1) if token in [189]: localctx = SecLangParser.Remove_rule_by_msgContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 296 + self.state = 300 self.match(SecLangParser.CONFIG_SEC_RULE_REMOVE_BY_MSG) pass elif token in [190]: localctx = SecLangParser.Remove_rule_by_tagContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 297 + self.state = 301 self.match(SecLangParser.CONFIG_SEC_RULE_REMOVE_BY_TAG) pass else: @@ -2208,6 +2212,59 @@ def string_remove_rules(self): return localctx + class String_remove_rules_valuesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING(self): + return self.getToken(SecLangParser.STRING, 0) + + def VARIABLE_NAME(self): + return self.getToken(SecLangParser.VARIABLE_NAME, 0) + + def COMMA_SEPARATED_STRING(self): + return self.getToken(SecLangParser.COMMA_SEPARATED_STRING, 0) + + def getRuleIndex(self): + return SecLangParser.RULE_string_remove_rules_values + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterString_remove_rules_values" ): + listener.enterString_remove_rules_values(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitString_remove_rules_values" ): + listener.exitString_remove_rules_values(self) + + + + + def string_remove_rules_values(self): + + localctx = SecLangParser.String_remove_rules_valuesContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_string_remove_rules_values) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 304 + _la = self._input.LA(1) + if not(((((_la - 227)) & ~0x3f) == 0 and ((1 << (_la - 227)) & 65793) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Update_target_rulesContext(ParserRuleContext): __slots__ = 'parser' @@ -2283,27 +2340,27 @@ def exitRule(self, listener:ParseTreeListener): def update_target_rules(self): localctx = SecLangParser.Update_target_rulesContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_update_target_rules) + self.enterRule(localctx, 34, self.RULE_update_target_rules) try: - self.state = 303 + self.state = 309 self._errHandler.sync(self) token = self._input.LA(1) if token in [193]: localctx = SecLangParser.Update_target_by_idContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 300 + self.state = 306 self.match(SecLangParser.CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID) pass elif token in [192]: localctx = SecLangParser.Update_target_by_msgContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 301 + self.state = 307 self.match(SecLangParser.CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG) pass elif token in [191]: localctx = SecLangParser.Update_target_by_tagContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 302 + self.state = 308 self.match(SecLangParser.CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG) pass else: @@ -2345,10 +2402,10 @@ def exitRule(self, listener:ParseTreeListener): def update_action_rule(self): localctx = SecLangParser.Update_action_ruleContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_update_action_rule) + self.enterRule(localctx, 36, self.RULE_update_action_rule) try: self.enterOuterAlt(localctx, 1) - self.state = 305 + self.state = 311 self.match(SecLangParser.CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID) except RecognitionException as re: localctx.exception = re @@ -2386,10 +2443,10 @@ def exitRule(self, listener:ParseTreeListener): def id_(self): localctx = SecLangParser.IdContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_id) + self.enterRule(localctx, 38, self.RULE_id) try: self.enterOuterAlt(localctx, 1) - self.state = 307 + self.state = 313 self.match(SecLangParser.INT) except RecognitionException as re: localctx.exception = re @@ -2427,10 +2484,10 @@ def exitRule(self, listener:ParseTreeListener): def engine_config_sec_cache_transformations(self): localctx = SecLangParser.Engine_config_sec_cache_transformationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_engine_config_sec_cache_transformations) + self.enterRule(localctx, 40, self.RULE_engine_config_sec_cache_transformations) try: self.enterOuterAlt(localctx, 1) - self.state = 309 + self.state = 315 self.match(SecLangParser.CONFIG_SEC_CACHE_TRANSFORMATIONS) except RecognitionException as re: localctx.exception = re @@ -2484,27 +2541,27 @@ def exitRule(self, listener:ParseTreeListener): def option_list(self): localctx = SecLangParser.Option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_option_list) + self.enterRule(localctx, 42, self.RULE_option_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 311 + self.state = 317 self.match(SecLangParser.QUOTE) - self.state = 312 + self.state = 318 self.option() - self.state = 317 + self.state = 323 self._errHandler.sync(self) _la = self._input.LA(1) while _la==7: - self.state = 313 + self.state = 319 self.match(SecLangParser.COMMA) - self.state = 314 + self.state = 320 self.option() - self.state = 319 + self.state = 325 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 320 + self.state = 326 self.match(SecLangParser.QUOTE) except RecognitionException as re: localctx.exception = re @@ -2550,14 +2607,14 @@ def exitRule(self, listener:ParseTreeListener): def option(self): localctx = SecLangParser.OptionContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_option) + self.enterRule(localctx, 44, self.RULE_option) try: self.enterOuterAlt(localctx, 1) - self.state = 322 + self.state = 328 self.option_name() - self.state = 323 + self.state = 329 self.match(SecLangParser.COLON) - self.state = 324 + self.state = 330 self.values() except RecognitionException as re: localctx.exception = re @@ -2595,10 +2652,10 @@ def exitRule(self, listener:ParseTreeListener): def option_name(self): localctx = SecLangParser.Option_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_option_name) + self.enterRule(localctx, 46, self.RULE_option_name) try: self.enterOuterAlt(localctx, 1) - self.state = 326 + self.state = 332 self.match(SecLangParser.OPTION_NAME) except RecognitionException as re: localctx.exception = re @@ -2666,21 +2723,21 @@ def exitRule(self, listener:ParseTreeListener): def engine_config_action_directive(self): localctx = SecLangParser.Engine_config_action_directiveContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_engine_config_action_directive) + self.enterRule(localctx, 48, self.RULE_engine_config_action_directive) try: - self.state = 330 + self.state = 336 self._errHandler.sync(self) token = self._input.LA(1) if token in [178]: localctx = SecLangParser.Config_dir_sec_actionContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 328 + self.state = 334 self.match(SecLangParser.CONFIG_DIR_SEC_ACTION) pass elif token in [179]: localctx = SecLangParser.Config_dir_sec_default_actionContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 329 + self.state = 335 self.match(SecLangParser.CONFIG_DIR_SEC_DEFAULT_ACTION) pass else: @@ -2767,11 +2824,11 @@ def exitRule(self, listener:ParseTreeListener): def stmt_audit_log(self): localctx = SecLangParser.Stmt_audit_logContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_stmt_audit_log) + self.enterRule(localctx, 50, self.RULE_stmt_audit_log) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 332 + self.state = 338 _la = self._input.LA(1) if not(((((_la - 142)) & ~0x3f) == 0 and ((1 << (_la - 142)) & 279223176896971775) != 0) or _la==229): self._errHandler.recoverInline(self) @@ -2876,142 +2933,142 @@ def exitRule(self, listener:ParseTreeListener): def values(self): localctx = SecLangParser.ValuesContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_values) + self.enterRule(localctx, 52, self.RULE_values) try: - self.state = 357 + self.state = 363 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,25,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 334 + self.state = 340 self.match(SecLangParser.INT) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 335 + self.state = 341 self.int_range() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 336 + self.state = 342 self.match(SecLangParser.CONFIG_VALUE_ON) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 337 + self.state = 343 self.match(SecLangParser.CONFIG_VALUE_OFF) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 338 + self.state = 344 self.match(SecLangParser.CONFIG_VALUE_SERIAL) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 339 + self.state = 345 self.match(SecLangParser.CONFIG_VALUE_PARALLEL) pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 340 + self.state = 346 self.match(SecLangParser.CONFIG_VALUE_HTTPS) pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 341 + self.state = 347 self.match(SecLangParser.CONFIG_VALUE_RELEVANT_ONLY) pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 342 + self.state = 348 self.match(SecLangParser.NATIVE) pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 343 + self.state = 349 self.match(SecLangParser.CONFIG_VALUE_ABORT) pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 344 + self.state = 350 self.match(SecLangParser.CONFIG_VALUE_WARN) pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 345 + self.state = 351 self.match(SecLangParser.CONFIG_VALUE_DETC) pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 346 + self.state = 352 self.match(SecLangParser.CONFIG_VALUE_PROCESS_PARTIAL) pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 347 + self.state = 353 self.match(SecLangParser.CONFIG_VALUE_REJECT) pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 348 + self.state = 354 self.match(SecLangParser.CONFIG_VALUE_PATH) - self.state = 349 + self.state = 355 self.match(SecLangParser.INT) pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 350 + self.state = 356 self.match(SecLangParser.CONFIG_VALUE_PATH) pass elif la_ == 17: self.enterOuterAlt(localctx, 17) - self.state = 351 + self.state = 357 self.match(SecLangParser.STRING) pass elif la_ == 18: self.enterOuterAlt(localctx, 18) - self.state = 352 + self.state = 358 self.match(SecLangParser.VARIABLE_NAME) pass elif la_ == 19: self.enterOuterAlt(localctx, 19) - self.state = 353 + self.state = 359 self.match(SecLangParser.COMMA_SEPARATED_STRING) pass elif la_ == 20: self.enterOuterAlt(localctx, 20) - self.state = 354 + self.state = 360 self.match(SecLangParser.ACTION_CTL_BODY_PROCESSOR_TYPE) pass elif la_ == 21: self.enterOuterAlt(localctx, 21) - self.state = 355 + self.state = 361 self.match(SecLangParser.AUDIT_PARTS) pass elif la_ == 22: self.enterOuterAlt(localctx, 22) - self.state = 356 + self.state = 362 self.action_ctl_target_value() pass @@ -3039,11 +3096,9 @@ def variable_enum(self): return self.getTypedRuleContext(SecLangParser.Variable_enumContext,0) - def INT(self): - return self.getToken(SecLangParser.INT, 0) + def ctl_id(self): + return self.getTypedRuleContext(SecLangParser.Ctl_idContext,0) - def IDENT(self): - return self.getToken(SecLangParser.IDENT, 0) def SINGLE_QUOTE(self, i:int=None): if i is None: @@ -3086,85 +3141,77 @@ def exitRule(self, listener:ParseTreeListener): def action_ctl_target_value(self): localctx = SecLangParser.Action_ctl_target_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_action_ctl_target_value) + self.enterRule(localctx, 54, self.RULE_action_ctl_target_value) self._la = 0 # Token type try: - self.state = 385 + self.state = 389 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,29,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 366 + self.state = 371 self._errHandler.sync(self) token = self._input.LA(1) - if token in [229]: - self.state = 359 - self.match(SecLangParser.INT) - pass - elif token in [228]: - self.state = 360 - self.match(SecLangParser.IDENT) + if token in [228, 229]: + self.state = 365 + self.ctl_id() pass elif token in [2]: - self.state = 361 + self.state = 366 self.match(SecLangParser.SINGLE_QUOTE) - self.state = 362 + self.state = 367 self.string_literal() - self.state = 363 + self.state = 368 self.match(SecLangParser.SINGLE_QUOTE) pass elif token in [227]: - self.state = 365 + self.state = 370 self.match(SecLangParser.VARIABLE_NAME) pass else: raise NoViableAltException(self) - self.state = 368 + self.state = 373 self.match(SecLangParser.SEMI) - self.state = 369 + self.state = 374 self.variable_enum() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 377 + self.state = 381 self._errHandler.sync(self) token = self._input.LA(1) - if token in [229]: - self.state = 370 - self.match(SecLangParser.INT) - pass - elif token in [228]: - self.state = 371 - self.match(SecLangParser.IDENT) + if token in [228, 229]: + self.state = 375 + self.ctl_id() pass elif token in [2]: - self.state = 372 + self.state = 376 self.match(SecLangParser.SINGLE_QUOTE) - self.state = 373 + self.state = 377 self.string_literal() - self.state = 374 + self.state = 378 self.match(SecLangParser.SINGLE_QUOTE) pass elif token in [227]: - self.state = 376 + self.state = 380 self.match(SecLangParser.VARIABLE_NAME) pass else: raise NoViableAltException(self) - self.state = 379 + self.state = 383 self.match(SecLangParser.SEMI) - self.state = 380 + self.state = 384 self.collection_enum() - self.state = 383 + self.state = 387 self._errHandler.sync(self) _la = self._input.LA(1) if _la==4: - self.state = 381 + self.state = 385 self.match(SecLangParser.COLON) - self.state = 382 + self.state = 386 self.collection_value() @@ -3214,26 +3261,26 @@ def exitRule(self, listener:ParseTreeListener): def update_target_rules_values(self): localctx = SecLangParser.Update_target_rules_valuesContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_update_target_rules_values) + self.enterRule(localctx, 56, self.RULE_update_target_rules_values) try: - self.state = 390 + self.state = 394 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,30,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 387 + self.state = 391 self.match(SecLangParser.INT) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 388 + self.state = 392 self.int_range() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 389 + self.state = 393 self.match(SecLangParser.STRING) pass @@ -3274,10 +3321,10 @@ def exitRule(self, listener:ParseTreeListener): def operator_not(self): localctx = SecLangParser.Operator_notContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_operator_not) + self.enterRule(localctx, 58, self.RULE_operator_not) try: self.enterOuterAlt(localctx, 1) - self.state = 392 + self.state = 396 self.match(SecLangParser.NOT) except RecognitionException as re: localctx.exception = re @@ -3333,53 +3380,53 @@ def exitRule(self, listener:ParseTreeListener): def operator(self): localctx = SecLangParser.OperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_operator) + self.enterRule(localctx, 60, self.RULE_operator) self._la = 0 # Token type try: - self.state = 410 + self.state = 414 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,33,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 394 + self.state = 398 self.match(SecLangParser.QUOTE) - self.state = 396 + self.state = 400 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 395 + self.state = 399 self.operator_not() - self.state = 398 + self.state = 402 self.match(SecLangParser.AT) - self.state = 399 + self.state = 403 self.operator_name() - self.state = 401 + self.state = 405 self._errHandler.sync(self) _la = self._input.LA(1) if _la==87 or _la==88 or ((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & 671088705) != 0): - self.state = 400 + self.state = 404 self.operator_value() - self.state = 403 + self.state = 407 self.match(SecLangParser.QUOTE) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 405 + self.state = 409 self.match(SecLangParser.QUOTE) - self.state = 406 + self.state = 410 self.operator_value() - self.state = 407 + self.state = 411 self.match(SecLangParser.QUOTE) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 409 + self.state = 413 self.operator_value() pass @@ -3528,11 +3575,11 @@ def exitRule(self, listener:ParseTreeListener): def operator_name(self): localctx = SecLangParser.Operator_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_operator_name) + self.enterRule(localctx, 62, self.RULE_operator_name) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 412 + self.state = 416 _la = self._input.LA(1) if not(((((_la - 91)) & ~0x3f) == 0 and ((1 << (_la - 91)) & 137438953471) != 0)): self._errHandler.recoverInline(self) @@ -3604,71 +3651,71 @@ def exitRule(self, listener:ParseTreeListener): def operator_value(self): localctx = SecLangParser.Operator_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_operator_value) + self.enterRule(localctx, 64, self.RULE_operator_value) self._la = 0 # Token type try: - self.state = 432 + self.state = 436 self._errHandler.sync(self) token = self._input.LA(1) if token in [87, 88]: self.enterOuterAlt(localctx, 1) - self.state = 414 + self.state = 418 self.variable_enum() pass elif token in [235]: self.enterOuterAlt(localctx, 2) - self.state = 415 + self.state = 419 self.match(SecLangParser.STRING) pass elif token in [229]: self.enterOuterAlt(localctx, 3) - self.state = 418 + self.state = 422 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,34,self._ctx) if la_ == 1: - self.state = 416 + self.state = 420 self.match(SecLangParser.INT) pass elif la_ == 2: - self.state = 417 + self.state = 421 self.int_range() pass - self.state = 427 + self.state = 431 self._errHandler.sync(self) _la = self._input.LA(1) while _la==7: - self.state = 420 + self.state = 424 self.match(SecLangParser.COMMA) - self.state = 423 + self.state = 427 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,35,self._ctx) if la_ == 1: - self.state = 421 + self.state = 425 self.match(SecLangParser.INT) pass elif la_ == 2: - self.state = 422 + self.state = 426 self.int_range() pass - self.state = 429 + self.state = 433 self._errHandler.sync(self) _la = self._input.LA(1) pass elif token in [256]: self.enterOuterAlt(localctx, 4) - self.state = 430 + self.state = 434 self.match(SecLangParser.OPERATOR_UNQUOTED_STRING) pass elif token in [258]: self.enterOuterAlt(localctx, 5) - self.state = 431 + self.state = 435 self.match(SecLangParser.OPERATOR_QUOTED_STRING) pass else: @@ -3710,10 +3757,10 @@ def exitRule(self, listener:ParseTreeListener): def var_not(self): localctx = SecLangParser.Var_notContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_var_not) + self.enterRule(localctx, 66, self.RULE_var_not) try: self.enterOuterAlt(localctx, 1) - self.state = 434 + self.state = 438 self.match(SecLangParser.NOT) except RecognitionException as re: localctx.exception = re @@ -3751,10 +3798,10 @@ def exitRule(self, listener:ParseTreeListener): def var_count(self): localctx = SecLangParser.Var_countContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_var_count) + self.enterRule(localctx, 68, self.RULE_var_count) try: self.enterOuterAlt(localctx, 1) - self.state = 436 + self.state = 440 self.match(SecLangParser.VAR_COUNT) except RecognitionException as re: localctx.exception = re @@ -3819,77 +3866,77 @@ def exitRule(self, listener:ParseTreeListener): def variables(self): localctx = SecLangParser.VariablesContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_variables) + self.enterRule(localctx, 70, self.RULE_variables) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 439 + self.state = 443 self._errHandler.sync(self) _la = self._input.LA(1) if _la==1: - self.state = 438 + self.state = 442 self.match(SecLangParser.QUOTE) - self.state = 442 + self.state = 446 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 441 + self.state = 445 self.var_not() - self.state = 445 + self.state = 449 self._errHandler.sync(self) _la = self._input.LA(1) if _la==90: - self.state = 444 + self.state = 448 self.var_count() - self.state = 447 + self.state = 451 self.var_stmt() - self.state = 449 + self.state = 453 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,41,self._ctx) if la_ == 1: - self.state = 448 + self.state = 452 self.match(SecLangParser.QUOTE) - self.state = 464 + self.state = 468 self._errHandler.sync(self) _la = self._input.LA(1) while _la==8: - self.state = 451 + self.state = 455 self.match(SecLangParser.PIPE) - self.state = 453 + self.state = 457 self._errHandler.sync(self) _la = self._input.LA(1) if _la==1: - self.state = 452 + self.state = 456 self.match(SecLangParser.QUOTE) - self.state = 456 + self.state = 460 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 455 + self.state = 459 self.var_not() - self.state = 458 + self.state = 462 self.var_stmt() - self.state = 460 + self.state = 464 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,44,self._ctx) if la_ == 1: - self.state = 459 + self.state = 463 self.match(SecLangParser.QUOTE) - self.state = 466 + self.state = 470 self._errHandler.sync(self) _la = self._input.LA(1) @@ -3956,77 +4003,77 @@ def exitRule(self, listener:ParseTreeListener): def update_variables(self): localctx = SecLangParser.Update_variablesContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_update_variables) + self.enterRule(localctx, 72, self.RULE_update_variables) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 468 + self.state = 472 self._errHandler.sync(self) _la = self._input.LA(1) if _la==1: - self.state = 467 + self.state = 471 self.match(SecLangParser.QUOTE) - self.state = 471 + self.state = 475 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 470 + self.state = 474 self.var_not() - self.state = 474 + self.state = 478 self._errHandler.sync(self) _la = self._input.LA(1) if _la==90: - self.state = 473 + self.state = 477 self.var_count() - self.state = 476 + self.state = 480 self.var_stmt() - self.state = 478 + self.state = 482 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,49,self._ctx) if la_ == 1: - self.state = 477 + self.state = 481 self.match(SecLangParser.QUOTE) - self.state = 493 + self.state = 497 self._errHandler.sync(self) _la = self._input.LA(1) while _la==7: - self.state = 480 + self.state = 484 self.match(SecLangParser.COMMA) - self.state = 482 + self.state = 486 self._errHandler.sync(self) _la = self._input.LA(1) if _la==1: - self.state = 481 + self.state = 485 self.match(SecLangParser.QUOTE) - self.state = 485 + self.state = 489 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 484 + self.state = 488 self.var_not() - self.state = 487 + self.state = 491 self.var_stmt() - self.state = 489 + self.state = 493 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,52,self._ctx) if la_ == 1: - self.state = 488 + self.state = 492 self.match(SecLangParser.QUOTE) - self.state = 495 + self.state = 499 self._errHandler.sync(self) _la = self._input.LA(1) @@ -4067,10 +4114,10 @@ def exitRule(self, listener:ParseTreeListener): def new_target(self): localctx = SecLangParser.New_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_new_target) + self.enterRule(localctx, 74, self.RULE_new_target) try: self.enterOuterAlt(localctx, 1) - self.state = 496 + self.state = 500 self.var_stmt() except RecognitionException as re: localctx.exception = re @@ -4120,28 +4167,28 @@ def exitRule(self, listener:ParseTreeListener): def var_stmt(self): localctx = SecLangParser.Var_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_var_stmt) + self.enterRule(localctx, 76, self.RULE_var_stmt) self._la = 0 # Token type try: - self.state = 504 + self.state = 508 self._errHandler.sync(self) token = self._input.LA(1) if token in [87, 88]: self.enterOuterAlt(localctx, 1) - self.state = 498 + self.state = 502 self.variable_enum() pass elif token in [86, 89]: self.enterOuterAlt(localctx, 2) - self.state = 499 + self.state = 503 self.collection_enum() - self.state = 502 + self.state = 506 self._errHandler.sync(self) _la = self._input.LA(1) if _la==4: - self.state = 500 + self.state = 504 self.match(SecLangParser.COLON) - self.state = 501 + self.state = 505 self.collection_value() @@ -4188,11 +4235,11 @@ def exitRule(self, listener:ParseTreeListener): def variable_enum(self): localctx = SecLangParser.Variable_enumContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_variable_enum) + self.enterRule(localctx, 78, self.RULE_variable_enum) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 506 + self.state = 510 _la = self._input.LA(1) if not(_la==87 or _la==88): self._errHandler.recoverInline(self) @@ -4238,11 +4285,11 @@ def exitRule(self, listener:ParseTreeListener): def collection_enum(self): localctx = SecLangParser.Collection_enumContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_collection_enum) + self.enterRule(localctx, 80, self.RULE_collection_enum) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 508 + self.state = 512 _la = self._input.LA(1) if not(_la==86 or _la==89): self._errHandler.recoverInline(self) @@ -4301,27 +4348,27 @@ def exitRule(self, listener:ParseTreeListener): def actions(self): localctx = SecLangParser.ActionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_actions) + self.enterRule(localctx, 82, self.RULE_actions) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 510 + self.state = 514 self.match(SecLangParser.QUOTE) - self.state = 511 + self.state = 515 self.action() - self.state = 516 + self.state = 520 self._errHandler.sync(self) _la = self._input.LA(1) while _la==7: - self.state = 512 + self.state = 516 self.match(SecLangParser.COMMA) - self.state = 513 + self.state = 517 self.action() - self.state = 518 + self.state = 522 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 519 + self.state = 523 self.match(SecLangParser.QUOTE) except RecognitionException as re: localctx.exception = re @@ -4377,51 +4424,51 @@ def exitRule(self, listener:ParseTreeListener): def action(self): localctx = SecLangParser.ActionContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_action) + self.enterRule(localctx, 84, self.RULE_action) self._la = 0 # Token type try: - self.state = 536 + self.state = 540 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,59,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 521 + self.state = 525 self.action_with_params() - self.state = 522 + self.state = 526 self.match(SecLangParser.COLON) - self.state = 524 + self.state = 528 self._errHandler.sync(self) _la = self._input.LA(1) if _la==10: - self.state = 523 + self.state = 527 self.match(SecLangParser.NOT) - self.state = 527 + self.state = 531 self._errHandler.sync(self) _la = self._input.LA(1) if _la==3: - self.state = 526 + self.state = 530 self.match(SecLangParser.EQUAL) - self.state = 529 + self.state = 533 self.action_value() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 531 + self.state = 535 self.action_with_params() - self.state = 532 + self.state = 536 self.match(SecLangParser.COLON) - self.state = 533 + self.state = 537 self.action_value() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 535 + self.state = 539 self.action_only() pass @@ -4481,33 +4528,33 @@ def exitRule(self, listener:ParseTreeListener): def action_only(self): localctx = SecLangParser.Action_onlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_action_only) + self.enterRule(localctx, 86, self.RULE_action_only) try: - self.state = 544 + self.state = 548 self._errHandler.sync(self) token = self._input.LA(1) if token in [28, 31, 45, 47, 59, 60]: self.enterOuterAlt(localctx, 1) - self.state = 538 + self.state = 542 self.disruptive_action_only() pass elif token in [30, 32, 53, 56, 57, 58, 68]: self.enterOuterAlt(localctx, 2) - self.state = 539 + self.state = 543 self.non_disruptive_action_only() pass elif token in [33]: self.enterOuterAlt(localctx, 3) - self.state = 540 + self.state = 544 self.flow_action_only() pass elif token in [84]: self.enterOuterAlt(localctx, 4) - self.state = 541 + self.state = 545 self.match(SecLangParser.ACTION_TRANSFORMATION) - self.state = 542 + self.state = 546 self.match(SecLangParser.COLON) - self.state = 543 + self.state = 547 self.transformation_action_value() pass else: @@ -4564,11 +4611,11 @@ def exitRule(self, listener:ParseTreeListener): def disruptive_action_only(self): localctx = SecLangParser.Disruptive_action_onlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_disruptive_action_only) + self.enterRule(localctx, 88, self.RULE_disruptive_action_only) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 546 + self.state = 550 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1729558181186633728) != 0)): self._errHandler.recoverInline(self) @@ -4629,11 +4676,11 @@ def exitRule(self, listener:ParseTreeListener): def non_disruptive_action_only(self): localctx = SecLangParser.Non_disruptive_action_onlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_non_disruptive_action_only) + self.enterRule(localctx, 90, self.RULE_non_disruptive_action_only) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 548 + self.state = 552 _la = self._input.LA(1) if not(((((_la - 30)) & ~0x3f) == 0 and ((1 << (_la - 30)) & 275356057605) != 0)): self._errHandler.recoverInline(self) @@ -4676,10 +4723,10 @@ def exitRule(self, listener:ParseTreeListener): def flow_action_only(self): localctx = SecLangParser.Flow_action_onlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_flow_action_only) + self.enterRule(localctx, 92, self.RULE_flow_action_only) try: self.enterOuterAlt(localctx, 1) - self.state = 550 + self.state = 554 self.match(SecLangParser.ACTION_CHAIN) except RecognitionException as re: localctx.exception = re @@ -4734,34 +4781,34 @@ def exitRule(self, listener:ParseTreeListener): def action_with_params(self): localctx = SecLangParser.Action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_action_with_params) + self.enterRule(localctx, 94, self.RULE_action_with_params) try: - self.state = 557 + self.state = 561 self._errHandler.sync(self) token = self._input.LA(1) if token in [50, 54, 55, 61, 65, 76, 81, 82]: self.enterOuterAlt(localctx, 1) - self.state = 552 + self.state = 556 self.metadata_action_with_params() pass elif token in [63, 64]: self.enterOuterAlt(localctx, 2) - self.state = 553 + self.state = 557 self.disruptive_action_with_params() pass elif token in [29, 34, 46, 48, 49, 51, 52, 62, 66, 67, 69, 70, 71, 72, 73, 74, 75]: self.enterOuterAlt(localctx, 3) - self.state = 554 + self.state = 558 self.non_disruptive_action_with_params() pass elif token in [78, 79]: self.enterOuterAlt(localctx, 4) - self.state = 555 + self.state = 559 self.flow_action_with_params() pass elif token in [80, 83]: self.enterOuterAlt(localctx, 5) - self.state = 556 + self.state = 560 self.data_action_with_params() pass else: @@ -4941,57 +4988,57 @@ def exitRule(self, listener:ParseTreeListener): def metadata_action_with_params(self): localctx = SecLangParser.Metadata_action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_metadata_action_with_params) + self.enterRule(localctx, 96, self.RULE_metadata_action_with_params) try: - self.state = 567 + self.state = 571 self._errHandler.sync(self) token = self._input.LA(1) if token in [61]: localctx = SecLangParser.ACTION_PHASEContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 559 + self.state = 563 self.match(SecLangParser.ACTION_PHASE) pass elif token in [50]: localctx = SecLangParser.ACTION_IDContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 560 + self.state = 564 self.match(SecLangParser.ACTION_ID) pass elif token in [54]: localctx = SecLangParser.ACTION_MATURITYContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 561 + self.state = 565 self.match(SecLangParser.ACTION_MATURITY) pass elif token in [55]: localctx = SecLangParser.ACTION_MSGContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 562 + self.state = 566 self.match(SecLangParser.ACTION_MSG) pass elif token in [65]: localctx = SecLangParser.ACTION_REVContext(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 563 + self.state = 567 self.match(SecLangParser.ACTION_REV) pass elif token in [76]: localctx = SecLangParser.ACTION_SEVERITYContext(self, localctx) self.enterOuterAlt(localctx, 6) - self.state = 564 + self.state = 568 self.match(SecLangParser.ACTION_SEVERITY) pass elif token in [81]: localctx = SecLangParser.ACTION_TAGContext(self, localctx) self.enterOuterAlt(localctx, 7) - self.state = 565 + self.state = 569 self.match(SecLangParser.ACTION_TAG) pass elif token in [82]: localctx = SecLangParser.ACTION_VERContext(self, localctx) self.enterOuterAlt(localctx, 8) - self.state = 566 + self.state = 570 self.match(SecLangParser.ACTION_VER) pass else: @@ -5036,11 +5083,11 @@ def exitRule(self, listener:ParseTreeListener): def disruptive_action_with_params(self): localctx = SecLangParser.Disruptive_action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_disruptive_action_with_params) + self.enterRule(localctx, 98, self.RULE_disruptive_action_with_params) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 569 + self.state = 573 _la = self._input.LA(1) if not(_la==63 or _la==64): self._errHandler.recoverInline(self) @@ -5131,11 +5178,11 @@ def exitRule(self, listener:ParseTreeListener): def non_disruptive_action_with_params(self): localctx = SecLangParser.Non_disruptive_action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_non_disruptive_action_with_params) + self.enterRule(localctx, 100, self.RULE_non_disruptive_action_with_params) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 571 + self.state = 575 _la = self._input.LA(1) if not(((((_la - 29)) & ~0x3f) == 0 and ((1 << (_la - 29)) & 140058897809441) != 0)): self._errHandler.recoverInline(self) @@ -5181,11 +5228,11 @@ def exitRule(self, listener:ParseTreeListener): def data_action_with_params(self): localctx = SecLangParser.Data_action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_data_action_with_params) + self.enterRule(localctx, 102, self.RULE_data_action_with_params) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 573 + self.state = 577 _la = self._input.LA(1) if not(_la==80 or _la==83): self._errHandler.recoverInline(self) @@ -5231,11 +5278,11 @@ def exitRule(self, listener:ParseTreeListener): def flow_action_with_params(self): localctx = SecLangParser.Flow_action_with_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_flow_action_with_params) + self.enterRule(localctx, 104, self.RULE_flow_action_with_params) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 575 + self.state = 579 _la = self._input.LA(1) if not(_la==78 or _la==79): self._errHandler.recoverInline(self) @@ -5289,34 +5336,34 @@ def exitRule(self, listener:ParseTreeListener): def action_value(self): localctx = SecLangParser.Action_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_action_value) + self.enterRule(localctx, 106, self.RULE_action_value) try: - self.state = 586 + self.state = 590 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,63,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 577 + self.state = 581 self.action_value_types() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 578 + self.state = 582 self.match(SecLangParser.SINGLE_QUOTE) - self.state = 579 + self.state = 583 self.action_value_types() - self.state = 580 + self.state = 584 self.match(SecLangParser.SINGLE_QUOTE) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 582 + self.state = 586 self.match(SecLangParser.SINGLE_QUOTE) - self.state = 583 + self.state = 587 self.string_literal() - self.state = 584 + self.state = 588 self.match(SecLangParser.SINGLE_QUOTE) pass @@ -5389,53 +5436,53 @@ def exitRule(self, listener:ParseTreeListener): def action_value_types(self): localctx = SecLangParser.Action_value_typesContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_action_value_types) + self.enterRule(localctx, 108, self.RULE_action_value_types) try: - self.state = 599 + self.state = 603 self._errHandler.sync(self) token = self._input.LA(1) if token in [229]: self.enterOuterAlt(localctx, 1) - self.state = 588 + self.state = 592 self.match(SecLangParser.INT) pass elif token in [1, 2, 7, 245, 252]: self.enterOuterAlt(localctx, 2) - self.state = 589 + self.state = 593 self.collection_value() pass elif token in [237]: self.enterOuterAlt(localctx, 3) - self.state = 590 + self.state = 594 self.setvar_action() pass elif token in [35, 36, 37, 38, 39, 40, 41, 42, 43, 44]: self.enterOuterAlt(localctx, 4) - self.state = 591 + self.state = 595 self.ctl_action() - self.state = 592 + self.state = 596 self.assignment() - self.state = 593 + self.state = 597 self.values() pass elif token in [227]: self.enterOuterAlt(localctx, 5) - self.state = 595 + self.state = 599 self.match(SecLangParser.VARIABLE_NAME) pass elif token in [77]: self.enterOuterAlt(localctx, 6) - self.state = 596 + self.state = 600 self.match(SecLangParser.ACTION_SEVERITY_VALUE) pass elif token in [233]: self.enterOuterAlt(localctx, 7) - self.state = 597 + self.state = 601 self.match(SecLangParser.FREE_TEXT_QUOTE_MACRO_EXPANSION) pass elif token in [243]: self.enterOuterAlt(localctx, 8) - self.state = 598 + self.state = 602 self.match(SecLangParser.COMMA_SEPARATED_STRING) pass else: @@ -5477,10 +5524,10 @@ def exitRule(self, listener:ParseTreeListener): def string_literal(self): localctx = SecLangParser.String_literalContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_string_literal) + self.enterRule(localctx, 110, self.RULE_string_literal) try: self.enterOuterAlt(localctx, 1) - self.state = 601 + self.state = 605 self.match(SecLangParser.STRING_LITERAL) except RecognitionException as re: localctx.exception = re @@ -5545,11 +5592,11 @@ def exitRule(self, listener:ParseTreeListener): def ctl_action(self): localctx = SecLangParser.Ctl_actionContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_ctl_action) + self.enterRule(localctx, 112, self.RULE_ctl_action) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 603 + self.state = 607 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 35150012350464) != 0)): self._errHandler.recoverInline(self) @@ -5592,10 +5639,10 @@ def exitRule(self, listener:ParseTreeListener): def transformation_action_value(self): localctx = SecLangParser.Transformation_action_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_transformation_action_value) + self.enterRule(localctx, 114, self.RULE_transformation_action_value) try: self.enterOuterAlt(localctx, 1) - self.state = 605 + self.state = 609 self.match(SecLangParser.TRANSFORMATION_VALUE) except RecognitionException as re: localctx.exception = re @@ -5636,9 +5683,9 @@ def exitRule(self, listener:ParseTreeListener): def collection_value(self): localctx = SecLangParser.Collection_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_collection_value) + self.enterRule(localctx, 116, self.RULE_collection_value) try: - self.state = 610 + self.state = 614 self._errHandler.sync(self) token = self._input.LA(1) if token in [-1, 1, 2, 7, 8, 12, 87, 88, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 229, 235, 256, 258]: @@ -5647,12 +5694,12 @@ def collection_value(self): pass elif token in [245]: self.enterOuterAlt(localctx, 2) - self.state = 608 + self.state = 612 self.match(SecLangParser.XPATH_EXPRESSION) pass elif token in [252]: self.enterOuterAlt(localctx, 3) - self.state = 609 + self.state = 613 self.match(SecLangParser.COLLECTION_ELEMENT_VALUE) pass else: @@ -5710,18 +5757,18 @@ def exitRule(self, listener:ParseTreeListener): def setvar_action(self): localctx = SecLangParser.Setvar_actionContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_setvar_action) + self.enterRule(localctx, 118, self.RULE_setvar_action) try: self.enterOuterAlt(localctx, 1) - self.state = 612 + self.state = 616 self.col_name() - self.state = 613 + self.state = 617 self.match(SecLangParser.DOT) - self.state = 614 + self.state = 618 self.setvar_stmt() - self.state = 615 + self.state = 619 self.assignment() - self.state = 616 + self.state = 620 self.var_assignment() except RecognitionException as re: localctx.exception = re @@ -5759,10 +5806,10 @@ def exitRule(self, listener:ParseTreeListener): def col_name(self): localctx = SecLangParser.Col_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_col_name) + self.enterRule(localctx, 120, self.RULE_col_name) try: self.enterOuterAlt(localctx, 1) - self.state = 618 + self.state = 622 self.match(SecLangParser.COLLECTION_NAME_SETVAR) except RecognitionException as re: localctx.exception = re @@ -5815,31 +5862,31 @@ def exitRule(self, listener:ParseTreeListener): def setvar_stmt(self): localctx = SecLangParser.Setvar_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_setvar_stmt) + self.enterRule(localctx, 122, self.RULE_setvar_stmt) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 623 + self.state = 627 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 623 + self.state = 627 self._errHandler.sync(self) token = self._input.LA(1) if token in [239]: - self.state = 620 + self.state = 624 self.match(SecLangParser.COLLECTION_ELEMENT) pass elif token in [240]: - self.state = 621 + self.state = 625 self.match(SecLangParser.COLLECTION_WITH_MACRO) - self.state = 622 + self.state = 626 self.match(SecLangParser.MACRO_EXPANSION) pass else: raise NoViableAltException(self) - self.state = 625 + self.state = 629 self._errHandler.sync(self) _la = self._input.LA(1) if not (_la==239 or _la==240): @@ -5887,11 +5934,11 @@ def exitRule(self, listener:ParseTreeListener): def assignment(self): localctx = SecLangParser.AssignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_assignment) + self.enterRule(localctx, 124, self.RULE_assignment) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 627 + self.state = 631 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 104) != 0)): self._errHandler.recoverInline(self) @@ -5934,10 +5981,10 @@ def exitRule(self, listener:ParseTreeListener): def var_assignment(self): localctx = SecLangParser.Var_assignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_var_assignment) + self.enterRule(localctx, 126, self.RULE_var_assignment) try: self.enterOuterAlt(localctx, 1) - self.state = 629 + self.state = 633 self.match(SecLangParser.VAR_ASSIGNMENT) except RecognitionException as re: localctx.exception = re @@ -5948,6 +5995,56 @@ def var_assignment(self): return localctx + class Ctl_idContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INT(self): + return self.getToken(SecLangParser.INT, 0) + + def IDENT(self): + return self.getToken(SecLangParser.IDENT, 0) + + def getRuleIndex(self): + return SecLangParser.RULE_ctl_id + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCtl_id" ): + listener.enterCtl_id(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCtl_id" ): + listener.exitCtl_id(self) + + + + + def ctl_id(self): + + localctx = SecLangParser.Ctl_idContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_ctl_id) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 635 + _la = self._input.LA(1) + if not(_la==228 or _la==229): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + diff --git a/src/seclang_parser/SecLangParserListener.py b/src/seclang_parser/SecLangParserListener.py index 5f8fd7d..9c4a6aa 100644 --- a/src/seclang_parser/SecLangParserListener.py +++ b/src/seclang_parser/SecLangParserListener.py @@ -170,6 +170,15 @@ def exitRemove_rule_by_tag(self, ctx:SecLangParser.Remove_rule_by_tagContext): pass + # Enter a parse tree produced by SecLangParser#string_remove_rules_values. + def enterString_remove_rules_values(self, ctx:SecLangParser.String_remove_rules_valuesContext): + pass + + # Exit a parse tree produced by SecLangParser#string_remove_rules_values. + def exitString_remove_rules_values(self, ctx:SecLangParser.String_remove_rules_valuesContext): + pass + + # Enter a parse tree produced by SecLangParser#update_target_by_id. def enterUpdate_target_by_id(self, ctx:SecLangParser.Update_target_by_idContext): pass @@ -683,5 +692,14 @@ def exitVar_assignment(self, ctx:SecLangParser.Var_assignmentContext): pass + # Enter a parse tree produced by SecLangParser#ctl_id. + def enterCtl_id(self, ctx:SecLangParser.Ctl_idContext): + pass + + # Exit a parse tree produced by SecLangParser#ctl_id. + def exitCtl_id(self, ctx:SecLangParser.Ctl_idContext): + pass + + del SecLangParser \ No newline at end of file From 0177997b81f1fccb22cfba3721a4185ab9230e3a Mon Sep 17 00:00:00 2001 From: Agustindeleon Date: Sun, 23 Nov 2025 10:55:28 +0100 Subject: [PATCH 2/3] test: add test for arguments with colons --- parser_test.go | 15 ++++++++++++++- testdata/test_43_colon.conf | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 testdata/test_43_colon.conf diff --git a/parser_test.go b/parser_test.go index 4ac0eca..01d1de3 100644 --- a/parser_test.go +++ b/parser_test.go @@ -342,10 +342,23 @@ var checkOutputTests = map[string]struct { directiveList: []string{"SecRule", "SecRule", "SecRule"}, setvarCollections: []string{"tx", "tx", "tx", "tx", "tx", "tx"}, setvarNames: []string{"var1", "var2", "var2", "var2", "header_name_920450_%{tx.0}", "inbound_anomaly_score_pl1"}, - setvarOperations: []string{"=", "=", "=+", "=-", "=", "=+"}, + assignmentOperations: []string{"=", "=", "=+", "=-", "=", "=+"}, directiveValues: []string{"bar", "0", "2", "1", "/%{tx.0}/", "%{tx.critical_anomaly_score}"}, }, }, + "testdata/test_43_colon.conf": { + 0, + "", + ParserResult{ + collections: []string{"TX", "TX"}, + operatorList: []string{"unconditionalMatch"}, + directiveList: []string{"SecRule"}, + collectionArgs: []string{"paramcounter_ARGS_NAMES:folders.folders", "paramcounter_ARGS_NAMES:folders.folders"}, + directiveValues: []string{"ruleRemoveTargetById", "921180"}, + // directiveValues: []string{"ruleRemoveTargetById", "921180;TX:paramcounter_ARGS_NAMES:folders.folders", "921180"}, + assignmentOperations: []string{"="}, + }, + }, } func TestSecLang(t *testing.T) { diff --git a/testdata/test_43_colon.conf b/testdata/test_43_colon.conf new file mode 100644 index 0000000..06d7948 --- /dev/null +++ b/testdata/test_43_colon.conf @@ -0,0 +1,7 @@ +SecRule TX:paramcounter_ARGS_NAMES:folders.folders "@unconditionalMatch" \ + "id:1,\ + phase:1,\ + pass,\ + t:none,\ + nolog,\ + ctl:ruleRemoveTargetById=921180;TX:paramcounter_ARGS_NAMES:folders.folders" \ No newline at end of file From 4156b9b2686157da0aecf5fba8dc2bd6a74b5cad Mon Sep 17 00:00:00 2001 From: Felipe Zipitria Date: Sun, 23 Nov 2025 15:00:19 +0100 Subject: [PATCH 3/3] fix: update python tests Signed-off-by: Felipe Zipitria --- src/seclang_parser/listener.py | 8 +++++++- tests/test_parser.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/seclang_parser/listener.py b/src/seclang_parser/listener.py index 5ee761b..9ecde0c 100644 --- a/src/seclang_parser/listener.py +++ b/src/seclang_parser/listener.py @@ -64,7 +64,7 @@ def enterRemove_rule_by_msg(self, ctx: SecLangParser.Remove_rule_by_msgContext): def enterRemove_rule_by_tag(self, ctx: SecLangParser.Remove_rule_by_tagContext): self.results.directive_list.append(ctx.getText()) - def enterValues(self, ctx: SecLangParser.ValuesContext): + def enterString_remove_rules_values(self, ctx: SecLangParser.String_remove_rules_valuesContext): self.results.directive_values.append(ctx.getText()) def enterUpdate_target_by_id(self, ctx: SecLangParser.Update_target_by_idContext): @@ -119,3 +119,9 @@ def enterAssignment(self, ctx: SecLangParser.AssignmentContext): def enterVar_assignment(self, ctx: SecLangParser.Var_assignmentContext): self.results.directive_values.append(ctx.getText()) + + def enterCtl_action(self, ctx: SecLangParser.Ctl_actionContext): + self.results.directive_values.append(ctx.getText()) + + def enterCtl_id(self, ctx: SecLangParser.Ctl_idContext): + self.results.directive_values.append(ctx.getText()) diff --git a/tests/test_parser.py b/tests/test_parser.py index 4e4670d..807fbfc 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -358,6 +358,18 @@ directive_values=["bar", "0", "2", "1", "/%{tx.0}/", "%{tx.critical_anomaly_score}"], ), }, + "testdata/test_43_colon.conf": { + "error_count": 0, + "comment": "", + "expected_result": ParserResult( + collections=["TX", "TX"], + operator_list=["unconditionalMatch"], + directive_list=["SecRule"], + collection_args=["paramcounter_ARGS_NAMES:folders.folders", "paramcounter_ARGS_NAMES:folders.folders"], + directive_values=["ruleRemoveTargetById", "921180"], + setvar_operations=["="], + ), + }, }