From 27959da173682251ee26974e6dd3ba5591f1162a Mon Sep 17 00:00:00 2001 From: lkerford Date: Fri, 11 Oct 2024 10:38:59 -0700 Subject: [PATCH] Support parsing the Metadata field in html using the XML parser We want to be able to parse HTML using the XML parse, this change will enable us to parse the meta table tags --- rewrite-xml/src/main/antlr/XMLLexer.g4 | 1 + rewrite-xml/src/main/antlr/XMLLexer.tokens | 14 +- rewrite-xml/src/main/antlr/XMLParser.g4 | 6 +- .../xml/internal/grammar/XMLLexer.interp | 5 +- .../xml/internal/grammar/XMLLexer.java | 490 +++++++-------- .../xml/internal/grammar/XMLLexer.tokens | 13 +- .../xml/internal/grammar/XMLParser.interp | 5 +- .../xml/internal/grammar/XMLParser.java | 575 ++++++++++-------- .../xml/internal/grammar/XMLParser.tokens | 13 +- .../grammar/XMLParserBaseListener.java | 12 + .../grammar/XMLParserBaseVisitor.java | 7 + .../internal/grammar/XMLParserListener.java | 10 + .../internal/grammar/XMLParserVisitor.java | 6 + .../org/openrewrite/xml/XmlParserTest.java | 19 + 14 files changed, 665 insertions(+), 511 deletions(-) diff --git a/rewrite-xml/src/main/antlr/XMLLexer.g4 b/rewrite-xml/src/main/antlr/XMLLexer.g4 index 85886cbdd4a..7db2097b35a 100755 --- a/rewrite-xml/src/main/antlr/XMLLexer.g4 +++ b/rewrite-xml/src/main/antlr/XMLLexer.g4 @@ -121,6 +121,7 @@ S : [ \t\r\n] -> skip ; // JSP extension to the XML spec DIRECTIVE_OPEN : '%@' ; DIRECTIVE_CLOSE: '%'; +META options { caseInsensitive = true; } : 'meta' ; SLASH : '/' ; EQUALS : '=' ; diff --git a/rewrite-xml/src/main/antlr/XMLLexer.tokens b/rewrite-xml/src/main/antlr/XMLLexer.tokens index 0c687a418d2..68761a1fcb8 100755 --- a/rewrite-xml/src/main/antlr/XMLLexer.tokens +++ b/rewrite-xml/src/main/antlr/XMLLexer.tokens @@ -30,15 +30,15 @@ SLASH_CLOSE=29 S=30 DIRECTIVE_OPEN=31 DIRECTIVE_CLOSE=32 -SLASH=33 -EQUALS=34 -STRING=35 -Name=36 +META=33 +SLASH=34 +EQUALS=35 +STRING=36 +Name=37 '?'=8 '<'=10 -'DOCTYPE'=17 '/>'=29 '%@'=31 '%'=32 -'/'=33 -'='=34 +'/'=34 +'='=35 diff --git a/rewrite-xml/src/main/antlr/XMLParser.g4 b/rewrite-xml/src/main/antlr/XMLParser.g4 index d91c334a356..e76fb792a22 100755 --- a/rewrite-xml/src/main/antlr/XMLParser.g4 +++ b/rewrite-xml/src/main/antlr/XMLParser.g4 @@ -51,6 +51,10 @@ doctypedecl : DTD_OPEN DOCTYPE Name externalid STRING* (DTD_SUBSET_OPEN intsubset DTD_SUBSET_CLOSE)? DTD_CLOSE ; +metadata + : OPEN META attribute* CLOSE + ; + intsubset : (markupdecl | declSep)* ; @@ -73,7 +77,7 @@ processinginstruction ; content - : (element | reference | processinginstruction | CDATA | COMMENT | chardata) ; + : (metadata | element | reference | processinginstruction | CDATA | COMMENT | chardata ) ; element : OPEN Name attribute* CLOSE content* OPEN '/' Name CLOSE diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp index 15146f8a520..7fa884ddd37 100644 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp @@ -32,6 +32,7 @@ null null '%@' '%' +null '/' '=' null @@ -71,6 +72,7 @@ SLASH_CLOSE S DIRECTIVE_OPEN DIRECTIVE_CLOSE +META SLASH EQUALS STRING @@ -120,6 +122,7 @@ SLASH_CLOSE S DIRECTIVE_OPEN DIRECTIVE_CLOSE +META SLASH EQUALS STRING @@ -144,4 +147,4 @@ INSIDE_PI_TEXT INSIDE atn: -[4, 0, 36, 393, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 117, 8, 0, 10, 0, 12, 0, 120, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 137, 8, 1, 10, 1, 12, 1, 140, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 158, 8, 4, 11, 4, 12, 4, 159, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 169, 8, 4, 11, 4, 12, 4, 170, 1, 4, 1, 4, 3, 4, 175, 8, 4, 1, 5, 1, 5, 3, 5, 179, 8, 5, 1, 5, 4, 5, 182, 8, 5, 11, 5, 12, 5, 183, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 190, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 220, 8, 12, 11, 12, 12, 12, 221, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 293, 8, 29, 11, 29, 12, 29, 294, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 320, 8, 35, 11, 35, 12, 35, 321, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 5, 45, 358, 8, 45, 10, 45, 12, 45, 361, 9, 45, 1, 45, 1, 45, 1, 45, 5, 45, 366, 8, 45, 10, 45, 12, 45, 369, 9, 45, 1, 45, 3, 45, 372, 8, 45, 1, 46, 1, 46, 5, 46, 376, 8, 46, 10, 46, 12, 46, 379, 9, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 389, 8, 49, 1, 50, 3, 50, 392, 8, 50, 2, 118, 138, 0, 51, 8, 1, 10, 2, 12, 3, 14, 4, 16, 5, 18, 6, 20, 7, 22, 8, 24, 9, 26, 10, 28, 11, 30, 12, 32, 13, 34, 0, 36, 0, 38, 14, 40, 15, 42, 16, 44, 17, 46, 0, 48, 0, 50, 18, 52, 19, 54, 20, 56, 0, 58, 0, 60, 21, 62, 0, 64, 22, 66, 23, 68, 24, 70, 0, 72, 0, 74, 25, 76, 0, 78, 26, 80, 0, 82, 27, 84, 28, 86, 29, 88, 30, 90, 31, 92, 32, 94, 33, 96, 34, 98, 35, 100, 36, 102, 0, 104, 0, 106, 0, 108, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 19, 2, 0, 9, 9, 32, 32, 2, 0, 38, 38, 60, 60, 2, 0, 68, 68, 100, 100, 2, 0, 79, 79, 111, 111, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 89, 89, 121, 121, 2, 0, 80, 80, 112, 112, 2, 0, 69, 69, 101, 101, 2, 0, 62, 62, 91, 91, 1, 0, 63, 63, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 34, 34, 60, 60, 2, 0, 39, 39, 60, 60, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 45, 46, 95, 95, 3, 0, 183, 183, 768, 879, 8255, 8256, 15, 0, 58, 58, 65, 90, 95, 95, 97, 122, 192, 214, 216, 246, 248, 767, 880, 893, 895, 8191, 8204, 8205, 8304, 8591, 12289, 55295, 63744, 64975, 65008, 65533, 65536, 983039, 398, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 1, 38, 1, 0, 0, 0, 1, 40, 1, 0, 0, 0, 1, 42, 1, 0, 0, 0, 1, 44, 1, 0, 0, 0, 1, 46, 1, 0, 0, 0, 1, 48, 1, 0, 0, 0, 2, 50, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 2, 56, 1, 0, 0, 0, 2, 58, 1, 0, 0, 0, 3, 60, 1, 0, 0, 0, 3, 62, 1, 0, 0, 0, 3, 64, 1, 0, 0, 0, 3, 66, 1, 0, 0, 0, 4, 68, 1, 0, 0, 0, 4, 70, 1, 0, 0, 0, 5, 72, 1, 0, 0, 0, 5, 74, 1, 0, 0, 0, 5, 76, 1, 0, 0, 0, 5, 78, 1, 0, 0, 0, 6, 80, 1, 0, 0, 0, 7, 82, 1, 0, 0, 0, 7, 84, 1, 0, 0, 0, 7, 86, 1, 0, 0, 0, 7, 88, 1, 0, 0, 0, 7, 90, 1, 0, 0, 0, 7, 92, 1, 0, 0, 0, 7, 94, 1, 0, 0, 0, 7, 96, 1, 0, 0, 0, 7, 98, 1, 0, 0, 0, 7, 100, 1, 0, 0, 0, 8, 110, 1, 0, 0, 0, 10, 125, 1, 0, 0, 0, 12, 145, 1, 0, 0, 0, 14, 149, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 181, 1, 0, 0, 0, 20, 189, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, 24, 195, 1, 0, 0, 0, 26, 203, 1, 0, 0, 0, 28, 207, 1, 0, 0, 0, 30, 213, 1, 0, 0, 0, 32, 219, 1, 0, 0, 0, 34, 223, 1, 0, 0, 0, 36, 227, 1, 0, 0, 0, 38, 229, 1, 0, 0, 0, 40, 233, 1, 0, 0, 0, 42, 237, 1, 0, 0, 0, 44, 241, 1, 0, 0, 0, 46, 249, 1, 0, 0, 0, 48, 253, 1, 0, 0, 0, 50, 257, 1, 0, 0, 0, 52, 261, 1, 0, 0, 0, 54, 266, 1, 0, 0, 0, 56, 270, 1, 0, 0, 0, 58, 274, 1, 0, 0, 0, 60, 278, 1, 0, 0, 0, 62, 282, 1, 0, 0, 0, 64, 287, 1, 0, 0, 0, 66, 292, 1, 0, 0, 0, 68, 296, 1, 0, 0, 0, 70, 300, 1, 0, 0, 0, 72, 304, 1, 0, 0, 0, 74, 309, 1, 0, 0, 0, 76, 313, 1, 0, 0, 0, 78, 319, 1, 0, 0, 0, 80, 323, 1, 0, 0, 0, 82, 328, 1, 0, 0, 0, 84, 332, 1, 0, 0, 0, 86, 337, 1, 0, 0, 0, 88, 342, 1, 0, 0, 0, 90, 346, 1, 0, 0, 0, 92, 349, 1, 0, 0, 0, 94, 351, 1, 0, 0, 0, 96, 353, 1, 0, 0, 0, 98, 371, 1, 0, 0, 0, 100, 373, 1, 0, 0, 0, 102, 380, 1, 0, 0, 0, 104, 382, 1, 0, 0, 0, 106, 388, 1, 0, 0, 0, 108, 391, 1, 0, 0, 0, 110, 111, 5, 60, 0, 0, 111, 112, 5, 33, 0, 0, 112, 113, 5, 45, 0, 0, 113, 114, 5, 45, 0, 0, 114, 118, 1, 0, 0, 0, 115, 117, 9, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 120, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 119, 121, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 122, 5, 45, 0, 0, 122, 123, 5, 45, 0, 0, 123, 124, 5, 62, 0, 0, 124, 9, 1, 0, 0, 0, 125, 126, 5, 60, 0, 0, 126, 127, 5, 33, 0, 0, 127, 128, 5, 91, 0, 0, 128, 129, 5, 67, 0, 0, 129, 130, 5, 68, 0, 0, 130, 131, 5, 65, 0, 0, 131, 132, 5, 84, 0, 0, 132, 133, 5, 65, 0, 0, 133, 134, 5, 91, 0, 0, 134, 138, 1, 0, 0, 0, 135, 137, 9, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 142, 5, 93, 0, 0, 142, 143, 5, 93, 0, 0, 143, 144, 5, 62, 0, 0, 144, 11, 1, 0, 0, 0, 145, 146, 5, 37, 0, 0, 146, 147, 3, 100, 46, 0, 147, 148, 5, 59, 0, 0, 148, 13, 1, 0, 0, 0, 149, 150, 5, 38, 0, 0, 150, 151, 3, 100, 46, 0, 151, 152, 5, 59, 0, 0, 152, 15, 1, 0, 0, 0, 153, 154, 5, 38, 0, 0, 154, 155, 5, 35, 0, 0, 155, 157, 1, 0, 0, 0, 156, 158, 3, 104, 48, 0, 157, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 5, 59, 0, 0, 162, 175, 1, 0, 0, 0, 163, 164, 5, 38, 0, 0, 164, 165, 5, 35, 0, 0, 165, 166, 5, 120, 0, 0, 166, 168, 1, 0, 0, 0, 167, 169, 3, 102, 47, 0, 168, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 59, 0, 0, 173, 175, 1, 0, 0, 0, 174, 153, 1, 0, 0, 0, 174, 163, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 182, 7, 0, 0, 0, 177, 179, 5, 13, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 182, 5, 10, 0, 0, 181, 176, 1, 0, 0, 0, 181, 178, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 6, 5, 0, 0, 186, 19, 1, 0, 0, 0, 187, 190, 3, 34, 13, 0, 188, 190, 3, 36, 14, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 6, 6, 0, 0, 192, 21, 1, 0, 0, 0, 193, 194, 5, 63, 0, 0, 194, 23, 1, 0, 0, 0, 195, 196, 5, 60, 0, 0, 196, 197, 3, 22, 7, 0, 197, 198, 5, 120, 0, 0, 198, 199, 5, 109, 0, 0, 199, 200, 5, 108, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 6, 8, 1, 0, 202, 25, 1, 0, 0, 0, 203, 204, 5, 60, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 6, 9, 1, 0, 206, 27, 1, 0, 0, 0, 207, 208, 5, 60, 0, 0, 208, 209, 3, 22, 7, 0, 209, 210, 3, 100, 46, 0, 210, 211, 1, 0, 0, 0, 211, 212, 6, 10, 2, 0, 212, 29, 1, 0, 0, 0, 213, 214, 5, 60, 0, 0, 214, 215, 5, 33, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 6, 11, 3, 0, 217, 31, 1, 0, 0, 0, 218, 220, 8, 1, 0, 0, 219, 218, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 239, 0, 0, 224, 225, 5, 187, 0, 0, 225, 226, 5, 191, 0, 0, 226, 35, 1, 0, 0, 0, 227, 228, 5, 65279, 0, 0, 228, 37, 1, 0, 0, 0, 229, 230, 5, 62, 0, 0, 230, 231, 1, 0, 0, 0, 231, 232, 6, 15, 4, 0, 232, 39, 1, 0, 0, 0, 233, 234, 5, 91, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 6, 16, 5, 0, 236, 41, 1, 0, 0, 0, 237, 238, 3, 88, 40, 0, 238, 239, 1, 0, 0, 0, 239, 240, 6, 17, 0, 0, 240, 43, 1, 0, 0, 0, 241, 242, 7, 2, 0, 0, 242, 243, 7, 3, 0, 0, 243, 244, 7, 4, 0, 0, 244, 245, 7, 5, 0, 0, 245, 246, 7, 6, 0, 0, 246, 247, 7, 7, 0, 0, 247, 248, 7, 8, 0, 0, 248, 45, 1, 0, 0, 0, 249, 250, 3, 100, 46, 0, 250, 251, 1, 0, 0, 0, 251, 252, 6, 19, 6, 0, 252, 47, 1, 0, 0, 0, 253, 254, 3, 98, 45, 0, 254, 255, 1, 0, 0, 0, 255, 256, 6, 20, 7, 0, 256, 49, 1, 0, 0, 0, 257, 258, 5, 93, 0, 0, 258, 259, 1, 0, 0, 0, 259, 260, 6, 21, 4, 0, 260, 51, 1, 0, 0, 0, 261, 262, 5, 60, 0, 0, 262, 263, 5, 33, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 6, 22, 8, 0, 265, 53, 1, 0, 0, 0, 266, 267, 3, 88, 40, 0, 267, 268, 1, 0, 0, 0, 268, 269, 6, 23, 0, 0, 269, 55, 1, 0, 0, 0, 270, 271, 3, 12, 2, 0, 271, 272, 1, 0, 0, 0, 272, 273, 6, 24, 9, 0, 273, 57, 1, 0, 0, 0, 274, 275, 3, 8, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 6, 25, 10, 0, 277, 59, 1, 0, 0, 0, 278, 279, 5, 62, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 6, 26, 4, 0, 281, 61, 1, 0, 0, 0, 282, 283, 5, 91, 0, 0, 283, 284, 1, 0, 0, 0, 284, 285, 6, 27, 11, 0, 285, 286, 6, 27, 12, 0, 286, 63, 1, 0, 0, 0, 287, 288, 3, 88, 40, 0, 288, 289, 1, 0, 0, 0, 289, 290, 6, 28, 0, 0, 290, 65, 1, 0, 0, 0, 291, 293, 8, 9, 0, 0, 292, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 67, 1, 0, 0, 0, 296, 297, 5, 93, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 6, 30, 4, 0, 299, 69, 1, 0, 0, 0, 300, 301, 9, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 6, 31, 11, 0, 303, 71, 1, 0, 0, 0, 304, 305, 3, 84, 38, 0, 305, 306, 1, 0, 0, 0, 306, 307, 6, 32, 13, 0, 307, 308, 6, 32, 4, 0, 308, 73, 1, 0, 0, 0, 309, 310, 3, 88, 40, 0, 310, 311, 1, 0, 0, 0, 311, 312, 6, 33, 0, 0, 312, 75, 1, 0, 0, 0, 313, 314, 3, 22, 7, 0, 314, 315, 1, 0, 0, 0, 315, 316, 6, 34, 11, 0, 316, 317, 6, 34, 14, 0, 317, 77, 1, 0, 0, 0, 318, 320, 8, 10, 0, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 79, 1, 0, 0, 0, 323, 324, 9, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 326, 6, 36, 11, 0, 326, 327, 6, 36, 4, 0, 327, 81, 1, 0, 0, 0, 328, 329, 5, 62, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 6, 37, 4, 0, 331, 83, 1, 0, 0, 0, 332, 333, 3, 22, 7, 0, 333, 334, 5, 62, 0, 0, 334, 335, 1, 0, 0, 0, 335, 336, 6, 38, 4, 0, 336, 85, 1, 0, 0, 0, 337, 338, 5, 47, 0, 0, 338, 339, 5, 62, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 6, 39, 4, 0, 341, 87, 1, 0, 0, 0, 342, 343, 7, 11, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 6, 40, 0, 0, 345, 89, 1, 0, 0, 0, 346, 347, 5, 37, 0, 0, 347, 348, 5, 64, 0, 0, 348, 91, 1, 0, 0, 0, 349, 350, 5, 37, 0, 0, 350, 93, 1, 0, 0, 0, 351, 352, 5, 47, 0, 0, 352, 95, 1, 0, 0, 0, 353, 354, 5, 61, 0, 0, 354, 97, 1, 0, 0, 0, 355, 359, 5, 34, 0, 0, 356, 358, 8, 12, 0, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 372, 5, 34, 0, 0, 363, 367, 5, 39, 0, 0, 364, 366, 8, 13, 0, 0, 365, 364, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 372, 5, 39, 0, 0, 371, 355, 1, 0, 0, 0, 371, 363, 1, 0, 0, 0, 372, 99, 1, 0, 0, 0, 373, 377, 3, 108, 50, 0, 374, 376, 3, 106, 49, 0, 375, 374, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 101, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 103, 1, 0, 0, 0, 382, 383, 7, 15, 0, 0, 383, 105, 1, 0, 0, 0, 384, 389, 3, 108, 50, 0, 385, 389, 7, 16, 0, 0, 386, 389, 3, 104, 48, 0, 387, 389, 7, 17, 0, 0, 388, 384, 1, 0, 0, 0, 388, 385, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 387, 1, 0, 0, 0, 389, 107, 1, 0, 0, 0, 390, 392, 7, 18, 0, 0, 391, 390, 1, 0, 0, 0, 392, 109, 1, 0, 0, 0, 26, 0, 1, 2, 3, 4, 5, 6, 7, 118, 138, 159, 170, 174, 178, 181, 183, 189, 221, 294, 321, 359, 367, 371, 377, 388, 391, 15, 6, 0, 0, 5, 7, 0, 5, 5, 0, 5, 1, 0, 4, 0, 0, 5, 2, 0, 7, 36, 0, 7, 35, 0, 5, 3, 0, 7, 3, 0, 7, 1, 0, 3, 0, 0, 5, 4, 0, 7, 28, 0, 5, 6, 0] \ No newline at end of file +[4, 0, 37, 400, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 119, 8, 0, 10, 0, 12, 0, 122, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 139, 8, 1, 10, 1, 12, 1, 142, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 160, 8, 4, 11, 4, 12, 4, 161, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 171, 8, 4, 11, 4, 12, 4, 172, 1, 4, 1, 4, 3, 4, 177, 8, 4, 1, 5, 1, 5, 3, 5, 181, 8, 5, 1, 5, 4, 5, 184, 8, 5, 11, 5, 12, 5, 185, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 192, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 222, 8, 12, 11, 12, 12, 12, 223, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 295, 8, 29, 11, 29, 12, 29, 296, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 322, 8, 35, 11, 35, 12, 35, 323, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 5, 46, 365, 8, 46, 10, 46, 12, 46, 368, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, 373, 8, 46, 10, 46, 12, 46, 376, 9, 46, 1, 46, 3, 46, 379, 8, 46, 1, 47, 1, 47, 5, 47, 383, 8, 47, 10, 47, 12, 47, 386, 9, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 396, 8, 50, 1, 51, 3, 51, 399, 8, 51, 2, 120, 140, 0, 52, 8, 1, 10, 2, 12, 3, 14, 4, 16, 5, 18, 6, 20, 7, 22, 8, 24, 9, 26, 10, 28, 11, 30, 12, 32, 13, 34, 0, 36, 0, 38, 14, 40, 15, 42, 16, 44, 17, 46, 0, 48, 0, 50, 18, 52, 19, 54, 20, 56, 0, 58, 0, 60, 21, 62, 0, 64, 22, 66, 23, 68, 24, 70, 0, 72, 0, 74, 25, 76, 0, 78, 26, 80, 0, 82, 27, 84, 28, 86, 29, 88, 30, 90, 31, 92, 32, 94, 33, 96, 34, 98, 35, 100, 36, 102, 37, 104, 0, 106, 0, 108, 0, 110, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 21, 2, 0, 9, 9, 32, 32, 2, 0, 38, 38, 60, 60, 2, 0, 68, 68, 100, 100, 2, 0, 79, 79, 111, 111, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 89, 89, 121, 121, 2, 0, 80, 80, 112, 112, 2, 0, 69, 69, 101, 101, 2, 0, 62, 62, 91, 91, 1, 0, 63, 63, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 77, 77, 109, 109, 2, 0, 65, 65, 97, 97, 2, 0, 34, 34, 60, 60, 2, 0, 39, 39, 60, 60, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 45, 46, 95, 95, 3, 0, 183, 183, 768, 879, 8255, 8256, 15, 0, 58, 58, 65, 90, 95, 95, 97, 122, 192, 214, 216, 246, 248, 767, 880, 893, 895, 8191, 8204, 8205, 8304, 8591, 12289, 55295, 63744, 64975, 65008, 65533, 65536, 983039, 405, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 1, 38, 1, 0, 0, 0, 1, 40, 1, 0, 0, 0, 1, 42, 1, 0, 0, 0, 1, 44, 1, 0, 0, 0, 1, 46, 1, 0, 0, 0, 1, 48, 1, 0, 0, 0, 2, 50, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 2, 56, 1, 0, 0, 0, 2, 58, 1, 0, 0, 0, 3, 60, 1, 0, 0, 0, 3, 62, 1, 0, 0, 0, 3, 64, 1, 0, 0, 0, 3, 66, 1, 0, 0, 0, 4, 68, 1, 0, 0, 0, 4, 70, 1, 0, 0, 0, 5, 72, 1, 0, 0, 0, 5, 74, 1, 0, 0, 0, 5, 76, 1, 0, 0, 0, 5, 78, 1, 0, 0, 0, 6, 80, 1, 0, 0, 0, 7, 82, 1, 0, 0, 0, 7, 84, 1, 0, 0, 0, 7, 86, 1, 0, 0, 0, 7, 88, 1, 0, 0, 0, 7, 90, 1, 0, 0, 0, 7, 92, 1, 0, 0, 0, 7, 94, 1, 0, 0, 0, 7, 96, 1, 0, 0, 0, 7, 98, 1, 0, 0, 0, 7, 100, 1, 0, 0, 0, 7, 102, 1, 0, 0, 0, 8, 112, 1, 0, 0, 0, 10, 127, 1, 0, 0, 0, 12, 147, 1, 0, 0, 0, 14, 151, 1, 0, 0, 0, 16, 176, 1, 0, 0, 0, 18, 183, 1, 0, 0, 0, 20, 191, 1, 0, 0, 0, 22, 195, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 205, 1, 0, 0, 0, 28, 209, 1, 0, 0, 0, 30, 215, 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 225, 1, 0, 0, 0, 36, 229, 1, 0, 0, 0, 38, 231, 1, 0, 0, 0, 40, 235, 1, 0, 0, 0, 42, 239, 1, 0, 0, 0, 44, 243, 1, 0, 0, 0, 46, 251, 1, 0, 0, 0, 48, 255, 1, 0, 0, 0, 50, 259, 1, 0, 0, 0, 52, 263, 1, 0, 0, 0, 54, 268, 1, 0, 0, 0, 56, 272, 1, 0, 0, 0, 58, 276, 1, 0, 0, 0, 60, 280, 1, 0, 0, 0, 62, 284, 1, 0, 0, 0, 64, 289, 1, 0, 0, 0, 66, 294, 1, 0, 0, 0, 68, 298, 1, 0, 0, 0, 70, 302, 1, 0, 0, 0, 72, 306, 1, 0, 0, 0, 74, 311, 1, 0, 0, 0, 76, 315, 1, 0, 0, 0, 78, 321, 1, 0, 0, 0, 80, 325, 1, 0, 0, 0, 82, 330, 1, 0, 0, 0, 84, 334, 1, 0, 0, 0, 86, 339, 1, 0, 0, 0, 88, 344, 1, 0, 0, 0, 90, 348, 1, 0, 0, 0, 92, 351, 1, 0, 0, 0, 94, 353, 1, 0, 0, 0, 96, 358, 1, 0, 0, 0, 98, 360, 1, 0, 0, 0, 100, 378, 1, 0, 0, 0, 102, 380, 1, 0, 0, 0, 104, 387, 1, 0, 0, 0, 106, 389, 1, 0, 0, 0, 108, 395, 1, 0, 0, 0, 110, 398, 1, 0, 0, 0, 112, 113, 5, 60, 0, 0, 113, 114, 5, 33, 0, 0, 114, 115, 5, 45, 0, 0, 115, 116, 5, 45, 0, 0, 116, 120, 1, 0, 0, 0, 117, 119, 9, 0, 0, 0, 118, 117, 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 45, 0, 0, 124, 125, 5, 45, 0, 0, 125, 126, 5, 62, 0, 0, 126, 9, 1, 0, 0, 0, 127, 128, 5, 60, 0, 0, 128, 129, 5, 33, 0, 0, 129, 130, 5, 91, 0, 0, 130, 131, 5, 67, 0, 0, 131, 132, 5, 68, 0, 0, 132, 133, 5, 65, 0, 0, 133, 134, 5, 84, 0, 0, 134, 135, 5, 65, 0, 0, 135, 136, 5, 91, 0, 0, 136, 140, 1, 0, 0, 0, 137, 139, 9, 0, 0, 0, 138, 137, 1, 0, 0, 0, 139, 142, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 143, 144, 5, 93, 0, 0, 144, 145, 5, 93, 0, 0, 145, 146, 5, 62, 0, 0, 146, 11, 1, 0, 0, 0, 147, 148, 5, 37, 0, 0, 148, 149, 3, 102, 47, 0, 149, 150, 5, 59, 0, 0, 150, 13, 1, 0, 0, 0, 151, 152, 5, 38, 0, 0, 152, 153, 3, 102, 47, 0, 153, 154, 5, 59, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, 38, 0, 0, 156, 157, 5, 35, 0, 0, 157, 159, 1, 0, 0, 0, 158, 160, 3, 106, 49, 0, 159, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 5, 59, 0, 0, 164, 177, 1, 0, 0, 0, 165, 166, 5, 38, 0, 0, 166, 167, 5, 35, 0, 0, 167, 168, 5, 120, 0, 0, 168, 170, 1, 0, 0, 0, 169, 171, 3, 104, 48, 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, 174, 1, 0, 0, 0, 174, 175, 5, 59, 0, 0, 175, 177, 1, 0, 0, 0, 176, 155, 1, 0, 0, 0, 176, 165, 1, 0, 0, 0, 177, 17, 1, 0, 0, 0, 178, 184, 7, 0, 0, 0, 179, 181, 5, 13, 0, 0, 180, 179, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 184, 5, 10, 0, 0, 183, 178, 1, 0, 0, 0, 183, 180, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 6, 5, 0, 0, 188, 19, 1, 0, 0, 0, 189, 192, 3, 34, 13, 0, 190, 192, 3, 36, 14, 0, 191, 189, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 194, 6, 6, 0, 0, 194, 21, 1, 0, 0, 0, 195, 196, 5, 63, 0, 0, 196, 23, 1, 0, 0, 0, 197, 198, 5, 60, 0, 0, 198, 199, 3, 22, 7, 0, 199, 200, 5, 120, 0, 0, 200, 201, 5, 109, 0, 0, 201, 202, 5, 108, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, 6, 8, 1, 0, 204, 25, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 6, 9, 1, 0, 208, 27, 1, 0, 0, 0, 209, 210, 5, 60, 0, 0, 210, 211, 3, 22, 7, 0, 211, 212, 3, 102, 47, 0, 212, 213, 1, 0, 0, 0, 213, 214, 6, 10, 2, 0, 214, 29, 1, 0, 0, 0, 215, 216, 5, 60, 0, 0, 216, 217, 5, 33, 0, 0, 217, 218, 1, 0, 0, 0, 218, 219, 6, 11, 3, 0, 219, 31, 1, 0, 0, 0, 220, 222, 8, 1, 0, 0, 221, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 33, 1, 0, 0, 0, 225, 226, 5, 239, 0, 0, 226, 227, 5, 187, 0, 0, 227, 228, 5, 191, 0, 0, 228, 35, 1, 0, 0, 0, 229, 230, 5, 65279, 0, 0, 230, 37, 1, 0, 0, 0, 231, 232, 5, 62, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 6, 15, 4, 0, 234, 39, 1, 0, 0, 0, 235, 236, 5, 91, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 6, 16, 5, 0, 238, 41, 1, 0, 0, 0, 239, 240, 3, 88, 40, 0, 240, 241, 1, 0, 0, 0, 241, 242, 6, 17, 0, 0, 242, 43, 1, 0, 0, 0, 243, 244, 7, 2, 0, 0, 244, 245, 7, 3, 0, 0, 245, 246, 7, 4, 0, 0, 246, 247, 7, 5, 0, 0, 247, 248, 7, 6, 0, 0, 248, 249, 7, 7, 0, 0, 249, 250, 7, 8, 0, 0, 250, 45, 1, 0, 0, 0, 251, 252, 3, 102, 47, 0, 252, 253, 1, 0, 0, 0, 253, 254, 6, 19, 6, 0, 254, 47, 1, 0, 0, 0, 255, 256, 3, 100, 46, 0, 256, 257, 1, 0, 0, 0, 257, 258, 6, 20, 7, 0, 258, 49, 1, 0, 0, 0, 259, 260, 5, 93, 0, 0, 260, 261, 1, 0, 0, 0, 261, 262, 6, 21, 4, 0, 262, 51, 1, 0, 0, 0, 263, 264, 5, 60, 0, 0, 264, 265, 5, 33, 0, 0, 265, 266, 1, 0, 0, 0, 266, 267, 6, 22, 8, 0, 267, 53, 1, 0, 0, 0, 268, 269, 3, 88, 40, 0, 269, 270, 1, 0, 0, 0, 270, 271, 6, 23, 0, 0, 271, 55, 1, 0, 0, 0, 272, 273, 3, 12, 2, 0, 273, 274, 1, 0, 0, 0, 274, 275, 6, 24, 9, 0, 275, 57, 1, 0, 0, 0, 276, 277, 3, 8, 0, 0, 277, 278, 1, 0, 0, 0, 278, 279, 6, 25, 10, 0, 279, 59, 1, 0, 0, 0, 280, 281, 5, 62, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 6, 26, 4, 0, 283, 61, 1, 0, 0, 0, 284, 285, 5, 91, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 6, 27, 11, 0, 287, 288, 6, 27, 12, 0, 288, 63, 1, 0, 0, 0, 289, 290, 3, 88, 40, 0, 290, 291, 1, 0, 0, 0, 291, 292, 6, 28, 0, 0, 292, 65, 1, 0, 0, 0, 293, 295, 8, 9, 0, 0, 294, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 67, 1, 0, 0, 0, 298, 299, 5, 93, 0, 0, 299, 300, 1, 0, 0, 0, 300, 301, 6, 30, 4, 0, 301, 69, 1, 0, 0, 0, 302, 303, 9, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 6, 31, 11, 0, 305, 71, 1, 0, 0, 0, 306, 307, 3, 84, 38, 0, 307, 308, 1, 0, 0, 0, 308, 309, 6, 32, 13, 0, 309, 310, 6, 32, 4, 0, 310, 73, 1, 0, 0, 0, 311, 312, 3, 88, 40, 0, 312, 313, 1, 0, 0, 0, 313, 314, 6, 33, 0, 0, 314, 75, 1, 0, 0, 0, 315, 316, 3, 22, 7, 0, 316, 317, 1, 0, 0, 0, 317, 318, 6, 34, 11, 0, 318, 319, 6, 34, 14, 0, 319, 77, 1, 0, 0, 0, 320, 322, 8, 10, 0, 0, 321, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 79, 1, 0, 0, 0, 325, 326, 9, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 6, 36, 11, 0, 328, 329, 6, 36, 4, 0, 329, 81, 1, 0, 0, 0, 330, 331, 5, 62, 0, 0, 331, 332, 1, 0, 0, 0, 332, 333, 6, 37, 4, 0, 333, 83, 1, 0, 0, 0, 334, 335, 3, 22, 7, 0, 335, 336, 5, 62, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 6, 38, 4, 0, 338, 85, 1, 0, 0, 0, 339, 340, 5, 47, 0, 0, 340, 341, 5, 62, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 6, 39, 4, 0, 343, 87, 1, 0, 0, 0, 344, 345, 7, 11, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 6, 40, 0, 0, 347, 89, 1, 0, 0, 0, 348, 349, 5, 37, 0, 0, 349, 350, 5, 64, 0, 0, 350, 91, 1, 0, 0, 0, 351, 352, 5, 37, 0, 0, 352, 93, 1, 0, 0, 0, 353, 354, 7, 12, 0, 0, 354, 355, 7, 8, 0, 0, 355, 356, 7, 5, 0, 0, 356, 357, 7, 13, 0, 0, 357, 95, 1, 0, 0, 0, 358, 359, 5, 47, 0, 0, 359, 97, 1, 0, 0, 0, 360, 361, 5, 61, 0, 0, 361, 99, 1, 0, 0, 0, 362, 366, 5, 34, 0, 0, 363, 365, 8, 14, 0, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 379, 5, 34, 0, 0, 370, 374, 5, 39, 0, 0, 371, 373, 8, 15, 0, 0, 372, 371, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 379, 5, 39, 0, 0, 378, 362, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 379, 101, 1, 0, 0, 0, 380, 384, 3, 110, 51, 0, 381, 383, 3, 108, 50, 0, 382, 381, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 103, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 388, 7, 16, 0, 0, 388, 105, 1, 0, 0, 0, 389, 390, 7, 17, 0, 0, 390, 107, 1, 0, 0, 0, 391, 396, 3, 110, 51, 0, 392, 396, 7, 18, 0, 0, 393, 396, 3, 106, 49, 0, 394, 396, 7, 19, 0, 0, 395, 391, 1, 0, 0, 0, 395, 392, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 395, 394, 1, 0, 0, 0, 396, 109, 1, 0, 0, 0, 397, 399, 7, 20, 0, 0, 398, 397, 1, 0, 0, 0, 399, 111, 1, 0, 0, 0, 26, 0, 1, 2, 3, 4, 5, 6, 7, 120, 140, 161, 172, 176, 180, 183, 185, 191, 223, 296, 323, 366, 374, 378, 384, 395, 398, 15, 6, 0, 0, 5, 7, 0, 5, 5, 0, 5, 1, 0, 4, 0, 0, 5, 2, 0, 7, 37, 0, 7, 36, 0, 5, 3, 0, 7, 3, 0, 7, 1, 0, 3, 0, 0, 5, 4, 0, 7, 28, 0, 5, 6, 0] \ No newline at end of file diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java index eacbbeea655..c698e61bc58 100644 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java @@ -34,11 +34,11 @@ public class XMLLexer extends Lexer { public static final int COMMENT=1, CDATA=2, ParamEntityRef=3, EntityRef=4, CharRef=5, SEA_WS=6, UTF_ENCODING_BOM=7, QUESTION_MARK=8, SPECIAL_OPEN_XML=9, OPEN=10, SPECIAL_OPEN=11, - DTD_OPEN=12, TEXT=13, DTD_CLOSE=14, DTD_SUBSET_OPEN=15, DTD_S=16, DOCTYPE=17, + DTD_OPEN=12, TEXT=13, DTD_CLOSE=14, DTD_SUBSET_OPEN=15, DTD_S=16, DOCTYPE=17, DTD_SUBSET_CLOSE=18, MARKUP_OPEN=19, DTS_SUBSET_S=20, MARK_UP_CLOSE=21, MARKUP_S=22, MARKUP_TEXT=23, MARKUP_SUBSET=24, PI_S=25, PI_TEXT=26, CLOSE=27, SPECIAL_CLOSE=28, SLASH_CLOSE=29, S=30, DIRECTIVE_OPEN=31, DIRECTIVE_CLOSE=32, - SLASH=33, EQUALS=34, STRING=35, Name=36; + META=33, SLASH=34, EQUALS=35, STRING=36, Name=37; public static final int INSIDE_DTD=1, INSIDE_DTD_SUBSET=2, INSIDE_MARKUP=3, INSIDE_MARKUP_SUBSET=4, INSIDE_PROCESS_INSTRUCTION=5, INSIDE_PI_TEXT=6, INSIDE=7; @@ -61,7 +61,7 @@ private static String[] makeRuleNames() { "MARKUP_S", "MARKUP_TEXT", "MARKUP_SUBSET", "TXT", "PI_SPECIAL_CLOSE", "PI_S", "PI_QUESTION_MARK", "PI_TEXT", "PI_TEXT_SPECIAL_CASE", "CLOSE", "SPECIAL_CLOSE", "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", - "SLASH", "EQUALS", "STRING", "Name", "HEXDIGIT", "DIGIT", "NameChar", + "META", "SLASH", "EQUALS", "STRING", "Name", "HEXDIGIT", "DIGIT", "NameChar", "NameStartChar" }; } @@ -71,7 +71,8 @@ private static String[] makeLiteralNames() { return new String[] { null, null, null, null, null, null, null, null, "'?'", null, "'<'", null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, "'/>'", null, "'%@'", "'%'", "'/'", "'='" + null, null, null, null, null, "'/>'", null, "'%@'", "'%'", null, "'/'", + "'='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); @@ -82,8 +83,8 @@ private static String[] makeSymbolicNames() { "DTD_OPEN", "TEXT", "DTD_CLOSE", "DTD_SUBSET_OPEN", "DTD_S", "DOCTYPE", "DTD_SUBSET_CLOSE", "MARKUP_OPEN", "DTS_SUBSET_S", "MARK_UP_CLOSE", "MARKUP_S", "MARKUP_TEXT", "MARKUP_SUBSET", "PI_S", "PI_TEXT", "CLOSE", "SPECIAL_CLOSE", - "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "SLASH", "EQUALS", - "STRING", "Name" + "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "META", "SLASH", + "EQUALS", "STRING", "Name" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -145,7 +146,7 @@ public XMLLexer(CharStream input) { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\u0004\u0000$\u0189\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+ + "\u0004\u0000%\u0190\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+ "\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+ "\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ @@ -161,245 +162,250 @@ public XMLLexer(CharStream input) { "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+ "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+ "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+ - "2\u00072\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ - "\u0000\u0005\u0000u\b\u0000\n\u0000\f\u0000x\t\u0000\u0001\u0000\u0001"+ - "\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ + "2\u00072\u00023\u00073\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+ + "\u0001\u0000\u0001\u0000\u0005\u0000w\b\u0000\n\u0000\f\u0000z\t\u0000"+ + "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ - "\u0001\u0001\u0001\u0005\u0001\u0089\b\u0001\n\u0001\f\u0001\u008c\t\u0001"+ - "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+ - "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0004\u0004\u009e\b\u0004"+ - "\u000b\u0004\f\u0004\u009f\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0001\u0004\u0001\u0004\u0004\u0004\u00a9\b\u0004\u000b\u0004"+ - "\f\u0004\u00aa\u0001\u0004\u0001\u0004\u0003\u0004\u00af\b\u0004\u0001"+ - "\u0005\u0001\u0005\u0003\u0005\u00b3\b\u0005\u0001\u0005\u0004\u0005\u00b6"+ - "\b\u0005\u000b\u0005\f\u0005\u00b7\u0001\u0005\u0001\u0005\u0001\u0006"+ - "\u0001\u0006\u0003\u0006\u00be\b\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+ - "\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+ - "\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\f\u0004\f\u00dc\b\f\u000b\f\f\f\u00dd\u0001\r\u0001\r\u0001\r\u0001"+ - "\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011"+ - "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ - "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017"+ - "\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a"+ - "\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+ - "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0004\u001d"+ - "\u0125\b\u001d\u000b\u001d\f\u001d\u0126\u0001\u001e\u0001\u001e\u0001"+ - "\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ - " \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001"+ - "\"\u0001\"\u0001\"\u0001\"\u0001#\u0004#\u0140\b#\u000b#\f#\u0141\u0001"+ - "$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001"+ - "&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001("+ - "\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001*\u0001*\u0001+\u0001"+ - "+\u0001,\u0001,\u0001-\u0001-\u0005-\u0166\b-\n-\f-\u0169\t-\u0001-\u0001"+ - "-\u0001-\u0005-\u016e\b-\n-\f-\u0171\t-\u0001-\u0003-\u0174\b-\u0001."+ - "\u0001.\u0005.\u0178\b.\n.\f.\u017b\t.\u0001/\u0001/\u00010\u00010\u0001"+ - "1\u00011\u00011\u00011\u00031\u0185\b1\u00012\u00032\u0188\b2\u0002v\u008a"+ - "\u00003\b\u0001\n\u0002\f\u0003\u000e\u0004\u0010\u0005\u0012\u0006\u0014"+ - "\u0007\u0016\b\u0018\t\u001a\n\u001c\u000b\u001e\f \r\"\u0000$\u0000&"+ - "\u000e(\u000f*\u0010,\u0011.\u00000\u00002\u00124\u00136\u00148\u0000"+ + "\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001\u008b\b\u0001\n\u0001"+ + "\f\u0001\u008e\t\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+ + "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ + "\u0004\u0004\u00a0\b\u0004\u000b\u0004\f\u0004\u00a1\u0001\u0004\u0001"+ + "\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0004"+ + "\u0004\u00ab\b\u0004\u000b\u0004\f\u0004\u00ac\u0001\u0004\u0001\u0004"+ + "\u0003\u0004\u00b1\b\u0004\u0001\u0005\u0001\u0005\u0003\u0005\u00b5\b"+ + "\u0005\u0001\u0005\u0004\u0005\u00b8\b\u0005\u000b\u0005\f\u0005\u00b9"+ + "\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0003\u0006\u00c0\b\u0006"+ + "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0004\f\u00de\b\f\u000b\f"+ + "\f\f\u00df\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ + "\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+ + "\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ + "\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+ + "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001d\u0004\u001d\u0127\b\u001d\u000b\u001d\f"+ + "\u001d\u0128\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f"+ + "\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001"+ + " \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ + "\u0001#\u0004#\u0142\b#\u000b#\f#\u0143\u0001$\u0001$\u0001$\u0001$\u0001"+ + "$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)"+ + "\u0001)\u0001)\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+ + ",\u0001,\u0001-\u0001-\u0001.\u0001.\u0005.\u016d\b.\n.\f.\u0170\t.\u0001"+ + ".\u0001.\u0001.\u0005.\u0175\b.\n.\f.\u0178\t.\u0001.\u0003.\u017b\b."+ + "\u0001/\u0001/\u0005/\u017f\b/\n/\f/\u0182\t/\u00010\u00010\u00011\u0001"+ + "1\u00012\u00012\u00012\u00012\u00032\u018c\b2\u00013\u00033\u018f\b3\u0002"+ + "x\u008c\u00004\b\u0001\n\u0002\f\u0003\u000e\u0004\u0010\u0005\u0012\u0006"+ + "\u0014\u0007\u0016\b\u0018\t\u001a\n\u001c\u000b\u001e\f \r\"\u0000$\u0000"+ + "&\u000e(\u000f*\u0010,\u0011.\u00000\u00002\u00124\u00136\u00148\u0000"+ ":\u0000<\u0015>\u0000@\u0016B\u0017D\u0018F\u0000H\u0000J\u0019L\u0000"+ - "N\u001aP\u0000R\u001bT\u001cV\u001dX\u001eZ\u001f\\ ^!`\"b#d$f\u0000h"+ - "\u0000j\u0000l\u0000\b\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+ - "\u0013\u0002\u0000\t\t \u0002\u0000&&<<\u0002\u0000DDdd\u0002\u0000O"+ + "N\u001aP\u0000R\u001bT\u001cV\u001dX\u001eZ\u001f\\ ^!`\"b#d$f%h\u0000"+ + "j\u0000l\u0000n\u0000\b\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+ + "\u0015\u0002\u0000\t\t \u0002\u0000&&<<\u0002\u0000DDdd\u0002\u0000O"+ "Ooo\u0002\u0000CCcc\u0002\u0000TTtt\u0002\u0000YYyy\u0002\u0000PPpp\u0002"+ "\u0000EEee\u0002\u0000>>[[\u0001\u0000??\u0003\u0000\t\n\r\r \u0002\u0000"+ - "\"\"<<\u0002\u0000\'\'<<\u0003\u000009AFaf\u0001\u000009\u0002\u0000-"+ - ".__\u0003\u0000\u00b7\u00b7\u0300\u036f\u203f\u2040\u000f\u0000::AZ__"+ - "az\u00c0\u00d6\u00d8\u00f6\u00f8\u02ff\u0370\u037d\u037f\u1fff\u200c\u200d"+ - "\u2070\u218f\u3001\u8000\ud7ff\u8000\uf900\u8000\ufdcf\u8000\ufdf0\u8000"+ - "\ufffd\u8001\u0000\u800e\uffff\u018e\u0000\b\u0001\u0000\u0000\u0000\u0000"+ - "\n\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000\u000e"+ - "\u0001\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000\u0012"+ - "\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000\u0016"+ - "\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000\u001a"+ - "\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000\u001e"+ - "\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0001&\u0001\u0000"+ - "\u0000\u0000\u0001(\u0001\u0000\u0000\u0000\u0001*\u0001\u0000\u0000\u0000"+ - "\u0001,\u0001\u0000\u0000\u0000\u0001.\u0001\u0000\u0000\u0000\u00010"+ - "\u0001\u0000\u0000\u0000\u00022\u0001\u0000\u0000\u0000\u00024\u0001\u0000"+ - "\u0000\u0000\u00026\u0001\u0000\u0000\u0000\u00028\u0001\u0000\u0000\u0000"+ - "\u0002:\u0001\u0000\u0000\u0000\u0003<\u0001\u0000\u0000\u0000\u0003>"+ - "\u0001\u0000\u0000\u0000\u0003@\u0001\u0000\u0000\u0000\u0003B\u0001\u0000"+ - "\u0000\u0000\u0004D\u0001\u0000\u0000\u0000\u0004F\u0001\u0000\u0000\u0000"+ - "\u0005H\u0001\u0000\u0000\u0000\u0005J\u0001\u0000\u0000\u0000\u0005L"+ - "\u0001\u0000\u0000\u0000\u0005N\u0001\u0000\u0000\u0000\u0006P\u0001\u0000"+ - "\u0000\u0000\u0007R\u0001\u0000\u0000\u0000\u0007T\u0001\u0000\u0000\u0000"+ - "\u0007V\u0001\u0000\u0000\u0000\u0007X\u0001\u0000\u0000\u0000\u0007Z"+ - "\u0001\u0000\u0000\u0000\u0007\\\u0001\u0000\u0000\u0000\u0007^\u0001"+ - "\u0000\u0000\u0000\u0007`\u0001\u0000\u0000\u0000\u0007b\u0001\u0000\u0000"+ - "\u0000\u0007d\u0001\u0000\u0000\u0000\bn\u0001\u0000\u0000\u0000\n}\u0001"+ - "\u0000\u0000\u0000\f\u0091\u0001\u0000\u0000\u0000\u000e\u0095\u0001\u0000"+ - "\u0000\u0000\u0010\u00ae\u0001\u0000\u0000\u0000\u0012\u00b5\u0001\u0000"+ - "\u0000\u0000\u0014\u00bd\u0001\u0000\u0000\u0000\u0016\u00c1\u0001\u0000"+ - "\u0000\u0000\u0018\u00c3\u0001\u0000\u0000\u0000\u001a\u00cb\u0001\u0000"+ - "\u0000\u0000\u001c\u00cf\u0001\u0000\u0000\u0000\u001e\u00d5\u0001\u0000"+ - "\u0000\u0000 \u00db\u0001\u0000\u0000\u0000\"\u00df\u0001\u0000\u0000"+ - "\u0000$\u00e3\u0001\u0000\u0000\u0000&\u00e5\u0001\u0000\u0000\u0000("+ - "\u00e9\u0001\u0000\u0000\u0000*\u00ed\u0001\u0000\u0000\u0000,\u00f1\u0001"+ - "\u0000\u0000\u0000.\u00f9\u0001\u0000\u0000\u00000\u00fd\u0001\u0000\u0000"+ - "\u00002\u0101\u0001\u0000\u0000\u00004\u0105\u0001\u0000\u0000\u00006"+ - "\u010a\u0001\u0000\u0000\u00008\u010e\u0001\u0000\u0000\u0000:\u0112\u0001"+ - "\u0000\u0000\u0000<\u0116\u0001\u0000\u0000\u0000>\u011a\u0001\u0000\u0000"+ - "\u0000@\u011f\u0001\u0000\u0000\u0000B\u0124\u0001\u0000\u0000\u0000D"+ - "\u0128\u0001\u0000\u0000\u0000F\u012c\u0001\u0000\u0000\u0000H\u0130\u0001"+ - "\u0000\u0000\u0000J\u0135\u0001\u0000\u0000\u0000L\u0139\u0001\u0000\u0000"+ - "\u0000N\u013f\u0001\u0000\u0000\u0000P\u0143\u0001\u0000\u0000\u0000R"+ - "\u0148\u0001\u0000\u0000\u0000T\u014c\u0001\u0000\u0000\u0000V\u0151\u0001"+ - "\u0000\u0000\u0000X\u0156\u0001\u0000\u0000\u0000Z\u015a\u0001\u0000\u0000"+ - "\u0000\\\u015d\u0001\u0000\u0000\u0000^\u015f\u0001\u0000\u0000\u0000"+ - "`\u0161\u0001\u0000\u0000\u0000b\u0173\u0001\u0000\u0000\u0000d\u0175"+ - "\u0001\u0000\u0000\u0000f\u017c\u0001\u0000\u0000\u0000h\u017e\u0001\u0000"+ - "\u0000\u0000j\u0184\u0001\u0000\u0000\u0000l\u0187\u0001\u0000\u0000\u0000"+ - "no\u0005<\u0000\u0000op\u0005!\u0000\u0000pq\u0005-\u0000\u0000qr\u0005"+ - "-\u0000\u0000rv\u0001\u0000\u0000\u0000su\t\u0000\u0000\u0000ts\u0001"+ - "\u0000\u0000\u0000ux\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000"+ - "vt\u0001\u0000\u0000\u0000wy\u0001\u0000\u0000\u0000xv\u0001\u0000\u0000"+ - "\u0000yz\u0005-\u0000\u0000z{\u0005-\u0000\u0000{|\u0005>\u0000\u0000"+ - "|\t\u0001\u0000\u0000\u0000}~\u0005<\u0000\u0000~\u007f\u0005!\u0000\u0000"+ - "\u007f\u0080\u0005[\u0000\u0000\u0080\u0081\u0005C\u0000\u0000\u0081\u0082"+ - "\u0005D\u0000\u0000\u0082\u0083\u0005A\u0000\u0000\u0083\u0084\u0005T"+ - "\u0000\u0000\u0084\u0085\u0005A\u0000\u0000\u0085\u0086\u0005[\u0000\u0000"+ - "\u0086\u008a\u0001\u0000\u0000\u0000\u0087\u0089\t\u0000\u0000\u0000\u0088"+ - "\u0087\u0001\u0000\u0000\u0000\u0089\u008c\u0001\u0000\u0000\u0000\u008a"+ - "\u008b\u0001\u0000\u0000\u0000\u008a\u0088\u0001\u0000\u0000\u0000\u008b"+ - "\u008d\u0001\u0000\u0000\u0000\u008c\u008a\u0001\u0000\u0000\u0000\u008d"+ - "\u008e\u0005]\u0000\u0000\u008e\u008f\u0005]\u0000\u0000\u008f\u0090\u0005"+ - ">\u0000\u0000\u0090\u000b\u0001\u0000\u0000\u0000\u0091\u0092\u0005%\u0000"+ - "\u0000\u0092\u0093\u0003d.\u0000\u0093\u0094\u0005;\u0000\u0000\u0094"+ - "\r\u0001\u0000\u0000\u0000\u0095\u0096\u0005&\u0000\u0000\u0096\u0097"+ - "\u0003d.\u0000\u0097\u0098\u0005;\u0000\u0000\u0098\u000f\u0001\u0000"+ - "\u0000\u0000\u0099\u009a\u0005&\u0000\u0000\u009a\u009b\u0005#\u0000\u0000"+ - "\u009b\u009d\u0001\u0000\u0000\u0000\u009c\u009e\u0003h0\u0000\u009d\u009c"+ - "\u0001\u0000\u0000\u0000\u009e\u009f\u0001\u0000\u0000\u0000\u009f\u009d"+ - "\u0001\u0000\u0000\u0000\u009f\u00a0\u0001\u0000\u0000\u0000\u00a0\u00a1"+ - "\u0001\u0000\u0000\u0000\u00a1\u00a2\u0005;\u0000\u0000\u00a2\u00af\u0001"+ - "\u0000\u0000\u0000\u00a3\u00a4\u0005&\u0000\u0000\u00a4\u00a5\u0005#\u0000"+ - "\u0000\u00a5\u00a6\u0005x\u0000\u0000\u00a6\u00a8\u0001\u0000\u0000\u0000"+ - "\u00a7\u00a9\u0003f/\u0000\u00a8\u00a7\u0001\u0000\u0000\u0000\u00a9\u00aa"+ - "\u0001\u0000\u0000\u0000\u00aa\u00a8\u0001\u0000\u0000\u0000\u00aa\u00ab"+ - "\u0001\u0000\u0000\u0000\u00ab\u00ac\u0001\u0000\u0000\u0000\u00ac\u00ad"+ - "\u0005;\u0000\u0000\u00ad\u00af\u0001\u0000\u0000\u0000\u00ae\u0099\u0001"+ - "\u0000\u0000\u0000\u00ae\u00a3\u0001\u0000\u0000\u0000\u00af\u0011\u0001"+ - "\u0000\u0000\u0000\u00b0\u00b6\u0007\u0000\u0000\u0000\u00b1\u00b3\u0005"+ - "\r\u0000\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001\u0000"+ - "\u0000\u0000\u00b3\u00b4\u0001\u0000\u0000\u0000\u00b4\u00b6\u0005\n\u0000"+ - "\u0000\u00b5\u00b0\u0001\u0000\u0000\u0000\u00b5\u00b2\u0001\u0000\u0000"+ - "\u0000\u00b6\u00b7\u0001\u0000\u0000\u0000\u00b7\u00b5\u0001\u0000\u0000"+ - "\u0000\u00b7\u00b8\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000\u0000"+ - "\u0000\u00b9\u00ba\u0006\u0005\u0000\u0000\u00ba\u0013\u0001\u0000\u0000"+ - "\u0000\u00bb\u00be\u0003\"\r\u0000\u00bc\u00be\u0003$\u000e\u0000\u00bd"+ - "\u00bb\u0001\u0000\u0000\u0000\u00bd\u00bc\u0001\u0000\u0000\u0000\u00be"+ - "\u00bf\u0001\u0000\u0000\u0000\u00bf\u00c0\u0006\u0006\u0000\u0000\u00c0"+ - "\u0015\u0001\u0000\u0000\u0000\u00c1\u00c2\u0005?\u0000\u0000\u00c2\u0017"+ - "\u0001\u0000\u0000\u0000\u00c3\u00c4\u0005<\u0000\u0000\u00c4\u00c5\u0003"+ - "\u0016\u0007\u0000\u00c5\u00c6\u0005x\u0000\u0000\u00c6\u00c7\u0005m\u0000"+ - "\u0000\u00c7\u00c8\u0005l\u0000\u0000\u00c8\u00c9\u0001\u0000\u0000\u0000"+ - "\u00c9\u00ca\u0006\b\u0001\u0000\u00ca\u0019\u0001\u0000\u0000\u0000\u00cb"+ - "\u00cc\u0005<\u0000\u0000\u00cc\u00cd\u0001\u0000\u0000\u0000\u00cd\u00ce"+ - "\u0006\t\u0001\u0000\u00ce\u001b\u0001\u0000\u0000\u0000\u00cf\u00d0\u0005"+ - "<\u0000\u0000\u00d0\u00d1\u0003\u0016\u0007\u0000\u00d1\u00d2\u0003d."+ - "\u0000\u00d2\u00d3\u0001\u0000\u0000\u0000\u00d3\u00d4\u0006\n\u0002\u0000"+ - "\u00d4\u001d\u0001\u0000\u0000\u0000\u00d5\u00d6\u0005<\u0000\u0000\u00d6"+ - "\u00d7\u0005!\u0000\u0000\u00d7\u00d8\u0001\u0000\u0000\u0000\u00d8\u00d9"+ - "\u0006\u000b\u0003\u0000\u00d9\u001f\u0001\u0000\u0000\u0000\u00da\u00dc"+ - "\b\u0001\u0000\u0000\u00db\u00da\u0001\u0000\u0000\u0000\u00dc\u00dd\u0001"+ - "\u0000\u0000\u0000\u00dd\u00db\u0001\u0000\u0000\u0000\u00dd\u00de\u0001"+ - "\u0000\u0000\u0000\u00de!\u0001\u0000\u0000\u0000\u00df\u00e0\u0005\u00ef"+ - "\u0000\u0000\u00e0\u00e1\u0005\u00bb\u0000\u0000\u00e1\u00e2\u0005\u00bf"+ - "\u0000\u0000\u00e2#\u0001\u0000\u0000\u0000\u00e3\u00e4\u0005\u8000\ufeff"+ - "\u0000\u0000\u00e4%\u0001\u0000\u0000\u0000\u00e5\u00e6\u0005>\u0000\u0000"+ - "\u00e6\u00e7\u0001\u0000\u0000\u0000\u00e7\u00e8\u0006\u000f\u0004\u0000"+ - "\u00e8\'\u0001\u0000\u0000\u0000\u00e9\u00ea\u0005[\u0000\u0000\u00ea"+ - "\u00eb\u0001\u0000\u0000\u0000\u00eb\u00ec\u0006\u0010\u0005\u0000\u00ec"+ - ")\u0001\u0000\u0000\u0000\u00ed\u00ee\u0003X(\u0000\u00ee\u00ef\u0001"+ - "\u0000\u0000\u0000\u00ef\u00f0\u0006\u0011\u0000\u0000\u00f0+\u0001\u0000"+ - "\u0000\u0000\u00f1\u00f2\u0007\u0002\u0000\u0000\u00f2\u00f3\u0007\u0003"+ - "\u0000\u0000\u00f3\u00f4\u0007\u0004\u0000\u0000\u00f4\u00f5\u0007\u0005"+ - "\u0000\u0000\u00f5\u00f6\u0007\u0006\u0000\u0000\u00f6\u00f7\u0007\u0007"+ - "\u0000\u0000\u00f7\u00f8\u0007\b\u0000\u0000\u00f8-\u0001\u0000\u0000"+ - "\u0000\u00f9\u00fa\u0003d.\u0000\u00fa\u00fb\u0001\u0000\u0000\u0000\u00fb"+ - "\u00fc\u0006\u0013\u0006\u0000\u00fc/\u0001\u0000\u0000\u0000\u00fd\u00fe"+ - "\u0003b-\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff\u0100\u0006\u0014"+ - "\u0007\u0000\u01001\u0001\u0000\u0000\u0000\u0101\u0102\u0005]\u0000\u0000"+ - "\u0102\u0103\u0001\u0000\u0000\u0000\u0103\u0104\u0006\u0015\u0004\u0000"+ - "\u01043\u0001\u0000\u0000\u0000\u0105\u0106\u0005<\u0000\u0000\u0106\u0107"+ - "\u0005!\u0000\u0000\u0107\u0108\u0001\u0000\u0000\u0000\u0108\u0109\u0006"+ - "\u0016\b\u0000\u01095\u0001\u0000\u0000\u0000\u010a\u010b\u0003X(\u0000"+ - "\u010b\u010c\u0001\u0000\u0000\u0000\u010c\u010d\u0006\u0017\u0000\u0000"+ - "\u010d7\u0001\u0000\u0000\u0000\u010e\u010f\u0003\f\u0002\u0000\u010f"+ - "\u0110\u0001\u0000\u0000\u0000\u0110\u0111\u0006\u0018\t\u0000\u01119"+ - "\u0001\u0000\u0000\u0000\u0112\u0113\u0003\b\u0000\u0000\u0113\u0114\u0001"+ - "\u0000\u0000\u0000\u0114\u0115\u0006\u0019\n\u0000\u0115;\u0001\u0000"+ - "\u0000\u0000\u0116\u0117\u0005>\u0000\u0000\u0117\u0118\u0001\u0000\u0000"+ - "\u0000\u0118\u0119\u0006\u001a\u0004\u0000\u0119=\u0001\u0000\u0000\u0000"+ - "\u011a\u011b\u0005[\u0000\u0000\u011b\u011c\u0001\u0000\u0000\u0000\u011c"+ - "\u011d\u0006\u001b\u000b\u0000\u011d\u011e\u0006\u001b\f\u0000\u011e?"+ - "\u0001\u0000\u0000\u0000\u011f\u0120\u0003X(\u0000\u0120\u0121\u0001\u0000"+ - "\u0000\u0000\u0121\u0122\u0006\u001c\u0000\u0000\u0122A\u0001\u0000\u0000"+ - "\u0000\u0123\u0125\b\t\u0000\u0000\u0124\u0123\u0001\u0000\u0000\u0000"+ - "\u0125\u0126\u0001\u0000\u0000\u0000\u0126\u0124\u0001\u0000\u0000\u0000"+ - "\u0126\u0127\u0001\u0000\u0000\u0000\u0127C\u0001\u0000\u0000\u0000\u0128"+ - "\u0129\u0005]\u0000\u0000\u0129\u012a\u0001\u0000\u0000\u0000\u012a\u012b"+ - "\u0006\u001e\u0004\u0000\u012bE\u0001\u0000\u0000\u0000\u012c\u012d\t"+ - "\u0000\u0000\u0000\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u012f\u0006"+ - "\u001f\u000b\u0000\u012fG\u0001\u0000\u0000\u0000\u0130\u0131\u0003T&"+ - "\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132\u0133\u0006 \r\u0000"+ - "\u0133\u0134\u0006 \u0004\u0000\u0134I\u0001\u0000\u0000\u0000\u0135\u0136"+ - "\u0003X(\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u0138\u0006!"+ - "\u0000\u0000\u0138K\u0001\u0000\u0000\u0000\u0139\u013a\u0003\u0016\u0007"+ - "\u0000\u013a\u013b\u0001\u0000\u0000\u0000\u013b\u013c\u0006\"\u000b\u0000"+ - "\u013c\u013d\u0006\"\u000e\u0000\u013dM\u0001\u0000\u0000\u0000\u013e"+ - "\u0140\b\n\u0000\u0000\u013f\u013e\u0001\u0000\u0000\u0000\u0140\u0141"+ - "\u0001\u0000\u0000\u0000\u0141\u013f\u0001\u0000\u0000\u0000\u0141\u0142"+ - "\u0001\u0000\u0000\u0000\u0142O\u0001\u0000\u0000\u0000\u0143\u0144\t"+ - "\u0000\u0000\u0000\u0144\u0145\u0001\u0000\u0000\u0000\u0145\u0146\u0006"+ - "$\u000b\u0000\u0146\u0147\u0006$\u0004\u0000\u0147Q\u0001\u0000\u0000"+ - "\u0000\u0148\u0149\u0005>\u0000\u0000\u0149\u014a\u0001\u0000\u0000\u0000"+ - "\u014a\u014b\u0006%\u0004\u0000\u014bS\u0001\u0000\u0000\u0000\u014c\u014d"+ - "\u0003\u0016\u0007\u0000\u014d\u014e\u0005>\u0000\u0000\u014e\u014f\u0001"+ - "\u0000\u0000\u0000\u014f\u0150\u0006&\u0004\u0000\u0150U\u0001\u0000\u0000"+ - "\u0000\u0151\u0152\u0005/\u0000\u0000\u0152\u0153\u0005>\u0000\u0000\u0153"+ - "\u0154\u0001\u0000\u0000\u0000\u0154\u0155\u0006\'\u0004\u0000\u0155W"+ - "\u0001\u0000\u0000\u0000\u0156\u0157\u0007\u000b\u0000\u0000\u0157\u0158"+ - "\u0001\u0000\u0000\u0000\u0158\u0159\u0006(\u0000\u0000\u0159Y\u0001\u0000"+ - "\u0000\u0000\u015a\u015b\u0005%\u0000\u0000\u015b\u015c\u0005@\u0000\u0000"+ - "\u015c[\u0001\u0000\u0000\u0000\u015d\u015e\u0005%\u0000\u0000\u015e]"+ - "\u0001\u0000\u0000\u0000\u015f\u0160\u0005/\u0000\u0000\u0160_\u0001\u0000"+ - "\u0000\u0000\u0161\u0162\u0005=\u0000\u0000\u0162a\u0001\u0000\u0000\u0000"+ - "\u0163\u0167\u0005\"\u0000\u0000\u0164\u0166\b\f\u0000\u0000\u0165\u0164"+ - "\u0001\u0000\u0000\u0000\u0166\u0169\u0001\u0000\u0000\u0000\u0167\u0165"+ - "\u0001\u0000\u0000\u0000\u0167\u0168\u0001\u0000\u0000\u0000\u0168\u016a"+ - "\u0001\u0000\u0000\u0000\u0169\u0167\u0001\u0000\u0000\u0000\u016a\u0174"+ - "\u0005\"\u0000\u0000\u016b\u016f\u0005\'\u0000\u0000\u016c\u016e\b\r\u0000"+ - "\u0000\u016d\u016c\u0001\u0000\u0000\u0000\u016e\u0171\u0001\u0000\u0000"+ - "\u0000\u016f\u016d\u0001\u0000\u0000\u0000\u016f\u0170\u0001\u0000\u0000"+ - "\u0000\u0170\u0172\u0001\u0000\u0000\u0000\u0171\u016f\u0001\u0000\u0000"+ - "\u0000\u0172\u0174\u0005\'\u0000\u0000\u0173\u0163\u0001\u0000\u0000\u0000"+ - "\u0173\u016b\u0001\u0000\u0000\u0000\u0174c\u0001\u0000\u0000\u0000\u0175"+ - "\u0179\u0003l2\u0000\u0176\u0178\u0003j1\u0000\u0177\u0176\u0001\u0000"+ - "\u0000\u0000\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000"+ - "\u0000\u0000\u0179\u017a\u0001\u0000\u0000\u0000\u017ae\u0001\u0000\u0000"+ - "\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017d\u0007\u000e\u0000"+ - "\u0000\u017dg\u0001\u0000\u0000\u0000\u017e\u017f\u0007\u000f\u0000\u0000"+ - "\u017fi\u0001\u0000\u0000\u0000\u0180\u0185\u0003l2\u0000\u0181\u0185"+ - "\u0007\u0010\u0000\u0000\u0182\u0185\u0003h0\u0000\u0183\u0185\u0007\u0011"+ - "\u0000\u0000\u0184\u0180\u0001\u0000\u0000\u0000\u0184\u0181\u0001\u0000"+ - "\u0000\u0000\u0184\u0182\u0001\u0000\u0000\u0000\u0184\u0183\u0001\u0000"+ - "\u0000\u0000\u0185k\u0001\u0000\u0000\u0000\u0186\u0188\u0007\u0012\u0000"+ - "\u0000\u0187\u0186\u0001\u0000\u0000\u0000\u0188m\u0001\u0000\u0000\u0000"+ - "\u001a\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007v\u008a\u009f\u00aa"+ - "\u00ae\u00b2\u00b5\u00b7\u00bd\u00dd\u0126\u0141\u0167\u016f\u0173\u0179"+ - "\u0184\u0187\u000f\u0006\u0000\u0000\u0005\u0007\u0000\u0005\u0005\u0000"+ - "\u0005\u0001\u0000\u0004\u0000\u0000\u0005\u0002\u0000\u0007$\u0000\u0007"+ - "#\u0000\u0005\u0003\u0000\u0007\u0003\u0000\u0007\u0001\u0000\u0003\u0000"+ - "\u0000\u0005\u0004\u0000\u0007\u001c\u0000\u0005\u0006\u0000"; + "MMmm\u0002\u0000AAaa\u0002\u0000\"\"<<\u0002\u0000\'\'<<\u0003\u00000"+ + "9AFaf\u0001\u000009\u0002\u0000-.__\u0003\u0000\u00b7\u00b7\u0300\u036f"+ + "\u203f\u2040\u000f\u0000::AZ__az\u00c0\u00d6\u00d8\u00f6\u00f8\u02ff\u0370"+ + "\u037d\u037f\u1fff\u200c\u200d\u2070\u218f\u3001\u8000\ud7ff\u8000\uf900"+ + "\u8000\ufdcf\u8000\ufdf0\u8000\ufffd\u8001\u0000\u800e\uffff\u0195\u0000"+ + "\b\u0001\u0000\u0000\u0000\u0000\n\u0001\u0000\u0000\u0000\u0000\f\u0001"+ + "\u0000\u0000\u0000\u0000\u000e\u0001\u0000\u0000\u0000\u0000\u0010\u0001"+ + "\u0000\u0000\u0000\u0000\u0012\u0001\u0000\u0000\u0000\u0000\u0014\u0001"+ + "\u0000\u0000\u0000\u0000\u0016\u0001\u0000\u0000\u0000\u0000\u0018\u0001"+ + "\u0000\u0000\u0000\u0000\u001a\u0001\u0000\u0000\u0000\u0000\u001c\u0001"+ + "\u0000\u0000\u0000\u0000\u001e\u0001\u0000\u0000\u0000\u0000 \u0001\u0000"+ + "\u0000\u0000\u0001&\u0001\u0000\u0000\u0000\u0001(\u0001\u0000\u0000\u0000"+ + "\u0001*\u0001\u0000\u0000\u0000\u0001,\u0001\u0000\u0000\u0000\u0001."+ + "\u0001\u0000\u0000\u0000\u00010\u0001\u0000\u0000\u0000\u00022\u0001\u0000"+ + "\u0000\u0000\u00024\u0001\u0000\u0000\u0000\u00026\u0001\u0000\u0000\u0000"+ + "\u00028\u0001\u0000\u0000\u0000\u0002:\u0001\u0000\u0000\u0000\u0003<"+ + "\u0001\u0000\u0000\u0000\u0003>\u0001\u0000\u0000\u0000\u0003@\u0001\u0000"+ + "\u0000\u0000\u0003B\u0001\u0000\u0000\u0000\u0004D\u0001\u0000\u0000\u0000"+ + "\u0004F\u0001\u0000\u0000\u0000\u0005H\u0001\u0000\u0000\u0000\u0005J"+ + "\u0001\u0000\u0000\u0000\u0005L\u0001\u0000\u0000\u0000\u0005N\u0001\u0000"+ + "\u0000\u0000\u0006P\u0001\u0000\u0000\u0000\u0007R\u0001\u0000\u0000\u0000"+ + "\u0007T\u0001\u0000\u0000\u0000\u0007V\u0001\u0000\u0000\u0000\u0007X"+ + "\u0001\u0000\u0000\u0000\u0007Z\u0001\u0000\u0000\u0000\u0007\\\u0001"+ + "\u0000\u0000\u0000\u0007^\u0001\u0000\u0000\u0000\u0007`\u0001\u0000\u0000"+ + "\u0000\u0007b\u0001\u0000\u0000\u0000\u0007d\u0001\u0000\u0000\u0000\u0007"+ + "f\u0001\u0000\u0000\u0000\bp\u0001\u0000\u0000\u0000\n\u007f\u0001\u0000"+ + "\u0000\u0000\f\u0093\u0001\u0000\u0000\u0000\u000e\u0097\u0001\u0000\u0000"+ + "\u0000\u0010\u00b0\u0001\u0000\u0000\u0000\u0012\u00b7\u0001\u0000\u0000"+ + "\u0000\u0014\u00bf\u0001\u0000\u0000\u0000\u0016\u00c3\u0001\u0000\u0000"+ + "\u0000\u0018\u00c5\u0001\u0000\u0000\u0000\u001a\u00cd\u0001\u0000\u0000"+ + "\u0000\u001c\u00d1\u0001\u0000\u0000\u0000\u001e\u00d7\u0001\u0000\u0000"+ + "\u0000 \u00dd\u0001\u0000\u0000\u0000\"\u00e1\u0001\u0000\u0000\u0000"+ + "$\u00e5\u0001\u0000\u0000\u0000&\u00e7\u0001\u0000\u0000\u0000(\u00eb"+ + "\u0001\u0000\u0000\u0000*\u00ef\u0001\u0000\u0000\u0000,\u00f3\u0001\u0000"+ + "\u0000\u0000.\u00fb\u0001\u0000\u0000\u00000\u00ff\u0001\u0000\u0000\u0000"+ + "2\u0103\u0001\u0000\u0000\u00004\u0107\u0001\u0000\u0000\u00006\u010c"+ + "\u0001\u0000\u0000\u00008\u0110\u0001\u0000\u0000\u0000:\u0114\u0001\u0000"+ + "\u0000\u0000<\u0118\u0001\u0000\u0000\u0000>\u011c\u0001\u0000\u0000\u0000"+ + "@\u0121\u0001\u0000\u0000\u0000B\u0126\u0001\u0000\u0000\u0000D\u012a"+ + "\u0001\u0000\u0000\u0000F\u012e\u0001\u0000\u0000\u0000H\u0132\u0001\u0000"+ + "\u0000\u0000J\u0137\u0001\u0000\u0000\u0000L\u013b\u0001\u0000\u0000\u0000"+ + "N\u0141\u0001\u0000\u0000\u0000P\u0145\u0001\u0000\u0000\u0000R\u014a"+ + "\u0001\u0000\u0000\u0000T\u014e\u0001\u0000\u0000\u0000V\u0153\u0001\u0000"+ + "\u0000\u0000X\u0158\u0001\u0000\u0000\u0000Z\u015c\u0001\u0000\u0000\u0000"+ + "\\\u015f\u0001\u0000\u0000\u0000^\u0161\u0001\u0000\u0000\u0000`\u0166"+ + "\u0001\u0000\u0000\u0000b\u0168\u0001\u0000\u0000\u0000d\u017a\u0001\u0000"+ + "\u0000\u0000f\u017c\u0001\u0000\u0000\u0000h\u0183\u0001\u0000\u0000\u0000"+ + "j\u0185\u0001\u0000\u0000\u0000l\u018b\u0001\u0000\u0000\u0000n\u018e"+ + "\u0001\u0000\u0000\u0000pq\u0005<\u0000\u0000qr\u0005!\u0000\u0000rs\u0005"+ + "-\u0000\u0000st\u0005-\u0000\u0000tx\u0001\u0000\u0000\u0000uw\t\u0000"+ + "\u0000\u0000vu\u0001\u0000\u0000\u0000wz\u0001\u0000\u0000\u0000xy\u0001"+ + "\u0000\u0000\u0000xv\u0001\u0000\u0000\u0000y{\u0001\u0000\u0000\u0000"+ + "zx\u0001\u0000\u0000\u0000{|\u0005-\u0000\u0000|}\u0005-\u0000\u0000}"+ + "~\u0005>\u0000\u0000~\t\u0001\u0000\u0000\u0000\u007f\u0080\u0005<\u0000"+ + "\u0000\u0080\u0081\u0005!\u0000\u0000\u0081\u0082\u0005[\u0000\u0000\u0082"+ + "\u0083\u0005C\u0000\u0000\u0083\u0084\u0005D\u0000\u0000\u0084\u0085\u0005"+ + "A\u0000\u0000\u0085\u0086\u0005T\u0000\u0000\u0086\u0087\u0005A\u0000"+ + "\u0000\u0087\u0088\u0005[\u0000\u0000\u0088\u008c\u0001\u0000\u0000\u0000"+ + "\u0089\u008b\t\u0000\u0000\u0000\u008a\u0089\u0001\u0000\u0000\u0000\u008b"+ + "\u008e\u0001\u0000\u0000\u0000\u008c\u008d\u0001\u0000\u0000\u0000\u008c"+ + "\u008a\u0001\u0000\u0000\u0000\u008d\u008f\u0001\u0000\u0000\u0000\u008e"+ + "\u008c\u0001\u0000\u0000\u0000\u008f\u0090\u0005]\u0000\u0000\u0090\u0091"+ + "\u0005]\u0000\u0000\u0091\u0092\u0005>\u0000\u0000\u0092\u000b\u0001\u0000"+ + "\u0000\u0000\u0093\u0094\u0005%\u0000\u0000\u0094\u0095\u0003f/\u0000"+ + "\u0095\u0096\u0005;\u0000\u0000\u0096\r\u0001\u0000\u0000\u0000\u0097"+ + "\u0098\u0005&\u0000\u0000\u0098\u0099\u0003f/\u0000\u0099\u009a\u0005"+ + ";\u0000\u0000\u009a\u000f\u0001\u0000\u0000\u0000\u009b\u009c\u0005&\u0000"+ + "\u0000\u009c\u009d\u0005#\u0000\u0000\u009d\u009f\u0001\u0000\u0000\u0000"+ + "\u009e\u00a0\u0003j1\u0000\u009f\u009e\u0001\u0000\u0000\u0000\u00a0\u00a1"+ + "\u0001\u0000\u0000\u0000\u00a1\u009f\u0001\u0000\u0000\u0000\u00a1\u00a2"+ + "\u0001\u0000\u0000\u0000\u00a2\u00a3\u0001\u0000\u0000\u0000\u00a3\u00a4"+ + "\u0005;\u0000\u0000\u00a4\u00b1\u0001\u0000\u0000\u0000\u00a5\u00a6\u0005"+ + "&\u0000\u0000\u00a6\u00a7\u0005#\u0000\u0000\u00a7\u00a8\u0005x\u0000"+ + "\u0000\u00a8\u00aa\u0001\u0000\u0000\u0000\u00a9\u00ab\u0003h0\u0000\u00aa"+ + "\u00a9\u0001\u0000\u0000\u0000\u00ab\u00ac\u0001\u0000\u0000\u0000\u00ac"+ + "\u00aa\u0001\u0000\u0000\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000\u00ad"+ + "\u00ae\u0001\u0000\u0000\u0000\u00ae\u00af\u0005;\u0000\u0000\u00af\u00b1"+ + "\u0001\u0000\u0000\u0000\u00b0\u009b\u0001\u0000\u0000\u0000\u00b0\u00a5"+ + "\u0001\u0000\u0000\u0000\u00b1\u0011\u0001\u0000\u0000\u0000\u00b2\u00b8"+ + "\u0007\u0000\u0000\u0000\u00b3\u00b5\u0005\r\u0000\u0000\u00b4\u00b3\u0001"+ + "\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5\u00b6\u0001"+ + "\u0000\u0000\u0000\u00b6\u00b8\u0005\n\u0000\u0000\u00b7\u00b2\u0001\u0000"+ + "\u0000\u0000\u00b7\u00b4\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000"+ + "\u0000\u0000\u00b9\u00b7\u0001\u0000\u0000\u0000\u00b9\u00ba\u0001\u0000"+ + "\u0000\u0000\u00ba\u00bb\u0001\u0000\u0000\u0000\u00bb\u00bc\u0006\u0005"+ + "\u0000\u0000\u00bc\u0013\u0001\u0000\u0000\u0000\u00bd\u00c0\u0003\"\r"+ + "\u0000\u00be\u00c0\u0003$\u000e\u0000\u00bf\u00bd\u0001\u0000\u0000\u0000"+ + "\u00bf\u00be\u0001\u0000\u0000\u0000\u00c0\u00c1\u0001\u0000\u0000\u0000"+ + "\u00c1\u00c2\u0006\u0006\u0000\u0000\u00c2\u0015\u0001\u0000\u0000\u0000"+ + "\u00c3\u00c4\u0005?\u0000\u0000\u00c4\u0017\u0001\u0000\u0000\u0000\u00c5"+ + "\u00c6\u0005<\u0000\u0000\u00c6\u00c7\u0003\u0016\u0007\u0000\u00c7\u00c8"+ + "\u0005x\u0000\u0000\u00c8\u00c9\u0005m\u0000\u0000\u00c9\u00ca\u0005l"+ + "\u0000\u0000\u00ca\u00cb\u0001\u0000\u0000\u0000\u00cb\u00cc\u0006\b\u0001"+ + "\u0000\u00cc\u0019\u0001\u0000\u0000\u0000\u00cd\u00ce\u0005<\u0000\u0000"+ + "\u00ce\u00cf\u0001\u0000\u0000\u0000\u00cf\u00d0\u0006\t\u0001\u0000\u00d0"+ + "\u001b\u0001\u0000\u0000\u0000\u00d1\u00d2\u0005<\u0000\u0000\u00d2\u00d3"+ + "\u0003\u0016\u0007\u0000\u00d3\u00d4\u0003f/\u0000\u00d4\u00d5\u0001\u0000"+ + "\u0000\u0000\u00d5\u00d6\u0006\n\u0002\u0000\u00d6\u001d\u0001\u0000\u0000"+ + "\u0000\u00d7\u00d8\u0005<\u0000\u0000\u00d8\u00d9\u0005!\u0000\u0000\u00d9"+ + "\u00da\u0001\u0000\u0000\u0000\u00da\u00db\u0006\u000b\u0003\u0000\u00db"+ + "\u001f\u0001\u0000\u0000\u0000\u00dc\u00de\b\u0001\u0000\u0000\u00dd\u00dc"+ + "\u0001\u0000\u0000\u0000\u00de\u00df\u0001\u0000\u0000\u0000\u00df\u00dd"+ + "\u0001\u0000\u0000\u0000\u00df\u00e0\u0001\u0000\u0000\u0000\u00e0!\u0001"+ + "\u0000\u0000\u0000\u00e1\u00e2\u0005\u00ef\u0000\u0000\u00e2\u00e3\u0005"+ + "\u00bb\u0000\u0000\u00e3\u00e4\u0005\u00bf\u0000\u0000\u00e4#\u0001\u0000"+ + "\u0000\u0000\u00e5\u00e6\u0005\u8000\ufeff\u0000\u0000\u00e6%\u0001\u0000"+ + "\u0000\u0000\u00e7\u00e8\u0005>\u0000\u0000\u00e8\u00e9\u0001\u0000\u0000"+ + "\u0000\u00e9\u00ea\u0006\u000f\u0004\u0000\u00ea\'\u0001\u0000\u0000\u0000"+ + "\u00eb\u00ec\u0005[\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed"+ + "\u00ee\u0006\u0010\u0005\u0000\u00ee)\u0001\u0000\u0000\u0000\u00ef\u00f0"+ + "\u0003X(\u0000\u00f0\u00f1\u0001\u0000\u0000\u0000\u00f1\u00f2\u0006\u0011"+ + "\u0000\u0000\u00f2+\u0001\u0000\u0000\u0000\u00f3\u00f4\u0007\u0002\u0000"+ + "\u0000\u00f4\u00f5\u0007\u0003\u0000\u0000\u00f5\u00f6\u0007\u0004\u0000"+ + "\u0000\u00f6\u00f7\u0007\u0005\u0000\u0000\u00f7\u00f8\u0007\u0006\u0000"+ + "\u0000\u00f8\u00f9\u0007\u0007\u0000\u0000\u00f9\u00fa\u0007\b\u0000\u0000"+ + "\u00fa-\u0001\u0000\u0000\u0000\u00fb\u00fc\u0003f/\u0000\u00fc\u00fd"+ + "\u0001\u0000\u0000\u0000\u00fd\u00fe\u0006\u0013\u0006\u0000\u00fe/\u0001"+ + "\u0000\u0000\u0000\u00ff\u0100\u0003d.\u0000\u0100\u0101\u0001\u0000\u0000"+ + "\u0000\u0101\u0102\u0006\u0014\u0007\u0000\u01021\u0001\u0000\u0000\u0000"+ + "\u0103\u0104\u0005]\u0000\u0000\u0104\u0105\u0001\u0000\u0000\u0000\u0105"+ + "\u0106\u0006\u0015\u0004\u0000\u01063\u0001\u0000\u0000\u0000\u0107\u0108"+ + "\u0005<\u0000\u0000\u0108\u0109\u0005!\u0000\u0000\u0109\u010a\u0001\u0000"+ + "\u0000\u0000\u010a\u010b\u0006\u0016\b\u0000\u010b5\u0001\u0000\u0000"+ + "\u0000\u010c\u010d\u0003X(\u0000\u010d\u010e\u0001\u0000\u0000\u0000\u010e"+ + "\u010f\u0006\u0017\u0000\u0000\u010f7\u0001\u0000\u0000\u0000\u0110\u0111"+ + "\u0003\f\u0002\u0000\u0111\u0112\u0001\u0000\u0000\u0000\u0112\u0113\u0006"+ + "\u0018\t\u0000\u01139\u0001\u0000\u0000\u0000\u0114\u0115\u0003\b\u0000"+ + "\u0000\u0115\u0116\u0001\u0000\u0000\u0000\u0116\u0117\u0006\u0019\n\u0000"+ + "\u0117;\u0001\u0000\u0000\u0000\u0118\u0119\u0005>\u0000\u0000\u0119\u011a"+ + "\u0001\u0000\u0000\u0000\u011a\u011b\u0006\u001a\u0004\u0000\u011b=\u0001"+ + "\u0000\u0000\u0000\u011c\u011d\u0005[\u0000\u0000\u011d\u011e\u0001\u0000"+ + "\u0000\u0000\u011e\u011f\u0006\u001b\u000b\u0000\u011f\u0120\u0006\u001b"+ + "\f\u0000\u0120?\u0001\u0000\u0000\u0000\u0121\u0122\u0003X(\u0000\u0122"+ + "\u0123\u0001\u0000\u0000\u0000\u0123\u0124\u0006\u001c\u0000\u0000\u0124"+ + "A\u0001\u0000\u0000\u0000\u0125\u0127\b\t\u0000\u0000\u0126\u0125\u0001"+ + "\u0000\u0000\u0000\u0127\u0128\u0001\u0000\u0000\u0000\u0128\u0126\u0001"+ + "\u0000\u0000\u0000\u0128\u0129\u0001\u0000\u0000\u0000\u0129C\u0001\u0000"+ + "\u0000\u0000\u012a\u012b\u0005]\u0000\u0000\u012b\u012c\u0001\u0000\u0000"+ + "\u0000\u012c\u012d\u0006\u001e\u0004\u0000\u012dE\u0001\u0000\u0000\u0000"+ + "\u012e\u012f\t\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000\u0130"+ + "\u0131\u0006\u001f\u000b\u0000\u0131G\u0001\u0000\u0000\u0000\u0132\u0133"+ + "\u0003T&\u0000\u0133\u0134\u0001\u0000\u0000\u0000\u0134\u0135\u0006 "+ + "\r\u0000\u0135\u0136\u0006 \u0004\u0000\u0136I\u0001\u0000\u0000\u0000"+ + "\u0137\u0138\u0003X(\u0000\u0138\u0139\u0001\u0000\u0000\u0000\u0139\u013a"+ + "\u0006!\u0000\u0000\u013aK\u0001\u0000\u0000\u0000\u013b\u013c\u0003\u0016"+ + "\u0007\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013d\u013e\u0006\"\u000b"+ + "\u0000\u013e\u013f\u0006\"\u000e\u0000\u013fM\u0001\u0000\u0000\u0000"+ + "\u0140\u0142\b\n\u0000\u0000\u0141\u0140\u0001\u0000\u0000\u0000\u0142"+ + "\u0143\u0001\u0000\u0000\u0000\u0143\u0141\u0001\u0000\u0000\u0000\u0143"+ + "\u0144\u0001\u0000\u0000\u0000\u0144O\u0001\u0000\u0000\u0000\u0145\u0146"+ + "\t\u0000\u0000\u0000\u0146\u0147\u0001\u0000\u0000\u0000\u0147\u0148\u0006"+ + "$\u000b\u0000\u0148\u0149\u0006$\u0004\u0000\u0149Q\u0001\u0000\u0000"+ + "\u0000\u014a\u014b\u0005>\u0000\u0000\u014b\u014c\u0001\u0000\u0000\u0000"+ + "\u014c\u014d\u0006%\u0004\u0000\u014dS\u0001\u0000\u0000\u0000\u014e\u014f"+ + "\u0003\u0016\u0007\u0000\u014f\u0150\u0005>\u0000\u0000\u0150\u0151\u0001"+ + "\u0000\u0000\u0000\u0151\u0152\u0006&\u0004\u0000\u0152U\u0001\u0000\u0000"+ + "\u0000\u0153\u0154\u0005/\u0000\u0000\u0154\u0155\u0005>\u0000\u0000\u0155"+ + "\u0156\u0001\u0000\u0000\u0000\u0156\u0157\u0006\'\u0004\u0000\u0157W"+ + "\u0001\u0000\u0000\u0000\u0158\u0159\u0007\u000b\u0000\u0000\u0159\u015a"+ + "\u0001\u0000\u0000\u0000\u015a\u015b\u0006(\u0000\u0000\u015bY\u0001\u0000"+ + "\u0000\u0000\u015c\u015d\u0005%\u0000\u0000\u015d\u015e\u0005@\u0000\u0000"+ + "\u015e[\u0001\u0000\u0000\u0000\u015f\u0160\u0005%\u0000\u0000\u0160]"+ + "\u0001\u0000\u0000\u0000\u0161\u0162\u0007\f\u0000\u0000\u0162\u0163\u0007"+ + "\b\u0000\u0000\u0163\u0164\u0007\u0005\u0000\u0000\u0164\u0165\u0007\r"+ + "\u0000\u0000\u0165_\u0001\u0000\u0000\u0000\u0166\u0167\u0005/\u0000\u0000"+ + "\u0167a\u0001\u0000\u0000\u0000\u0168\u0169\u0005=\u0000\u0000\u0169c"+ + "\u0001\u0000\u0000\u0000\u016a\u016e\u0005\"\u0000\u0000\u016b\u016d\b"+ + "\u000e\u0000\u0000\u016c\u016b\u0001\u0000\u0000\u0000\u016d\u0170\u0001"+ + "\u0000\u0000\u0000\u016e\u016c\u0001\u0000\u0000\u0000\u016e\u016f\u0001"+ + "\u0000\u0000\u0000\u016f\u0171\u0001\u0000\u0000\u0000\u0170\u016e\u0001"+ + "\u0000\u0000\u0000\u0171\u017b\u0005\"\u0000\u0000\u0172\u0176\u0005\'"+ + "\u0000\u0000\u0173\u0175\b\u000f\u0000\u0000\u0174\u0173\u0001\u0000\u0000"+ + "\u0000\u0175\u0178\u0001\u0000\u0000\u0000\u0176\u0174\u0001\u0000\u0000"+ + "\u0000\u0176\u0177\u0001\u0000\u0000\u0000\u0177\u0179\u0001\u0000\u0000"+ + "\u0000\u0178\u0176\u0001\u0000\u0000\u0000\u0179\u017b\u0005\'\u0000\u0000"+ + "\u017a\u016a\u0001\u0000\u0000\u0000\u017a\u0172\u0001\u0000\u0000\u0000"+ + "\u017be\u0001\u0000\u0000\u0000\u017c\u0180\u0003n3\u0000\u017d\u017f"+ + "\u0003l2\u0000\u017e\u017d\u0001\u0000\u0000\u0000\u017f\u0182\u0001\u0000"+ + "\u0000\u0000\u0180\u017e\u0001\u0000\u0000\u0000\u0180\u0181\u0001\u0000"+ + "\u0000\u0000\u0181g\u0001\u0000\u0000\u0000\u0182\u0180\u0001\u0000\u0000"+ + "\u0000\u0183\u0184\u0007\u0010\u0000\u0000\u0184i\u0001\u0000\u0000\u0000"+ + "\u0185\u0186\u0007\u0011\u0000\u0000\u0186k\u0001\u0000\u0000\u0000\u0187"+ + "\u018c\u0003n3\u0000\u0188\u018c\u0007\u0012\u0000\u0000\u0189\u018c\u0003"+ + "j1\u0000\u018a\u018c\u0007\u0013\u0000\u0000\u018b\u0187\u0001\u0000\u0000"+ + "\u0000\u018b\u0188\u0001\u0000\u0000\u0000\u018b\u0189\u0001\u0000\u0000"+ + "\u0000\u018b\u018a\u0001\u0000\u0000\u0000\u018cm\u0001\u0000\u0000\u0000"+ + "\u018d\u018f\u0007\u0014\u0000\u0000\u018e\u018d\u0001\u0000\u0000\u0000"+ + "\u018fo\u0001\u0000\u0000\u0000\u001a\u0000\u0001\u0002\u0003\u0004\u0005"+ + "\u0006\u0007x\u008c\u00a1\u00ac\u00b0\u00b4\u00b7\u00b9\u00bf\u00df\u0128"+ + "\u0143\u016e\u0176\u017a\u0180\u018b\u018e\u000f\u0006\u0000\u0000\u0005"+ + "\u0007\u0000\u0005\u0005\u0000\u0005\u0001\u0000\u0004\u0000\u0000\u0005"+ + "\u0002\u0000\u0007%\u0000\u0007$\u0000\u0005\u0003\u0000\u0007\u0003\u0000"+ + "\u0007\u0001\u0000\u0003\u0000\u0000\u0005\u0004\u0000\u0007\u001c\u0000"+ + "\u0005\u0006\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens index c0c0364234c..68761a1fcb8 100644 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens @@ -30,14 +30,15 @@ SLASH_CLOSE=29 S=30 DIRECTIVE_OPEN=31 DIRECTIVE_CLOSE=32 -SLASH=33 -EQUALS=34 -STRING=35 -Name=36 +META=33 +SLASH=34 +EQUALS=35 +STRING=36 +Name=37 '?'=8 '<'=10 '/>'=29 '%@'=31 '%'=32 -'/'=33 -'='=34 +'/'=34 +'='=35 diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp index ed42446867f..c1ccbdf02cc 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp @@ -32,6 +32,7 @@ null null '%@' '%' +null '/' '=' null @@ -71,6 +72,7 @@ SLASH_CLOSE S DIRECTIVE_OPEN DIRECTIVE_CLOSE +META SLASH EQUALS STRING @@ -82,6 +84,7 @@ prolog xmldecl misc doctypedecl +metadata intsubset markupdecl declSep @@ -96,4 +99,4 @@ chardata atn: -[4, 1, 36, 182, 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, 1, 0, 3, 0, 34, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 40, 8, 1, 1, 1, 5, 1, 43, 8, 1, 10, 1, 12, 1, 46, 9, 1, 1, 1, 5, 1, 49, 8, 1, 10, 1, 12, 1, 52, 9, 1, 1, 2, 1, 2, 5, 2, 56, 8, 2, 10, 2, 12, 2, 59, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 66, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 73, 8, 4, 10, 4, 12, 4, 76, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 82, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 5, 5, 88, 8, 5, 10, 5, 12, 5, 91, 9, 5, 1, 6, 1, 6, 3, 6, 95, 8, 6, 1, 6, 5, 6, 98, 8, 6, 10, 6, 12, 6, 101, 9, 6, 1, 6, 3, 6, 104, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 8, 3, 8, 114, 8, 8, 1, 9, 1, 9, 4, 9, 118, 8, 9, 11, 9, 12, 9, 119, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 130, 8, 10, 1, 11, 1, 11, 1, 11, 5, 11, 135, 8, 11, 10, 11, 12, 11, 138, 9, 11, 1, 11, 1, 11, 5, 11, 142, 8, 11, 10, 11, 12, 11, 145, 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 154, 8, 11, 10, 11, 12, 11, 157, 9, 11, 1, 11, 3, 11, 160, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 166, 8, 12, 10, 12, 12, 12, 169, 9, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 0, 0, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 1, 0, 4, 5, 3, 0, 6, 6, 8, 8, 13, 13, 193, 0, 33, 1, 0, 0, 0, 2, 39, 1, 0, 0, 0, 4, 53, 1, 0, 0, 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 108, 1, 0, 0, 0, 14, 110, 1, 0, 0, 0, 16, 113, 1, 0, 0, 0, 18, 115, 1, 0, 0, 0, 20, 129, 1, 0, 0, 0, 22, 159, 1, 0, 0, 0, 24, 161, 1, 0, 0, 0, 26, 173, 1, 0, 0, 0, 28, 175, 1, 0, 0, 0, 30, 179, 1, 0, 0, 0, 32, 34, 5, 7, 0, 0, 33, 32, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 3, 2, 1, 0, 36, 37, 3, 22, 11, 0, 37, 1, 1, 0, 0, 0, 38, 40, 3, 4, 2, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 44, 1, 0, 0, 0, 41, 43, 3, 6, 3, 0, 42, 41, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 50, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 47, 49, 3, 24, 12, 0, 48, 47, 1, 0, 0, 0, 49, 52, 1, 0, 0, 0, 50, 48, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 3, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 53, 57, 5, 9, 0, 0, 54, 56, 3, 28, 14, 0, 55, 54, 1, 0, 0, 0, 56, 59, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 60, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 60, 61, 5, 28, 0, 0, 61, 5, 1, 0, 0, 0, 62, 66, 5, 1, 0, 0, 63, 66, 3, 8, 4, 0, 64, 66, 3, 18, 9, 0, 65, 62, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 64, 1, 0, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 12, 0, 0, 68, 69, 5, 17, 0, 0, 69, 70, 5, 36, 0, 0, 70, 74, 3, 16, 8, 0, 71, 73, 5, 35, 0, 0, 72, 71, 1, 0, 0, 0, 73, 76, 1, 0, 0, 0, 74, 72, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 81, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 77, 78, 5, 15, 0, 0, 78, 79, 3, 10, 5, 0, 79, 80, 5, 18, 0, 0, 80, 82, 1, 0, 0, 0, 81, 77, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 84, 5, 14, 0, 0, 84, 9, 1, 0, 0, 0, 85, 88, 3, 12, 6, 0, 86, 88, 3, 14, 7, 0, 87, 85, 1, 0, 0, 0, 87, 86, 1, 0, 0, 0, 88, 91, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 11, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 92, 94, 5, 19, 0, 0, 93, 95, 5, 23, 0, 0, 94, 93, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 99, 1, 0, 0, 0, 96, 98, 5, 24, 0, 0, 97, 96, 1, 0, 0, 0, 98, 101, 1, 0, 0, 0, 99, 97, 1, 0, 0, 0, 99, 100, 1, 0, 0, 0, 100, 103, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 102, 104, 5, 23, 0, 0, 103, 102, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 109, 5, 21, 0, 0, 106, 109, 3, 18, 9, 0, 107, 109, 5, 1, 0, 0, 108, 92, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 107, 1, 0, 0, 0, 109, 13, 1, 0, 0, 0, 110, 111, 5, 3, 0, 0, 111, 15, 1, 0, 0, 0, 112, 114, 5, 36, 0, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 17, 1, 0, 0, 0, 115, 117, 5, 11, 0, 0, 116, 118, 5, 26, 0, 0, 117, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 28, 0, 0, 122, 19, 1, 0, 0, 0, 123, 130, 3, 22, 11, 0, 124, 130, 3, 26, 13, 0, 125, 130, 3, 18, 9, 0, 126, 130, 5, 2, 0, 0, 127, 130, 5, 1, 0, 0, 128, 130, 3, 30, 15, 0, 129, 123, 1, 0, 0, 0, 129, 124, 1, 0, 0, 0, 129, 125, 1, 0, 0, 0, 129, 126, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 128, 1, 0, 0, 0, 130, 21, 1, 0, 0, 0, 131, 132, 5, 10, 0, 0, 132, 136, 5, 36, 0, 0, 133, 135, 3, 28, 14, 0, 134, 133, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 143, 5, 27, 0, 0, 140, 142, 3, 20, 10, 0, 141, 140, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 10, 0, 0, 147, 148, 5, 33, 0, 0, 148, 149, 5, 36, 0, 0, 149, 160, 5, 27, 0, 0, 150, 151, 5, 10, 0, 0, 151, 155, 5, 36, 0, 0, 152, 154, 3, 28, 14, 0, 153, 152, 1, 0, 0, 0, 154, 157, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 160, 5, 29, 0, 0, 159, 131, 1, 0, 0, 0, 159, 150, 1, 0, 0, 0, 160, 23, 1, 0, 0, 0, 161, 162, 5, 10, 0, 0, 162, 163, 5, 31, 0, 0, 163, 167, 5, 36, 0, 0, 164, 166, 3, 28, 14, 0, 165, 164, 1, 0, 0, 0, 166, 169, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 170, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 170, 171, 5, 32, 0, 0, 171, 172, 5, 27, 0, 0, 172, 25, 1, 0, 0, 0, 173, 174, 7, 0, 0, 0, 174, 27, 1, 0, 0, 0, 175, 176, 5, 36, 0, 0, 176, 177, 5, 34, 0, 0, 177, 178, 5, 35, 0, 0, 178, 29, 1, 0, 0, 0, 179, 180, 7, 1, 0, 0, 180, 31, 1, 0, 0, 0, 22, 33, 39, 44, 50, 57, 65, 74, 81, 87, 89, 94, 99, 103, 108, 113, 119, 129, 136, 143, 155, 159, 167] \ No newline at end of file +[4, 1, 37, 195, 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, 1, 0, 3, 0, 36, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 42, 8, 1, 1, 1, 5, 1, 45, 8, 1, 10, 1, 12, 1, 48, 9, 1, 1, 1, 5, 1, 51, 8, 1, 10, 1, 12, 1, 54, 9, 1, 1, 2, 1, 2, 5, 2, 58, 8, 2, 10, 2, 12, 2, 61, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 75, 8, 4, 10, 4, 12, 4, 78, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 5, 5, 91, 8, 5, 10, 5, 12, 5, 94, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 5, 6, 100, 8, 6, 10, 6, 12, 6, 103, 9, 6, 1, 7, 1, 7, 3, 7, 107, 8, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 7, 3, 7, 116, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 121, 8, 7, 1, 8, 1, 8, 1, 9, 3, 9, 126, 8, 9, 1, 10, 1, 10, 4, 10, 130, 8, 10, 11, 10, 12, 10, 131, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 143, 8, 11, 1, 12, 1, 12, 1, 12, 5, 12, 148, 8, 12, 10, 12, 12, 12, 151, 9, 12, 1, 12, 1, 12, 5, 12, 155, 8, 12, 10, 12, 12, 12, 158, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 167, 8, 12, 10, 12, 12, 12, 170, 9, 12, 1, 12, 3, 12, 173, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 179, 8, 13, 10, 13, 12, 13, 182, 9, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 2, 1, 0, 4, 5, 3, 0, 6, 6, 8, 8, 13, 13, 207, 0, 35, 1, 0, 0, 0, 2, 41, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 69, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 120, 1, 0, 0, 0, 16, 122, 1, 0, 0, 0, 18, 125, 1, 0, 0, 0, 20, 127, 1, 0, 0, 0, 22, 142, 1, 0, 0, 0, 24, 172, 1, 0, 0, 0, 26, 174, 1, 0, 0, 0, 28, 186, 1, 0, 0, 0, 30, 188, 1, 0, 0, 0, 32, 192, 1, 0, 0, 0, 34, 36, 5, 7, 0, 0, 35, 34, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 38, 3, 2, 1, 0, 38, 39, 3, 24, 12, 0, 39, 1, 1, 0, 0, 0, 40, 42, 3, 4, 2, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 46, 1, 0, 0, 0, 43, 45, 3, 6, 3, 0, 44, 43, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 52, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 49, 51, 3, 26, 13, 0, 50, 49, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 3, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 59, 5, 9, 0, 0, 56, 58, 3, 30, 15, 0, 57, 56, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 62, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 28, 0, 0, 63, 5, 1, 0, 0, 0, 64, 68, 5, 1, 0, 0, 65, 68, 3, 8, 4, 0, 66, 68, 3, 20, 10, 0, 67, 64, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 5, 12, 0, 0, 70, 71, 5, 17, 0, 0, 71, 72, 5, 37, 0, 0, 72, 76, 3, 18, 9, 0, 73, 75, 5, 36, 0, 0, 74, 73, 1, 0, 0, 0, 75, 78, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 76, 1, 0, 0, 0, 79, 80, 5, 15, 0, 0, 80, 81, 3, 12, 6, 0, 81, 82, 5, 18, 0, 0, 82, 84, 1, 0, 0, 0, 83, 79, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, 5, 14, 0, 0, 86, 9, 1, 0, 0, 0, 87, 88, 5, 10, 0, 0, 88, 92, 5, 33, 0, 0, 89, 91, 3, 30, 15, 0, 90, 89, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 95, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 5, 27, 0, 0, 96, 11, 1, 0, 0, 0, 97, 100, 3, 14, 7, 0, 98, 100, 3, 16, 8, 0, 99, 97, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 103, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 13, 1, 0, 0, 0, 103, 101, 1, 0, 0, 0, 104, 106, 5, 19, 0, 0, 105, 107, 5, 23, 0, 0, 106, 105, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 111, 1, 0, 0, 0, 108, 110, 5, 24, 0, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 116, 5, 23, 0, 0, 115, 114, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 117, 121, 5, 21, 0, 0, 118, 121, 3, 20, 10, 0, 119, 121, 5, 1, 0, 0, 120, 104, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 5, 3, 0, 0, 123, 17, 1, 0, 0, 0, 124, 126, 5, 37, 0, 0, 125, 124, 1, 0, 0, 0, 125, 126, 1, 0, 0, 0, 126, 19, 1, 0, 0, 0, 127, 129, 5, 11, 0, 0, 128, 130, 5, 26, 0, 0, 129, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 5, 28, 0, 0, 134, 21, 1, 0, 0, 0, 135, 143, 3, 10, 5, 0, 136, 143, 3, 24, 12, 0, 137, 143, 3, 28, 14, 0, 138, 143, 3, 20, 10, 0, 139, 143, 5, 2, 0, 0, 140, 143, 5, 1, 0, 0, 141, 143, 3, 32, 16, 0, 142, 135, 1, 0, 0, 0, 142, 136, 1, 0, 0, 0, 142, 137, 1, 0, 0, 0, 142, 138, 1, 0, 0, 0, 142, 139, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 23, 1, 0, 0, 0, 144, 145, 5, 10, 0, 0, 145, 149, 5, 37, 0, 0, 146, 148, 3, 30, 15, 0, 147, 146, 1, 0, 0, 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 156, 5, 27, 0, 0, 153, 155, 3, 22, 11, 0, 154, 153, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 10, 0, 0, 160, 161, 5, 34, 0, 0, 161, 162, 5, 37, 0, 0, 162, 173, 5, 27, 0, 0, 163, 164, 5, 10, 0, 0, 164, 168, 5, 37, 0, 0, 165, 167, 3, 30, 15, 0, 166, 165, 1, 0, 0, 0, 167, 170, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 171, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 171, 173, 5, 29, 0, 0, 172, 144, 1, 0, 0, 0, 172, 163, 1, 0, 0, 0, 173, 25, 1, 0, 0, 0, 174, 175, 5, 10, 0, 0, 175, 176, 5, 31, 0, 0, 176, 180, 5, 37, 0, 0, 177, 179, 3, 30, 15, 0, 178, 177, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 183, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 184, 5, 32, 0, 0, 184, 185, 5, 27, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 0, 0, 0, 187, 29, 1, 0, 0, 0, 188, 189, 5, 37, 0, 0, 189, 190, 5, 35, 0, 0, 190, 191, 5, 36, 0, 0, 191, 31, 1, 0, 0, 0, 192, 193, 7, 1, 0, 0, 193, 33, 1, 0, 0, 0, 23, 35, 41, 46, 52, 59, 67, 76, 83, 92, 99, 101, 106, 111, 115, 120, 125, 131, 142, 149, 156, 168, 172, 180] \ No newline at end of file diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java index e0f40773307..4752bc42853 100644 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java @@ -15,17 +15,14 @@ */ // Generated from java-escape by ANTLR 4.11.1 package org.openrewrite.xml.internal.grammar; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.ATN; -import org.antlr.v4.runtime.atn.ATNDeserializer; -import org.antlr.v4.runtime.atn.ParserATNSimulator; -import org.antlr.v4.runtime.atn.PredictionContextCache; +import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.tree.ParseTreeListener; -import org.antlr.v4.runtime.tree.ParseTreeVisitor; -import org.antlr.v4.runtime.tree.TerminalNode; - +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) public class XMLParser extends Parser { @@ -41,15 +38,16 @@ public class XMLParser extends Parser { DTD_SUBSET_CLOSE=18, MARKUP_OPEN=19, DTS_SUBSET_S=20, MARK_UP_CLOSE=21, MARKUP_S=22, MARKUP_TEXT=23, MARKUP_SUBSET=24, PI_S=25, PI_TEXT=26, CLOSE=27, SPECIAL_CLOSE=28, SLASH_CLOSE=29, S=30, DIRECTIVE_OPEN=31, DIRECTIVE_CLOSE=32, - SLASH=33, EQUALS=34, STRING=35, Name=36; + META=33, SLASH=34, EQUALS=35, STRING=36, Name=37; public static final int RULE_document = 0, RULE_prolog = 1, RULE_xmldecl = 2, RULE_misc = 3, RULE_doctypedecl = 4, - RULE_intsubset = 5, RULE_markupdecl = 6, RULE_declSep = 7, RULE_externalid = 8, - RULE_processinginstruction = 9, RULE_content = 10, RULE_element = 11, - RULE_jspdirective = 12, RULE_reference = 13, RULE_attribute = 14, RULE_chardata = 15; + RULE_metadata = 5, RULE_intsubset = 6, RULE_markupdecl = 7, RULE_declSep = 8, + RULE_externalid = 9, RULE_processinginstruction = 10, RULE_content = 11, + RULE_element = 12, RULE_jspdirective = 13, RULE_reference = 14, RULE_attribute = 15, + RULE_chardata = 16; private static String[] makeRuleNames() { return new String[] { - "document", "prolog", "xmldecl", "misc", "doctypedecl", "intsubset", + "document", "prolog", "xmldecl", "misc", "doctypedecl", "metadata", "intsubset", "markupdecl", "declSep", "externalid", "processinginstruction", "content", "element", "jspdirective", "reference", "attribute", "chardata" }; @@ -60,7 +58,8 @@ private static String[] makeLiteralNames() { return new String[] { null, null, null, null, null, null, null, null, "'?'", null, "'<'", null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, "'/>'", null, "'%@'", "'%'", "'/'", "'='" + null, null, null, null, null, "'/>'", null, "'%@'", "'%'", null, "'/'", + "'='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); @@ -71,8 +70,8 @@ private static String[] makeSymbolicNames() { "DTD_OPEN", "TEXT", "DTD_CLOSE", "DTD_SUBSET_OPEN", "DTD_S", "DOCTYPE", "DTD_SUBSET_CLOSE", "MARKUP_OPEN", "DTS_SUBSET_S", "MARK_UP_CLOSE", "MARKUP_S", "MARKUP_TEXT", "MARKUP_SUBSET", "PI_S", "PI_TEXT", "CLOSE", "SPECIAL_CLOSE", - "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "SLASH", "EQUALS", - "STRING", "Name" + "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "META", "SLASH", + "EQUALS", "STRING", "Name" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -161,19 +160,19 @@ public final DocumentContext document() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(33); + setState(35); _errHandler.sync(this); _la = _input.LA(1); if (_la==UTF_ENCODING_BOM) { { - setState(32); + setState(34); match(UTF_ENCODING_BOM); } } - setState(35); + setState(37); prolog(); - setState(36); + setState(38); element(); } } @@ -232,43 +231,43 @@ public final PrologContext prolog() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(39); + setState(41); _errHandler.sync(this); _la = _input.LA(1); if (_la==SPECIAL_OPEN_XML) { { - setState(38); + setState(40); xmldecl(); } } - setState(44); + setState(46); _errHandler.sync(this); _la = _input.LA(1); while (((_la) & ~0x3f) == 0 && ((1L << _la) & 6146L) != 0) { { { - setState(41); + setState(43); misc(); } } - setState(46); + setState(48); _errHandler.sync(this); _la = _input.LA(1); } - setState(50); + setState(52); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,3,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(47); + setState(49); jspdirective(); } } } - setState(52); + setState(54); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,3,_ctx); } @@ -321,23 +320,23 @@ public final XmldeclContext xmldecl() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(53); + setState(55); match(SPECIAL_OPEN_XML); - setState(57); + setState(59); _errHandler.sync(this); _la = _input.LA(1); while (_la==Name) { { { - setState(54); + setState(56); attribute(); } } - setState(59); + setState(61); _errHandler.sync(this); _la = _input.LA(1); } - setState(60); + setState(62); match(SPECIAL_CLOSE); } } @@ -386,24 +385,24 @@ public final MiscContext misc() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(65); + setState(67); _errHandler.sync(this); switch (_input.LA(1)) { case COMMENT: { - setState(62); + setState(64); match(COMMENT); } break; case DTD_OPEN: { - setState(63); + setState(65); doctypedecl(); } break; case SPECIAL_OPEN: { - setState(64); + setState(66); processinginstruction(); } break; @@ -467,43 +466,43 @@ public final DoctypedeclContext doctypedecl() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(67); + setState(69); match(DTD_OPEN); - setState(68); + setState(70); match(DOCTYPE); - setState(69); + setState(71); match(Name); - setState(70); + setState(72); externalid(); - setState(74); + setState(76); _errHandler.sync(this); _la = _input.LA(1); while (_la==STRING) { { { - setState(71); + setState(73); match(STRING); } } - setState(76); + setState(78); _errHandler.sync(this); _la = _input.LA(1); } - setState(81); + setState(83); _errHandler.sync(this); _la = _input.LA(1); if (_la==DTD_SUBSET_OPEN) { { - setState(77); + setState(79); match(DTD_SUBSET_OPEN); - setState(78); + setState(80); intsubset(); - setState(79); + setState(81); match(DTD_SUBSET_CLOSE); } } - setState(83); + setState(85); match(DTD_CLOSE); } } @@ -518,6 +517,76 @@ public final DoctypedeclContext doctypedecl() throws RecognitionException { return _localctx; } + @SuppressWarnings("CheckReturnValue") + public static class MetadataContext extends ParserRuleContext { + public TerminalNode OPEN() { return getToken(XMLParser.OPEN, 0); } + public TerminalNode META() { return getToken(XMLParser.META, 0); } + public TerminalNode CLOSE() { return getToken(XMLParser.CLOSE, 0); } + public List attribute() { + return getRuleContexts(AttributeContext.class); + } + public AttributeContext attribute(int i) { + return getRuleContext(AttributeContext.class,i); + } + public MetadataContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_metadata; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof XMLParserListener ) ((XMLParserListener)listener).enterMetadata(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof XMLParserListener ) ((XMLParserListener)listener).exitMetadata(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof XMLParserVisitor ) return ((XMLParserVisitor)visitor).visitMetadata(this); + else return visitor.visitChildren(this); + } + } + + public final MetadataContext metadata() throws RecognitionException { + MetadataContext _localctx = new MetadataContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_metadata); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(87); + match(OPEN); + setState(88); + match(META); + setState(92); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Name) { + { + { + setState(89); + attribute(); + } + } + setState(94); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(95); + match(CLOSE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + @SuppressWarnings("CheckReturnValue") public static class IntsubsetContext extends ParserRuleContext { public List markupdecl() { @@ -553,30 +622,30 @@ public T accept(ParseTreeVisitor visitor) { public final IntsubsetContext intsubset() throws RecognitionException { IntsubsetContext _localctx = new IntsubsetContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_intsubset); + enterRule(_localctx, 12, RULE_intsubset); int _la; try { enterOuterAlt(_localctx, 1); { - setState(89); + setState(101); _errHandler.sync(this); _la = _input.LA(1); while (((_la) & ~0x3f) == 0 && ((1L << _la) & 526346L) != 0) { { - setState(87); + setState(99); _errHandler.sync(this); switch (_input.LA(1)) { case COMMENT: case SPECIAL_OPEN: case MARKUP_OPEN: { - setState(85); + setState(97); markupdecl(); } break; case ParamEntityRef: { - setState(86); + setState(98); declSep(); } break; @@ -584,7 +653,7 @@ public final IntsubsetContext intsubset() throws RecognitionException { throw new NoViableAltException(this); } } - setState(91); + setState(103); _errHandler.sync(this); _la = _input.LA(1); } @@ -638,53 +707,53 @@ public T accept(ParseTreeVisitor visitor) { public final MarkupdeclContext markupdecl() throws RecognitionException { MarkupdeclContext _localctx = new MarkupdeclContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_markupdecl); + enterRule(_localctx, 14, RULE_markupdecl); int _la; try { - setState(108); + setState(120); _errHandler.sync(this); switch (_input.LA(1)) { case MARKUP_OPEN: enterOuterAlt(_localctx, 1); { { - setState(92); + setState(104); match(MARKUP_OPEN); - setState(94); + setState(106); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { case 1: { - setState(93); + setState(105); match(MARKUP_TEXT); } break; } - setState(99); + setState(111); _errHandler.sync(this); _la = _input.LA(1); while (_la==MARKUP_SUBSET) { { { - setState(96); + setState(108); match(MARKUP_SUBSET); } } - setState(101); + setState(113); _errHandler.sync(this); _la = _input.LA(1); } - setState(103); + setState(115); _errHandler.sync(this); _la = _input.LA(1); if (_la==MARKUP_TEXT) { { - setState(102); + setState(114); match(MARKUP_TEXT); } } - setState(105); + setState(117); match(MARK_UP_CLOSE); } } @@ -692,14 +761,14 @@ public final MarkupdeclContext markupdecl() throws RecognitionException { case SPECIAL_OPEN: enterOuterAlt(_localctx, 2); { - setState(106); + setState(118); processinginstruction(); } break; case COMMENT: enterOuterAlt(_localctx, 3); { - setState(107); + setState(119); match(COMMENT); } break; @@ -742,11 +811,11 @@ public T accept(ParseTreeVisitor visitor) { public final DeclSepContext declSep() throws RecognitionException { DeclSepContext _localctx = new DeclSepContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_declSep); + enterRule(_localctx, 16, RULE_declSep); try { enterOuterAlt(_localctx, 1); { - setState(110); + setState(122); match(ParamEntityRef); } } @@ -785,17 +854,17 @@ public T accept(ParseTreeVisitor visitor) { public final ExternalidContext externalid() throws RecognitionException { ExternalidContext _localctx = new ExternalidContext(_ctx, getState()); - enterRule(_localctx, 16, RULE_externalid); + enterRule(_localctx, 18, RULE_externalid); int _la; try { enterOuterAlt(_localctx, 1); { - setState(113); + setState(125); _errHandler.sync(this); _la = _input.LA(1); if (_la==Name) { { - setState(112); + setState(124); match(Name); } } @@ -842,28 +911,28 @@ public T accept(ParseTreeVisitor visitor) { public final ProcessinginstructionContext processinginstruction() throws RecognitionException { ProcessinginstructionContext _localctx = new ProcessinginstructionContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_processinginstruction); + enterRule(_localctx, 20, RULE_processinginstruction); int _la; try { enterOuterAlt(_localctx, 1); { - setState(115); + setState(127); match(SPECIAL_OPEN); - setState(117); + setState(129); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(116); + setState(128); match(PI_TEXT); } } - setState(119); + setState(131); _errHandler.sync(this); _la = _input.LA(1); } while ( _la==PI_TEXT ); - setState(121); + setState(133); match(SPECIAL_CLOSE); } } @@ -880,6 +949,9 @@ public final ProcessinginstructionContext processinginstruction() throws Recogni @SuppressWarnings("CheckReturnValue") public static class ContentContext extends ParserRuleContext { + public MetadataContext metadata() { + return getRuleContext(MetadataContext.class,0); + } public ElementContext element() { return getRuleContext(ElementContext.class,0); } @@ -915,54 +987,55 @@ public T accept(ParseTreeVisitor visitor) { public final ContentContext content() throws RecognitionException { ContentContext _localctx = new ContentContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_content); + enterRule(_localctx, 22, RULE_content); try { enterOuterAlt(_localctx, 1); { - setState(129); + setState(142); _errHandler.sync(this); - switch (_input.LA(1)) { - case OPEN: + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + { + setState(135); + metadata(); + } + break; + case 2: { - setState(123); + setState(136); element(); } break; - case EntityRef: - case CharRef: + case 3: { - setState(124); + setState(137); reference(); } break; - case SPECIAL_OPEN: + case 4: { - setState(125); + setState(138); processinginstruction(); } break; - case CDATA: + case 5: { - setState(126); + setState(139); match(CDATA); } break; - case COMMENT: + case 6: { - setState(127); + setState(140); match(COMMENT); } break; - case SEA_WS: - case QUESTION_MARK: - case TEXT: + case 7: { - setState(128); + setState(141); chardata(); } break; - default: - throw new NoViableAltException(this); } } } @@ -1026,84 +1099,84 @@ public T accept(ParseTreeVisitor visitor) { public final ElementContext element() throws RecognitionException { ElementContext _localctx = new ElementContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_element); + enterRule(_localctx, 24, RULE_element); int _la; try { int _alt; - setState(159); + setState(172); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(131); + setState(144); match(OPEN); - setState(132); + setState(145); match(Name); - setState(136); + setState(149); _errHandler.sync(this); _la = _input.LA(1); while (_la==Name) { { { - setState(133); + setState(146); attribute(); } } - setState(138); + setState(151); _errHandler.sync(this); _la = _input.LA(1); } - setState(139); + setState(152); match(CLOSE); - setState(143); + setState(156); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,18,_ctx); + _alt = getInterpreter().adaptivePredict(_input,19,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(140); + setState(153); content(); } } } - setState(145); + setState(158); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,18,_ctx); + _alt = getInterpreter().adaptivePredict(_input,19,_ctx); } - setState(146); + setState(159); match(OPEN); - setState(147); + setState(160); match(SLASH); - setState(148); + setState(161); match(Name); - setState(149); + setState(162); match(CLOSE); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(150); + setState(163); match(OPEN); - setState(151); + setState(164); match(Name); - setState(155); + setState(168); _errHandler.sync(this); _la = _input.LA(1); while (_la==Name) { { { - setState(152); + setState(165); attribute(); } } - setState(157); + setState(170); _errHandler.sync(this); _la = _input.LA(1); } - setState(158); + setState(171); match(SLASH_CLOSE); } break; @@ -1154,34 +1227,34 @@ public T accept(ParseTreeVisitor visitor) { public final JspdirectiveContext jspdirective() throws RecognitionException { JspdirectiveContext _localctx = new JspdirectiveContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_jspdirective); + enterRule(_localctx, 26, RULE_jspdirective); int _la; try { enterOuterAlt(_localctx, 1); { - setState(161); + setState(174); match(OPEN); - setState(162); + setState(175); match(DIRECTIVE_OPEN); - setState(163); + setState(176); match(Name); - setState(167); + setState(180); _errHandler.sync(this); _la = _input.LA(1); while (_la==Name) { { { - setState(164); + setState(177); attribute(); } } - setState(169); + setState(182); _errHandler.sync(this); _la = _input.LA(1); } - setState(170); + setState(183); match(DIRECTIVE_CLOSE); - setState(171); + setState(184); match(CLOSE); } } @@ -1221,12 +1294,12 @@ public T accept(ParseTreeVisitor visitor) { public final ReferenceContext reference() throws RecognitionException { ReferenceContext _localctx = new ReferenceContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_reference); + enterRule(_localctx, 28, RULE_reference); int _la; try { enterOuterAlt(_localctx, 1); { - setState(173); + setState(186); _la = _input.LA(1); if ( !(_la==EntityRef || _la==CharRef) ) { _errHandler.recoverInline(this); @@ -1275,15 +1348,15 @@ public T accept(ParseTreeVisitor visitor) { public final AttributeContext attribute() throws RecognitionException { AttributeContext _localctx = new AttributeContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_attribute); + enterRule(_localctx, 30, RULE_attribute); try { enterOuterAlt(_localctx, 1); { - setState(175); + setState(188); match(Name); - setState(176); + setState(189); match(EQUALS); - setState(177); + setState(190); match(STRING); } } @@ -1324,12 +1397,12 @@ public T accept(ParseTreeVisitor visitor) { public final ChardataContext chardata() throws RecognitionException { ChardataContext _localctx = new ChardataContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_chardata); + enterRule(_localctx, 32, RULE_chardata); int _la; try { enterOuterAlt(_localctx, 1); { - setState(179); + setState(192); _la = _input.LA(1); if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 8512L) != 0) ) { _errHandler.recoverInline(this); @@ -1353,116 +1426,124 @@ public final ChardataContext chardata() throws RecognitionException { } public static final String _serializedATN = - "\u0004\u0001$\u00b6\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ + "\u0004\u0001%\u00c3\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ - "\u0001\u0000\u0003\u0000\"\b\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+ - "\u0001\u0001\u0003\u0001(\b\u0001\u0001\u0001\u0005\u0001+\b\u0001\n\u0001"+ - "\f\u0001.\t\u0001\u0001\u0001\u0005\u00011\b\u0001\n\u0001\f\u00014\t"+ - "\u0001\u0001\u0002\u0001\u0002\u0005\u00028\b\u0002\n\u0002\f\u0002;\t"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0003"+ - "\u0003B\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+ - "\u0004\u0005\u0004I\b\u0004\n\u0004\f\u0004L\t\u0004\u0001\u0004\u0001"+ - "\u0004\u0001\u0004\u0001\u0004\u0003\u0004R\b\u0004\u0001\u0004\u0001"+ - "\u0004\u0001\u0005\u0001\u0005\u0005\u0005X\b\u0005\n\u0005\f\u0005[\t"+ - "\u0005\u0001\u0006\u0001\u0006\u0003\u0006_\b\u0006\u0001\u0006\u0005"+ - "\u0006b\b\u0006\n\u0006\f\u0006e\t\u0006\u0001\u0006\u0003\u0006h\b\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006m\b\u0006\u0001\u0007"+ - "\u0001\u0007\u0001\b\u0003\br\b\b\u0001\t\u0001\t\u0004\tv\b\t\u000b\t"+ - "\f\tw\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n"+ - "\u0003\n\u0082\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u0087"+ - "\b\u000b\n\u000b\f\u000b\u008a\t\u000b\u0001\u000b\u0001\u000b\u0005\u000b"+ - "\u008e\b\u000b\n\u000b\f\u000b\u0091\t\u000b\u0001\u000b\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u009a"+ - "\b\u000b\n\u000b\f\u000b\u009d\t\u000b\u0001\u000b\u0003\u000b\u00a0\b"+ - "\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0005\f\u00a6\b\f\n\f\f\f\u00a9"+ - "\t\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+ - "\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0000\u0000\u0010"+ + "\u0002\u0010\u0007\u0010\u0001\u0000\u0003\u0000$\b\u0000\u0001\u0000"+ + "\u0001\u0000\u0001\u0000\u0001\u0001\u0003\u0001*\b\u0001\u0001\u0001"+ + "\u0005\u0001-\b\u0001\n\u0001\f\u00010\t\u0001\u0001\u0001\u0005\u0001"+ + "3\b\u0001\n\u0001\f\u00016\t\u0001\u0001\u0002\u0001\u0002\u0005\u0002"+ + ":\b\u0002\n\u0002\f\u0002=\t\u0002\u0001\u0002\u0001\u0002\u0001\u0003"+ + "\u0001\u0003\u0001\u0003\u0003\u0003D\b\u0003\u0001\u0004\u0001\u0004"+ + "\u0001\u0004\u0001\u0004\u0001\u0004\u0005\u0004K\b\u0004\n\u0004\f\u0004"+ + "N\t\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004"+ + "T\b\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0005\u0005[\b\u0005\n\u0005\f\u0005^\t\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0006\u0001\u0006\u0005\u0006d\b\u0006\n\u0006\f\u0006g\t\u0006"+ + "\u0001\u0007\u0001\u0007\u0003\u0007k\b\u0007\u0001\u0007\u0005\u0007"+ + "n\b\u0007\n\u0007\f\u0007q\t\u0007\u0001\u0007\u0003\u0007t\b\u0007\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0003\u0007y\b\u0007\u0001\b\u0001\b\u0001"+ + "\t\u0003\t~\b\t\u0001\n\u0001\n\u0004\n\u0082\b\n\u000b\n\f\n\u0083\u0001"+ + "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0003\u000b\u008f\b\u000b\u0001\f\u0001\f\u0001"+ + "\f\u0005\f\u0094\b\f\n\f\f\f\u0097\t\f\u0001\f\u0001\f\u0005\f\u009b\b"+ + "\f\n\f\f\f\u009e\t\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0005\f\u00a7\b\f\n\f\f\f\u00aa\t\f\u0001\f\u0003\f\u00ad\b\f\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0005\r\u00b3\b\r\n\r\f\r\u00b6\t\r\u0001\r"+ + "\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0000\u0000\u0011"+ "\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+ - "\u001c\u001e\u0000\u0002\u0001\u0000\u0004\u0005\u0003\u0000\u0006\u0006"+ - "\b\b\r\r\u00c1\u0000!\u0001\u0000\u0000\u0000\u0002\'\u0001\u0000\u0000"+ - "\u0000\u00045\u0001\u0000\u0000\u0000\u0006A\u0001\u0000\u0000\u0000\b"+ - "C\u0001\u0000\u0000\u0000\nY\u0001\u0000\u0000\u0000\fl\u0001\u0000\u0000"+ - "\u0000\u000en\u0001\u0000\u0000\u0000\u0010q\u0001\u0000\u0000\u0000\u0012"+ - "s\u0001\u0000\u0000\u0000\u0014\u0081\u0001\u0000\u0000\u0000\u0016\u009f"+ - "\u0001\u0000\u0000\u0000\u0018\u00a1\u0001\u0000\u0000\u0000\u001a\u00ad"+ - "\u0001\u0000\u0000\u0000\u001c\u00af\u0001\u0000\u0000\u0000\u001e\u00b3"+ - "\u0001\u0000\u0000\u0000 \"\u0005\u0007\u0000\u0000! \u0001\u0000\u0000"+ - "\u0000!\"\u0001\u0000\u0000\u0000\"#\u0001\u0000\u0000\u0000#$\u0003\u0002"+ - "\u0001\u0000$%\u0003\u0016\u000b\u0000%\u0001\u0001\u0000\u0000\u0000"+ - "&(\u0003\u0004\u0002\u0000\'&\u0001\u0000\u0000\u0000\'(\u0001\u0000\u0000"+ - "\u0000(,\u0001\u0000\u0000\u0000)+\u0003\u0006\u0003\u0000*)\u0001\u0000"+ - "\u0000\u0000+.\u0001\u0000\u0000\u0000,*\u0001\u0000\u0000\u0000,-\u0001"+ - "\u0000\u0000\u0000-2\u0001\u0000\u0000\u0000.,\u0001\u0000\u0000\u0000"+ - "/1\u0003\u0018\f\u00000/\u0001\u0000\u0000\u000014\u0001\u0000\u0000\u0000"+ - "20\u0001\u0000\u0000\u000023\u0001\u0000\u0000\u00003\u0003\u0001\u0000"+ - "\u0000\u000042\u0001\u0000\u0000\u000059\u0005\t\u0000\u000068\u0003\u001c"+ - "\u000e\u000076\u0001\u0000\u0000\u00008;\u0001\u0000\u0000\u000097\u0001"+ - "\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:<\u0001\u0000\u0000\u0000"+ - ";9\u0001\u0000\u0000\u0000<=\u0005\u001c\u0000\u0000=\u0005\u0001\u0000"+ - "\u0000\u0000>B\u0005\u0001\u0000\u0000?B\u0003\b\u0004\u0000@B\u0003\u0012"+ - "\t\u0000A>\u0001\u0000\u0000\u0000A?\u0001\u0000\u0000\u0000A@\u0001\u0000"+ - "\u0000\u0000B\u0007\u0001\u0000\u0000\u0000CD\u0005\f\u0000\u0000DE\u0005"+ - "\u0011\u0000\u0000EF\u0005$\u0000\u0000FJ\u0003\u0010\b\u0000GI\u0005"+ - "#\u0000\u0000HG\u0001\u0000\u0000\u0000IL\u0001\u0000\u0000\u0000JH\u0001"+ - "\u0000\u0000\u0000JK\u0001\u0000\u0000\u0000KQ\u0001\u0000\u0000\u0000"+ - "LJ\u0001\u0000\u0000\u0000MN\u0005\u000f\u0000\u0000NO\u0003\n\u0005\u0000"+ - "OP\u0005\u0012\u0000\u0000PR\u0001\u0000\u0000\u0000QM\u0001\u0000\u0000"+ - "\u0000QR\u0001\u0000\u0000\u0000RS\u0001\u0000\u0000\u0000ST\u0005\u000e"+ - "\u0000\u0000T\t\u0001\u0000\u0000\u0000UX\u0003\f\u0006\u0000VX\u0003"+ - "\u000e\u0007\u0000WU\u0001\u0000\u0000\u0000WV\u0001\u0000\u0000\u0000"+ - "X[\u0001\u0000\u0000\u0000YW\u0001\u0000\u0000\u0000YZ\u0001\u0000\u0000"+ - "\u0000Z\u000b\u0001\u0000\u0000\u0000[Y\u0001\u0000\u0000\u0000\\^\u0005"+ - "\u0013\u0000\u0000]_\u0005\u0017\u0000\u0000^]\u0001\u0000\u0000\u0000"+ - "^_\u0001\u0000\u0000\u0000_c\u0001\u0000\u0000\u0000`b\u0005\u0018\u0000"+ - "\u0000a`\u0001\u0000\u0000\u0000be\u0001\u0000\u0000\u0000ca\u0001\u0000"+ - "\u0000\u0000cd\u0001\u0000\u0000\u0000dg\u0001\u0000\u0000\u0000ec\u0001"+ - "\u0000\u0000\u0000fh\u0005\u0017\u0000\u0000gf\u0001\u0000\u0000\u0000"+ - "gh\u0001\u0000\u0000\u0000hi\u0001\u0000\u0000\u0000im\u0005\u0015\u0000"+ - "\u0000jm\u0003\u0012\t\u0000km\u0005\u0001\u0000\u0000l\\\u0001\u0000"+ - "\u0000\u0000lj\u0001\u0000\u0000\u0000lk\u0001\u0000\u0000\u0000m\r\u0001"+ - "\u0000\u0000\u0000no\u0005\u0003\u0000\u0000o\u000f\u0001\u0000\u0000"+ - "\u0000pr\u0005$\u0000\u0000qp\u0001\u0000\u0000\u0000qr\u0001\u0000\u0000"+ - "\u0000r\u0011\u0001\u0000\u0000\u0000su\u0005\u000b\u0000\u0000tv\u0005"+ - "\u001a\u0000\u0000ut\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000"+ - "wu\u0001\u0000\u0000\u0000wx\u0001\u0000\u0000\u0000xy\u0001\u0000\u0000"+ - "\u0000yz\u0005\u001c\u0000\u0000z\u0013\u0001\u0000\u0000\u0000{\u0082"+ - "\u0003\u0016\u000b\u0000|\u0082\u0003\u001a\r\u0000}\u0082\u0003\u0012"+ - "\t\u0000~\u0082\u0005\u0002\u0000\u0000\u007f\u0082\u0005\u0001\u0000"+ - "\u0000\u0080\u0082\u0003\u001e\u000f\u0000\u0081{\u0001\u0000\u0000\u0000"+ - "\u0081|\u0001\u0000\u0000\u0000\u0081}\u0001\u0000\u0000\u0000\u0081~"+ - "\u0001\u0000\u0000\u0000\u0081\u007f\u0001\u0000\u0000\u0000\u0081\u0080"+ - "\u0001\u0000\u0000\u0000\u0082\u0015\u0001\u0000\u0000\u0000\u0083\u0084"+ - "\u0005\n\u0000\u0000\u0084\u0088\u0005$\u0000\u0000\u0085\u0087\u0003"+ - "\u001c\u000e\u0000\u0086\u0085\u0001\u0000\u0000\u0000\u0087\u008a\u0001"+ - "\u0000\u0000\u0000\u0088\u0086\u0001\u0000\u0000\u0000\u0088\u0089\u0001"+ - "\u0000\u0000\u0000\u0089\u008b\u0001\u0000\u0000\u0000\u008a\u0088\u0001"+ - "\u0000\u0000\u0000\u008b\u008f\u0005\u001b\u0000\u0000\u008c\u008e\u0003"+ - "\u0014\n\u0000\u008d\u008c\u0001\u0000\u0000\u0000\u008e\u0091\u0001\u0000"+ - "\u0000\u0000\u008f\u008d\u0001\u0000\u0000\u0000\u008f\u0090\u0001\u0000"+ - "\u0000\u0000\u0090\u0092\u0001\u0000\u0000\u0000\u0091\u008f\u0001\u0000"+ - "\u0000\u0000\u0092\u0093\u0005\n\u0000\u0000\u0093\u0094\u0005!\u0000"+ - "\u0000\u0094\u0095\u0005$\u0000\u0000\u0095\u00a0\u0005\u001b\u0000\u0000"+ - "\u0096\u0097\u0005\n\u0000\u0000\u0097\u009b\u0005$\u0000\u0000\u0098"+ - "\u009a\u0003\u001c\u000e\u0000\u0099\u0098\u0001\u0000\u0000\u0000\u009a"+ - "\u009d\u0001\u0000\u0000\u0000\u009b\u0099\u0001\u0000\u0000\u0000\u009b"+ - "\u009c\u0001\u0000\u0000\u0000\u009c\u009e\u0001\u0000\u0000\u0000\u009d"+ - "\u009b\u0001\u0000\u0000\u0000\u009e\u00a0\u0005\u001d\u0000\u0000\u009f"+ - "\u0083\u0001\u0000\u0000\u0000\u009f\u0096\u0001\u0000\u0000\u0000\u00a0"+ - "\u0017\u0001\u0000\u0000\u0000\u00a1\u00a2\u0005\n\u0000\u0000\u00a2\u00a3"+ - "\u0005\u001f\u0000\u0000\u00a3\u00a7\u0005$\u0000\u0000\u00a4\u00a6\u0003"+ - "\u001c\u000e\u0000\u00a5\u00a4\u0001\u0000\u0000\u0000\u00a6\u00a9\u0001"+ - "\u0000\u0000\u0000\u00a7\u00a5\u0001\u0000\u0000\u0000\u00a7\u00a8\u0001"+ - "\u0000\u0000\u0000\u00a8\u00aa\u0001\u0000\u0000\u0000\u00a9\u00a7\u0001"+ - "\u0000\u0000\u0000\u00aa\u00ab\u0005 \u0000\u0000\u00ab\u00ac\u0005\u001b"+ - "\u0000\u0000\u00ac\u0019\u0001\u0000\u0000\u0000\u00ad\u00ae\u0007\u0000"+ - "\u0000\u0000\u00ae\u001b\u0001\u0000\u0000\u0000\u00af\u00b0\u0005$\u0000"+ - "\u0000\u00b0\u00b1\u0005\"\u0000\u0000\u00b1\u00b2\u0005#\u0000\u0000"+ - "\u00b2\u001d\u0001\u0000\u0000\u0000\u00b3\u00b4\u0007\u0001\u0000\u0000"+ - "\u00b4\u001f\u0001\u0000\u0000\u0000\u0016!\',29AJQWY^cglqw\u0081\u0088"+ - "\u008f\u009b\u009f\u00a7"; + "\u001c\u001e \u0000\u0002\u0001\u0000\u0004\u0005\u0003\u0000\u0006\u0006"+ + "\b\b\r\r\u00cf\u0000#\u0001\u0000\u0000\u0000\u0002)\u0001\u0000\u0000"+ + "\u0000\u00047\u0001\u0000\u0000\u0000\u0006C\u0001\u0000\u0000\u0000\b"+ + "E\u0001\u0000\u0000\u0000\nW\u0001\u0000\u0000\u0000\fe\u0001\u0000\u0000"+ + "\u0000\u000ex\u0001\u0000\u0000\u0000\u0010z\u0001\u0000\u0000\u0000\u0012"+ + "}\u0001\u0000\u0000\u0000\u0014\u007f\u0001\u0000\u0000\u0000\u0016\u008e"+ + "\u0001\u0000\u0000\u0000\u0018\u00ac\u0001\u0000\u0000\u0000\u001a\u00ae"+ + "\u0001\u0000\u0000\u0000\u001c\u00ba\u0001\u0000\u0000\u0000\u001e\u00bc"+ + "\u0001\u0000\u0000\u0000 \u00c0\u0001\u0000\u0000\u0000\"$\u0005\u0007"+ + "\u0000\u0000#\"\u0001\u0000\u0000\u0000#$\u0001\u0000\u0000\u0000$%\u0001"+ + "\u0000\u0000\u0000%&\u0003\u0002\u0001\u0000&\'\u0003\u0018\f\u0000\'"+ + "\u0001\u0001\u0000\u0000\u0000(*\u0003\u0004\u0002\u0000)(\u0001\u0000"+ + "\u0000\u0000)*\u0001\u0000\u0000\u0000*.\u0001\u0000\u0000\u0000+-\u0003"+ + "\u0006\u0003\u0000,+\u0001\u0000\u0000\u0000-0\u0001\u0000\u0000\u0000"+ + ".,\u0001\u0000\u0000\u0000./\u0001\u0000\u0000\u0000/4\u0001\u0000\u0000"+ + "\u00000.\u0001\u0000\u0000\u000013\u0003\u001a\r\u000021\u0001\u0000\u0000"+ + "\u000036\u0001\u0000\u0000\u000042\u0001\u0000\u0000\u000045\u0001\u0000"+ + "\u0000\u00005\u0003\u0001\u0000\u0000\u000064\u0001\u0000\u0000\u0000"+ + "7;\u0005\t\u0000\u00008:\u0003\u001e\u000f\u000098\u0001\u0000\u0000\u0000"+ + ":=\u0001\u0000\u0000\u0000;9\u0001\u0000\u0000\u0000;<\u0001\u0000\u0000"+ + "\u0000<>\u0001\u0000\u0000\u0000=;\u0001\u0000\u0000\u0000>?\u0005\u001c"+ + "\u0000\u0000?\u0005\u0001\u0000\u0000\u0000@D\u0005\u0001\u0000\u0000"+ + "AD\u0003\b\u0004\u0000BD\u0003\u0014\n\u0000C@\u0001\u0000\u0000\u0000"+ + "CA\u0001\u0000\u0000\u0000CB\u0001\u0000\u0000\u0000D\u0007\u0001\u0000"+ + "\u0000\u0000EF\u0005\f\u0000\u0000FG\u0005\u0011\u0000\u0000GH\u0005%"+ + "\u0000\u0000HL\u0003\u0012\t\u0000IK\u0005$\u0000\u0000JI\u0001\u0000"+ + "\u0000\u0000KN\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LM\u0001"+ + "\u0000\u0000\u0000MS\u0001\u0000\u0000\u0000NL\u0001\u0000\u0000\u0000"+ + "OP\u0005\u000f\u0000\u0000PQ\u0003\f\u0006\u0000QR\u0005\u0012\u0000\u0000"+ + "RT\u0001\u0000\u0000\u0000SO\u0001\u0000\u0000\u0000ST\u0001\u0000\u0000"+ + "\u0000TU\u0001\u0000\u0000\u0000UV\u0005\u000e\u0000\u0000V\t\u0001\u0000"+ + "\u0000\u0000WX\u0005\n\u0000\u0000X\\\u0005!\u0000\u0000Y[\u0003\u001e"+ + "\u000f\u0000ZY\u0001\u0000\u0000\u0000[^\u0001\u0000\u0000\u0000\\Z\u0001"+ + "\u0000\u0000\u0000\\]\u0001\u0000\u0000\u0000]_\u0001\u0000\u0000\u0000"+ + "^\\\u0001\u0000\u0000\u0000_`\u0005\u001b\u0000\u0000`\u000b\u0001\u0000"+ + "\u0000\u0000ad\u0003\u000e\u0007\u0000bd\u0003\u0010\b\u0000ca\u0001\u0000"+ + "\u0000\u0000cb\u0001\u0000\u0000\u0000dg\u0001\u0000\u0000\u0000ec\u0001"+ + "\u0000\u0000\u0000ef\u0001\u0000\u0000\u0000f\r\u0001\u0000\u0000\u0000"+ + "ge\u0001\u0000\u0000\u0000hj\u0005\u0013\u0000\u0000ik\u0005\u0017\u0000"+ + "\u0000ji\u0001\u0000\u0000\u0000jk\u0001\u0000\u0000\u0000ko\u0001\u0000"+ + "\u0000\u0000ln\u0005\u0018\u0000\u0000ml\u0001\u0000\u0000\u0000nq\u0001"+ + "\u0000\u0000\u0000om\u0001\u0000\u0000\u0000op\u0001\u0000\u0000\u0000"+ + "ps\u0001\u0000\u0000\u0000qo\u0001\u0000\u0000\u0000rt\u0005\u0017\u0000"+ + "\u0000sr\u0001\u0000\u0000\u0000st\u0001\u0000\u0000\u0000tu\u0001\u0000"+ + "\u0000\u0000uy\u0005\u0015\u0000\u0000vy\u0003\u0014\n\u0000wy\u0005\u0001"+ + "\u0000\u0000xh\u0001\u0000\u0000\u0000xv\u0001\u0000\u0000\u0000xw\u0001"+ + "\u0000\u0000\u0000y\u000f\u0001\u0000\u0000\u0000z{\u0005\u0003\u0000"+ + "\u0000{\u0011\u0001\u0000\u0000\u0000|~\u0005%\u0000\u0000}|\u0001\u0000"+ + "\u0000\u0000}~\u0001\u0000\u0000\u0000~\u0013\u0001\u0000\u0000\u0000"+ + "\u007f\u0081\u0005\u000b\u0000\u0000\u0080\u0082\u0005\u001a\u0000\u0000"+ + "\u0081\u0080\u0001\u0000\u0000\u0000\u0082\u0083\u0001\u0000\u0000\u0000"+ + "\u0083\u0081\u0001\u0000\u0000\u0000\u0083\u0084\u0001\u0000\u0000\u0000"+ + "\u0084\u0085\u0001\u0000\u0000\u0000\u0085\u0086\u0005\u001c\u0000\u0000"+ + "\u0086\u0015\u0001\u0000\u0000\u0000\u0087\u008f\u0003\n\u0005\u0000\u0088"+ + "\u008f\u0003\u0018\f\u0000\u0089\u008f\u0003\u001c\u000e\u0000\u008a\u008f"+ + "\u0003\u0014\n\u0000\u008b\u008f\u0005\u0002\u0000\u0000\u008c\u008f\u0005"+ + "\u0001\u0000\u0000\u008d\u008f\u0003 \u0010\u0000\u008e\u0087\u0001\u0000"+ + "\u0000\u0000\u008e\u0088\u0001\u0000\u0000\u0000\u008e\u0089\u0001\u0000"+ + "\u0000\u0000\u008e\u008a\u0001\u0000\u0000\u0000\u008e\u008b\u0001\u0000"+ + "\u0000\u0000\u008e\u008c\u0001\u0000\u0000\u0000\u008e\u008d\u0001\u0000"+ + "\u0000\u0000\u008f\u0017\u0001\u0000\u0000\u0000\u0090\u0091\u0005\n\u0000"+ + "\u0000\u0091\u0095\u0005%\u0000\u0000\u0092\u0094\u0003\u001e\u000f\u0000"+ + "\u0093\u0092\u0001\u0000\u0000\u0000\u0094\u0097\u0001\u0000\u0000\u0000"+ + "\u0095\u0093\u0001\u0000\u0000\u0000\u0095\u0096\u0001\u0000\u0000\u0000"+ + "\u0096\u0098\u0001\u0000\u0000\u0000\u0097\u0095\u0001\u0000\u0000\u0000"+ + "\u0098\u009c\u0005\u001b\u0000\u0000\u0099\u009b\u0003\u0016\u000b\u0000"+ + "\u009a\u0099\u0001\u0000\u0000\u0000\u009b\u009e\u0001\u0000\u0000\u0000"+ + "\u009c\u009a\u0001\u0000\u0000\u0000\u009c\u009d\u0001\u0000\u0000\u0000"+ + "\u009d\u009f\u0001\u0000\u0000\u0000\u009e\u009c\u0001\u0000\u0000\u0000"+ + "\u009f\u00a0\u0005\n\u0000\u0000\u00a0\u00a1\u0005\"\u0000\u0000\u00a1"+ + "\u00a2\u0005%\u0000\u0000\u00a2\u00ad\u0005\u001b\u0000\u0000\u00a3\u00a4"+ + "\u0005\n\u0000\u0000\u00a4\u00a8\u0005%\u0000\u0000\u00a5\u00a7\u0003"+ + "\u001e\u000f\u0000\u00a6\u00a5\u0001\u0000\u0000\u0000\u00a7\u00aa\u0001"+ + "\u0000\u0000\u0000\u00a8\u00a6\u0001\u0000\u0000\u0000\u00a8\u00a9\u0001"+ + "\u0000\u0000\u0000\u00a9\u00ab\u0001\u0000\u0000\u0000\u00aa\u00a8\u0001"+ + "\u0000\u0000\u0000\u00ab\u00ad\u0005\u001d\u0000\u0000\u00ac\u0090\u0001"+ + "\u0000\u0000\u0000\u00ac\u00a3\u0001\u0000\u0000\u0000\u00ad\u0019\u0001"+ + "\u0000\u0000\u0000\u00ae\u00af\u0005\n\u0000\u0000\u00af\u00b0\u0005\u001f"+ + "\u0000\u0000\u00b0\u00b4\u0005%\u0000\u0000\u00b1\u00b3\u0003\u001e\u000f"+ + "\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b3\u00b6\u0001\u0000\u0000"+ + "\u0000\u00b4\u00b2\u0001\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000"+ + "\u0000\u00b5\u00b7\u0001\u0000\u0000\u0000\u00b6\u00b4\u0001\u0000\u0000"+ + "\u0000\u00b7\u00b8\u0005 \u0000\u0000\u00b8\u00b9\u0005\u001b\u0000\u0000"+ + "\u00b9\u001b\u0001\u0000\u0000\u0000\u00ba\u00bb\u0007\u0000\u0000\u0000"+ + "\u00bb\u001d\u0001\u0000\u0000\u0000\u00bc\u00bd\u0005%\u0000\u0000\u00bd"+ + "\u00be\u0005#\u0000\u0000\u00be\u00bf\u0005$\u0000\u0000\u00bf\u001f\u0001"+ + "\u0000\u0000\u0000\u00c0\u00c1\u0007\u0001\u0000\u0000\u00c1!\u0001\u0000"+ + "\u0000\u0000\u0017#).4;CLS\\cejosx}\u0083\u008e\u0095\u009c\u00a8\u00ac"+ + "\u00b4"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens index c0c0364234c..68761a1fcb8 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens @@ -30,14 +30,15 @@ SLASH_CLOSE=29 S=30 DIRECTIVE_OPEN=31 DIRECTIVE_CLOSE=32 -SLASH=33 -EQUALS=34 -STRING=35 -Name=36 +META=33 +SLASH=34 +EQUALS=35 +STRING=36 +Name=37 '?'=8 '<'=10 '/>'=29 '%@'=31 '%'=32 -'/'=33 -'='=34 +'/'=34 +'='=35 diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java index a3f3352c6e3..d7725da1a58 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java @@ -87,6 +87,18 @@ public class XMLParserBaseListener implements XMLParserListener { *

The default implementation does nothing.

*/ @Override public void exitDoctypedecl(XMLParser.DoctypedeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMetadata(XMLParser.MetadataContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMetadata(XMLParser.MetadataContext ctx) { } /** * {@inheritDoc} * diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java index 7e6cccb3cab..e2a91f018cb 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java @@ -62,6 +62,13 @@ public class XMLParserBaseVisitor extends AbstractParseTreeVisitor impleme * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitDoctypedecl(XMLParser.DoctypedeclContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMetadata(XMLParser.MetadataContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java index 1fd09914894..db5feea0a11 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java @@ -72,6 +72,16 @@ public interface XMLParserListener extends ParseTreeListener { * @param ctx the parse tree */ void exitDoctypedecl(XMLParser.DoctypedeclContext ctx); + /** + * Enter a parse tree produced by {@link XMLParser#metadata}. + * @param ctx the parse tree + */ + void enterMetadata(XMLParser.MetadataContext ctx); + /** + * Exit a parse tree produced by {@link XMLParser#metadata}. + * @param ctx the parse tree + */ + void exitMetadata(XMLParser.MetadataContext ctx); /** * Enter a parse tree produced by {@link XMLParser#intsubset}. * @param ctx the parse tree diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java index 921f15980e9..119ca53bbcd 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java @@ -55,6 +55,12 @@ public interface XMLParserVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitDoctypedecl(XMLParser.DoctypedeclContext ctx); + /** + * Visit a parse tree produced by {@link XMLParser#metadata}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMetadata(XMLParser.MetadataContext ctx); /** * Visit a parse tree produced by {@link XMLParser#intsubset}. * @param ctx the parse tree diff --git a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java index 1c7449d6639..aedb79af32d 100755 --- a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java +++ b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java @@ -93,6 +93,25 @@ void lowerCaseDocType() { ); } + @Test + void htmlScriptsWithMetadatatField() { + rewriteRun( + xml( + //language=html + """ + + + + + + Hello World! + + + """ + ) + ); + } + @Issue("https://github.com/openrewrite/rewrite/issues/2189") @Test void specialCharacters() {