From dc5c02fd08537ead6113bed0fa316093308371be Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Wed, 9 Oct 2024 00:06:36 +0200 Subject: [PATCH] - Support `<* *>` doc comments. - Fix syntax for `-` in asm blocks. - Fix syntax for bytes blocks. --- CHANGELOG.md | 6 + gradle.properties | 4 +- .../org/c3lang/intellij/lexer/C3Lexer.java | 1957 +++++++++-------- .../org/c3lang/intellij/parser/C3Parser.java | 49 +- src/main/java/org/c3lang/intellij/C3.bnf | 4 +- src/main/java/org/c3lang/intellij/C3.flex | 14 +- 6 files changed, 1054 insertions(+), 980 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e6f184..eeae47f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ ## [Unreleased] +## [0.0.17] - 2024-10-09 + +- Support `<* *>` doc comments. +- Fix syntax for `-` in asm blocks. +- Fix syntax for bytes blocks. + ## [0.0.16] - 2024-09-05 - Added `+++`, `&&&`, `|||` support. diff --git a/gradle.properties b/gradle.properties index ccb95ce..ea2582c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,11 +4,11 @@ pluginGroup = com.github.c3lang.c3intellij pluginName = c3intellij pluginRepositoryUrl = https://github.com/c3lang/c3intellij # SemVer format -> https://semver.org -pluginVersion = 0.0.16 +pluginVersion = 0.0.17 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 222 -pluginUntilBuild = 242.* +pluginUntilBuild = 243.* # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension platformType = IU diff --git a/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java b/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java index 2c7e7ce..cf72ba3 100644 --- a/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java +++ b/src/main/gen/org/c3lang/intellij/lexer/C3Lexer.java @@ -22,11 +22,12 @@ class C3Lexer implements FlexLexer { public static final int YYINITIAL = 0; public static final int IN_COMMENT = 2; public static final int IN_RAW_STRING = 4; - public static final int IN_STRING = 6; - public static final int IN_CHAR = 8; - public static final int IN_BYTES_STRING = 10; - public static final int IN_BYTES_CHAR = 12; - public static final int IN_BYTES_RAW_STRING = 14; + public static final int IN_DOC_COMMENT = 6; + public static final int IN_STRING = 8; + public static final int IN_CHAR = 10; + public static final int IN_BYTES_STRING = 12; + public static final int IN_BYTES_CHAR = 14; + public static final int IN_BYTES_RAW_STRING = 16; /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l @@ -35,7 +36,8 @@ class C3Lexer implements FlexLexer { * l is of the form l = 2*k, k a non negative integer */ private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8 }; /** @@ -111,46 +113,47 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\10\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+ + "\11\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+ "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+ "\1\17\2\20\1\21\1\22\1\23\1\24\1\25\1\26"+ "\1\1\1\27\1\30\1\31\1\32\1\1\1\33\22\34"+ - "\1\35\1\36\1\37\1\40\4\41\1\42\1\43\1\44"+ - "\1\42\1\43\1\1\1\42\1\45\1\42\1\46\1\42"+ - "\2\46\1\47\1\50\1\1\1\0\1\51\1\0\1\52"+ - "\1\0\14\53\1\54\1\55\1\56\1\57\1\60\1\61"+ - "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\4\0"+ - "\1\20\1\0\1\20\2\0\1\71\1\72\1\73\1\74"+ - "\1\75\1\76\1\77\1\100\1\101\1\102\1\103\1\1"+ - "\1\0\1\104\1\105\1\106\1\107\1\0\14\34\1\110"+ - "\5\34\1\111\2\34\1\112\30\34\1\113\1\114\1\115"+ - "\1\116\1\117\1\120\1\121\1\122\1\123\3\0\1\124"+ - "\1\125\1\126\14\53\1\127\11\53\1\130\1\131\1\132"+ - "\1\133\1\20\1\0\1\133\3\0\2\20\1\134\1\135"+ - "\1\136\1\137\1\140\11\34\1\141\10\34\1\142\3\34"+ - "\1\143\1\34\1\144\14\34\1\145\6\34\1\146\1\147"+ - "\2\34\1\150\13\53\1\151\16\53\1\133\6\0\4\34"+ - "\1\152\1\34\1\153\1\34\1\154\6\34\1\155\1\156"+ - "\12\34\1\157\1\160\3\34\1\161\6\34\1\162\1\34"+ - "\1\163\2\34\1\164\1\34\1\165\1\34\2\53\1\166"+ - "\2\53\1\167\1\170\4\53\1\171\21\53\3\0\1\133"+ - "\1\0\4\34\1\172\1\173\1\174\2\34\1\175\3\34"+ - "\1\176\1\177\1\200\1\34\1\201\4\34\1\202\3\34"+ - "\1\203\6\34\1\204\1\205\1\34\1\206\5\53\1\207"+ - "\1\53\1\210\15\53\1\211\3\53\1\212\2\53\2\0"+ - "\1\34\1\213\5\34\1\214\1\215\2\34\1\216\1\217"+ - "\1\220\1\34\1\221\1\34\1\222\1\223\1\224\1\225"+ - "\1\226\1\227\1\34\1\230\1\53\1\231\2\53\1\232"+ - "\7\53\1\233\1\53\1\234\1\53\1\235\1\53\1\236"+ - "\2\53\1\237\1\53\1\240\4\34\1\241\2\34\1\242"+ - "\1\243\2\34\1\244\1\245\1\246\1\247\4\53\1\250"+ - "\1\251\1\252\1\53\1\253\2\53\1\254\1\255\1\256"+ - "\1\257\1\260\1\34\1\261\1\262\1\263\2\34\1\264"+ - "\2\53\1\265\1\53\1\266\1\53\1\267\1\270\1\271"+ - "\1\272\1\53\1\273\1\274\1\275\1\276"; + "\1\35\1\36\1\37\1\40\4\41\1\42\1\43\3\44"+ + "\1\45\1\42\1\43\1\1\1\42\1\46\1\42\1\47"+ + "\1\42\2\47\1\50\1\51\1\1\1\0\1\52\1\0"+ + "\1\53\1\0\14\54\1\55\1\56\1\57\1\60\1\61"+ + "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\1\71"+ + "\4\0\1\20\1\0\1\20\2\0\1\72\1\73\1\74"+ + "\1\75\1\76\1\77\1\100\1\101\1\102\1\103\1\104"+ + "\1\105\1\1\1\0\1\106\1\107\1\110\1\111\1\0"+ + "\14\34\1\112\5\34\1\113\2\34\1\114\30\34\1\115"+ + "\1\116\1\117\1\120\1\121\1\122\1\123\1\124\1\125"+ + "\1\126\3\0\1\127\1\130\1\131\14\54\1\132\11\54"+ + "\1\133\1\134\1\135\1\136\1\20\1\0\1\136\3\0"+ + "\2\20\1\137\1\140\1\141\1\142\1\143\11\34\1\144"+ + "\10\34\1\145\3\34\1\146\1\34\1\147\14\34\1\150"+ + "\6\34\1\151\1\152\2\34\1\153\13\54\1\154\16\54"+ + "\1\136\6\0\4\34\1\155\1\34\1\156\1\34\1\157"+ + "\6\34\1\160\1\161\12\34\1\162\1\163\3\34\1\164"+ + "\6\34\1\165\1\34\1\166\2\34\1\167\1\34\1\170"+ + "\1\34\2\54\1\171\2\54\1\172\1\173\4\54\1\174"+ + "\21\54\3\0\1\136\1\0\4\34\1\175\1\176\1\177"+ + "\2\34\1\200\3\34\1\201\1\202\1\203\1\34\1\204"+ + "\4\34\1\205\3\34\1\206\6\34\1\207\1\210\1\34"+ + "\1\211\5\54\1\212\1\54\1\213\15\54\1\214\3\54"+ + "\1\215\2\54\2\0\1\34\1\216\5\34\1\217\1\220"+ + "\2\34\1\221\1\222\1\223\1\34\1\224\1\34\1\225"+ + "\1\226\1\227\1\230\1\231\1\232\1\34\1\233\1\54"+ + "\1\234\2\54\1\235\7\54\1\236\1\54\1\237\1\54"+ + "\1\240\1\54\1\241\2\54\1\242\1\54\1\243\4\34"+ + "\1\244\2\34\1\245\1\246\2\34\1\247\1\250\1\251"+ + "\1\252\4\54\1\253\1\254\1\255\1\54\1\256\2\54"+ + "\1\257\1\260\1\261\1\262\1\263\1\34\1\264\1\265"+ + "\1\266\2\34\1\267\2\54\1\270\1\54\1\271\1\54"+ + "\1\272\1\273\1\274\1\275\1\54\1\276\1\277\1\300"+ + "\1\301"; private static int [] zzUnpackAction() { - int [] result = new int[572]; + int [] result = new int[578]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -176,80 +179,81 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\126\0\254\0\u0102\0\u0158\0\u01ae\0\u0204\0\u025a"+ - "\0\u02b0\0\u0306\0\u035c\0\u02b0\0\u03b2\0\u0408\0\u045e\0\u04b4"+ - "\0\u02b0\0\u050a\0\u02b0\0\u0560\0\u05b6\0\u02b0\0\u060c\0\u0662"+ - "\0\u06b8\0\u070e\0\u0764\0\u07ba\0\u02b0\0\u0810\0\u0866\0\u08bc"+ - "\0\u0912\0\u0968\0\u09be\0\u0a14\0\u02b0\0\u0a6a\0\u0ac0\0\u02b0"+ - "\0\u0b16\0\u0b6c\0\u0bc2\0\u0c18\0\u0c6e\0\u0cc4\0\u0d1a\0\u0d70"+ + "\0\u02b0\0\u0306\0\u035c\0\u03b2\0\u0306\0\u0408\0\u045e\0\u04b4"+ + "\0\u050a\0\u0306\0\u0560\0\u0306\0\u05b6\0\u060c\0\u0306\0\u0662"+ + "\0\u06b8\0\u070e\0\u0764\0\u07ba\0\u0810\0\u0306\0\u0866\0\u08bc"+ + "\0\u0912\0\u0968\0\u09be\0\u0a14\0\u0a6a\0\u0306\0\u0ac0\0\u0b16"+ + "\0\u0306\0\u0b6c\0\u0bc2\0\u0c18\0\u0c6e\0\u0cc4\0\u0d1a\0\u0d70"+ "\0\u0dc6\0\u0e1c\0\u0e72\0\u0ec8\0\u0f1e\0\u0f74\0\u0fca\0\u1020"+ - "\0\u1076\0\u10cc\0\u1122\0\u1178\0\u02b0\0\u02b0\0\u11ce\0\u02b0"+ - "\0\u1224\0\u127a\0\u02b0\0\u12d0\0\u02b0\0\u1326\0\u02b0\0\u137c"+ - "\0\u13d2\0\u02b0\0\u1428\0\u147e\0\u14d4\0\u152a\0\u1580\0\u02b0"+ - "\0\u02b0\0\u15d6\0\u03b2\0\u162c\0\u1682\0\u16d8\0\u172e\0\u1784"+ - "\0\u17da\0\u1830\0\u1886\0\u18dc\0\u1932\0\u1988\0\u19de\0\u1a34"+ - "\0\u1a8a\0\u1ae0\0\u1b36\0\u02b0\0\u1b8c\0\u02b0\0\u02b0\0\u02b0"+ - "\0\u1be2\0\u02b0\0\u02b0\0\u02b0\0\u1c38\0\u02b0\0\u1c8e\0\u02b0"+ - "\0\u1ce4\0\u1d3a\0\u1d90\0\u1de6\0\u02b0\0\u1e3c\0\u1e92\0\u1ee8"+ - "\0\u1f3e\0\u02b0\0\u1f94\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0"+ - "\0\u1fea\0\u02b0\0\u02b0\0\u02b0\0\u2040\0\u0968\0\u2096\0\u20ec"+ - "\0\u02b0\0\u02b0\0\u0ac0\0\u2142\0\u2198\0\u21ee\0\u2244\0\u229a"+ - "\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448\0\u249e\0\u24f4\0\u254a"+ - "\0\u25a0\0\u25f6\0\u264c\0\u26a2\0\u26f8\0\u0d1a\0\u274e\0\u27a4"+ - "\0\u0d1a\0\u27fa\0\u2850\0\u28a6\0\u28fc\0\u2952\0\u29a8\0\u29fe"+ - "\0\u2a54\0\u2aaa\0\u2b00\0\u2b56\0\u2bac\0\u2c02\0\u2c58\0\u2cae"+ - "\0\u2d04\0\u2d5a\0\u2db0\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08\0\u2f5e"+ - "\0\u2fb4\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u02b0\0\u300a\0\u02b0"+ - "\0\u02b0\0\u02b0\0\u147e\0\u152a\0\u1580\0\u3060\0\u30b6\0\u310c"+ - "\0\u3162\0\u31b8\0\u320e\0\u3264\0\u32ba\0\u3310\0\u3366\0\u33bc"+ - "\0\u3412\0\u3468\0\u34be\0\u3514\0\u17da\0\u356a\0\u35c0\0\u3616"+ - "\0\u366c\0\u36c2\0\u3718\0\u376e\0\u37c4\0\u381a\0\u02b0\0\u02b0"+ - "\0\u02b0\0\u3870\0\u38c6\0\u391c\0\u3972\0\u39c8\0\u3a1e\0\u3a74"+ - "\0\u3aca\0\u3b20\0\u02b0\0\u02b0\0\u3b76\0\u3bcc\0\u0d1a\0\u3c22"+ - "\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26\0\u3e7c\0\u3ed2"+ - "\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080\0\u40d6\0\u412c\0\u4182"+ - "\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330\0\u4386\0\u43dc\0\u0d1a"+ - "\0\u4432\0\u4488\0\u44de\0\u4534\0\u458a\0\u45e0\0\u4636\0\u468c"+ - "\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u0d1a\0\u483a\0\u4890\0\u48e6"+ - "\0\u493c\0\u4992\0\u49e8\0\u0d1a\0\u0d1a\0\u4a3e\0\u4a94\0\u02b0"+ - "\0\u4aea\0\u4b40\0\u4b96\0\u4bec\0\u4c42\0\u4c98\0\u4cee\0\u4d44"+ - "\0\u4d9a\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48\0\u4f9e\0\u4ff4"+ - "\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e\0\u52a4"+ - "\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8\0\u54fe\0\u5554"+ - "\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u0d1a\0\u5758\0\u0d1a"+ - "\0\u57ae\0\u0d1a\0\u5804\0\u585a\0\u58b0\0\u5906\0\u595c\0\u59b2"+ - "\0\u0d1a\0\u0d1a\0\u5a08\0\u5a5e\0\u5ab4\0\u5b0a\0\u5b60\0\u5bb6"+ - "\0\u5c0c\0\u5c62\0\u5cb8\0\u5d0e\0\u0d1a\0\u0d1a\0\u5d64\0\u5dba"+ - "\0\u5e10\0\u0d1a\0\u5e66\0\u5ebc\0\u5f12\0\u5f68\0\u5fbe\0\u6014"+ - "\0\u0d1a\0\u606a\0\u60c0\0\u6116\0\u616c\0\u0d1a\0\u61c2\0\u0d1a"+ - "\0\u6218\0\u626e\0\u62c4\0\u17da\0\u631a\0\u6370\0\u17da\0\u17da"+ - "\0\u63c6\0\u641c\0\u6472\0\u64c8\0\u651e\0\u6574\0\u65ca\0\u6620"+ - "\0\u6676\0\u66cc\0\u6722\0\u6778\0\u67ce\0\u6824\0\u687a\0\u68d0"+ - "\0\u6926\0\u697c\0\u69d2\0\u6a28\0\u6a7e\0\u6ad4\0\u6b2a\0\u6b80"+ - "\0\u6bd6\0\u02b0\0\u6c2c\0\u6c82\0\u6cd8\0\u6d2e\0\u6d84\0\u0d1a"+ - "\0\u0d1a\0\u0d1a\0\u6dda\0\u6e30\0\u0d1a\0\u6e86\0\u6edc\0\u6f32"+ - "\0\u0d1a\0\u0d1a\0\u6f88\0\u6fde\0\u0d1a\0\u7034\0\u708a\0\u70e0"+ - "\0\u7136\0\u0d1a\0\u718c\0\u71e2\0\u7238\0\u0d1a\0\u728e\0\u72e4"+ - "\0\u733a\0\u7390\0\u73e6\0\u743c\0\u0d1a\0\u0d1a\0\u7492\0\u0d1a"+ - "\0\u74e8\0\u753e\0\u7594\0\u75ea\0\u7640\0\u17da\0\u7696\0\u17da"+ - "\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a\0\u78f0\0\u7946"+ - "\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u17da\0\u7b4a\0\u7ba0"+ - "\0\u7bf6\0\u17da\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u7da4\0\u0d1a"+ - "\0\u7dfa\0\u7e50\0\u7ea6\0\u7efc\0\u7f52\0\u0d1a\0\u0d1a\0\u7fa8"+ - "\0\u7ffe\0\u0d1a\0\u0d1a\0\u0d1a\0\u8054\0\u0d1a\0\u80aa\0\u0d1a"+ - "\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u0d1a\0\u8100\0\u0d1a\0\u8156"+ - "\0\u17da\0\u81ac\0\u8202\0\u8258\0\u82ae\0\u8304\0\u835a\0\u83b0"+ - "\0\u8406\0\u845c\0\u84b2\0\u17da\0\u8508\0\u17da\0\u855e\0\u17da"+ - "\0\u85b4\0\u17da\0\u860a\0\u8660\0\u17da\0\u86b6\0\u17da\0\u870c"+ - "\0\u8762\0\u87b8\0\u880e\0\u0d1a\0\u8864\0\u88ba\0\u0d1a\0\u8910"+ - "\0\u8966\0\u89bc\0\u0d1a\0\u17da\0\u17da\0\u17da\0\u8a12\0\u8a68"+ - "\0\u8abe\0\u8b14\0\u17da\0\u17da\0\u17da\0\u8b6a\0\u17da\0\u8bc0"+ - "\0\u8c16\0\u17da\0\u17da\0\u17da\0\u0d1a\0\u0d1a\0\u8c6c\0\u0d1a"+ - "\0\u0d1a\0\u0d1a\0\u8cc2\0\u8d18\0\u0d1a\0\u8d6e\0\u8dc4\0\u17da"+ - "\0\u8e1a\0\u17da\0\u8e70\0\u17da\0\u0d1a\0\u0d1a\0\u0d1a\0\u8ec6"+ - "\0\u17da\0\u17da\0\u17da\0\u17da"; + "\0\u1076\0\u10cc\0\u1122\0\u1178\0\u11ce\0\u0306\0\u0306\0\u1224"+ + "\0\u0306\0\u127a\0\u12d0\0\u0306\0\u1326\0\u137c\0\u0306\0\u13d2"+ + "\0\u0306\0\u1428\0\u0306\0\u147e\0\u14d4\0\u0306\0\u152a\0\u1580"+ + "\0\u15d6\0\u162c\0\u1682\0\u0306\0\u0306\0\u16d8\0\u0408\0\u172e"+ + "\0\u1784\0\u17da\0\u1830\0\u1886\0\u18dc\0\u1932\0\u1988\0\u19de"+ + "\0\u1a34\0\u1a8a\0\u1ae0\0\u1b36\0\u1b8c\0\u1be2\0\u1c38\0\u0306"+ + "\0\u1c8e\0\u0306\0\u0306\0\u0306\0\u1ce4\0\u0306\0\u0306\0\u0306"+ + "\0\u1d3a\0\u0306\0\u1d90\0\u0306\0\u1de6\0\u1e3c\0\u1e92\0\u1ee8"+ + "\0\u0306\0\u1f3e\0\u1f94\0\u1fea\0\u2040\0\u0306\0\u0306\0\u2096"+ + "\0\u0306\0\u0306\0\u0306\0\u0306\0\u0306\0\u20ec\0\u0306\0\u0306"+ + "\0\u0306\0\u2142\0\u09be\0\u2198\0\u21ee\0\u0306\0\u0306\0\u0b16"+ + "\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448\0\u249e"+ + "\0\u24f4\0\u254a\0\u25a0\0\u25f6\0\u264c\0\u26a2\0\u26f8\0\u274e"+ + "\0\u27a4\0\u27fa\0\u0d70\0\u2850\0\u28a6\0\u0d70\0\u28fc\0\u2952"+ + "\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00\0\u2b56\0\u2bac\0\u2c02"+ + "\0\u2c58\0\u2cae\0\u2d04\0\u2d5a\0\u2db0\0\u2e06\0\u2e5c\0\u2eb2"+ + "\0\u2f08\0\u2f5e\0\u2fb4\0\u300a\0\u3060\0\u30b6\0\u0306\0\u0306"+ + "\0\u0306\0\u0306\0\u0306\0\u310c\0\u0306\0\u0306\0\u0306\0\u0306"+ + "\0\u1580\0\u162c\0\u1682\0\u3162\0\u31b8\0\u320e\0\u3264\0\u32ba"+ + "\0\u3310\0\u3366\0\u33bc\0\u3412\0\u3468\0\u34be\0\u3514\0\u356a"+ + "\0\u35c0\0\u3616\0\u18dc\0\u366c\0\u36c2\0\u3718\0\u376e\0\u37c4"+ + "\0\u381a\0\u3870\0\u38c6\0\u391c\0\u0306\0\u0306\0\u0306\0\u3972"+ + "\0\u39c8\0\u3a1e\0\u3a74\0\u3aca\0\u3b20\0\u3b76\0\u3bcc\0\u3c22"+ + "\0\u0306\0\u0306\0\u3c78\0\u3cce\0\u0d70\0\u3d24\0\u3d7a\0\u3dd0"+ + "\0\u3e26\0\u3e7c\0\u3ed2\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080"+ + "\0\u40d6\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330"+ + "\0\u4386\0\u43dc\0\u4432\0\u4488\0\u44de\0\u0d70\0\u4534\0\u458a"+ + "\0\u45e0\0\u4636\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u483a"+ + "\0\u4890\0\u48e6\0\u0d70\0\u493c\0\u4992\0\u49e8\0\u4a3e\0\u4a94"+ + "\0\u4aea\0\u0d70\0\u0d70\0\u4b40\0\u4b96\0\u0306\0\u4bec\0\u4c42"+ + "\0\u4c98\0\u4cee\0\u4d44\0\u4d9a\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2"+ + "\0\u4f48\0\u4f9e\0\u4ff4\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2"+ + "\0\u51f8\0\u524e\0\u52a4\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452"+ + "\0\u54a8\0\u54fe\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702"+ + "\0\u5758\0\u57ae\0\u5804\0\u0d70\0\u585a\0\u0d70\0\u58b0\0\u0d70"+ + "\0\u5906\0\u595c\0\u59b2\0\u5a08\0\u5a5e\0\u5ab4\0\u0d70\0\u0d70"+ + "\0\u5b0a\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8\0\u5d0e\0\u5d64"+ + "\0\u5dba\0\u5e10\0\u0d70\0\u0d70\0\u5e66\0\u5ebc\0\u5f12\0\u0d70"+ + "\0\u5f68\0\u5fbe\0\u6014\0\u606a\0\u60c0\0\u6116\0\u0d70\0\u616c"+ + "\0\u61c2\0\u6218\0\u626e\0\u0d70\0\u62c4\0\u0d70\0\u631a\0\u6370"+ + "\0\u63c6\0\u18dc\0\u641c\0\u6472\0\u18dc\0\u18dc\0\u64c8\0\u651e"+ + "\0\u6574\0\u65ca\0\u6620\0\u6676\0\u66cc\0\u6722\0\u6778\0\u67ce"+ + "\0\u6824\0\u687a\0\u68d0\0\u6926\0\u697c\0\u69d2\0\u6a28\0\u6a7e"+ + "\0\u6ad4\0\u6b2a\0\u6b80\0\u6bd6\0\u6c2c\0\u6c82\0\u6cd8\0\u0306"+ + "\0\u6d2e\0\u6d84\0\u6dda\0\u6e30\0\u6e86\0\u0d70\0\u0d70\0\u0d70"+ + "\0\u6edc\0\u6f32\0\u0d70\0\u6f88\0\u6fde\0\u7034\0\u0d70\0\u0d70"+ + "\0\u708a\0\u70e0\0\u0d70\0\u7136\0\u718c\0\u71e2\0\u7238\0\u0d70"+ + "\0\u728e\0\u72e4\0\u733a\0\u0d70\0\u7390\0\u73e6\0\u743c\0\u7492"+ + "\0\u74e8\0\u753e\0\u0d70\0\u0d70\0\u7594\0\u0d70\0\u75ea\0\u7640"+ + "\0\u7696\0\u76ec\0\u7742\0\u18dc\0\u7798\0\u18dc\0\u77ee\0\u7844"+ + "\0\u789a\0\u78f0\0\u7946\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4"+ + "\0\u7b4a\0\u7ba0\0\u7bf6\0\u18dc\0\u7c4c\0\u7ca2\0\u7cf8\0\u18dc"+ + "\0\u7d4e\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6\0\u0d70\0\u7efc\0\u7f52"+ + "\0\u7fa8\0\u7ffe\0\u8054\0\u0d70\0\u0d70\0\u80aa\0\u8100\0\u0d70"+ + "\0\u0d70\0\u0d70\0\u8156\0\u0d70\0\u81ac\0\u0d70\0\u0d70\0\u0d70"+ + "\0\u0d70\0\u0d70\0\u0d70\0\u8202\0\u0d70\0\u8258\0\u18dc\0\u82ae"+ + "\0\u8304\0\u835a\0\u83b0\0\u8406\0\u845c\0\u84b2\0\u8508\0\u855e"+ + "\0\u85b4\0\u18dc\0\u860a\0\u18dc\0\u8660\0\u18dc\0\u86b6\0\u18dc"+ + "\0\u870c\0\u8762\0\u18dc\0\u87b8\0\u18dc\0\u880e\0\u8864\0\u88ba"+ + "\0\u8910\0\u0d70\0\u8966\0\u89bc\0\u0d70\0\u8a12\0\u8a68\0\u8abe"+ + "\0\u0d70\0\u18dc\0\u18dc\0\u18dc\0\u8b14\0\u8b6a\0\u8bc0\0\u8c16"+ + "\0\u18dc\0\u18dc\0\u18dc\0\u8c6c\0\u18dc\0\u8cc2\0\u8d18\0\u18dc"+ + "\0\u18dc\0\u18dc\0\u0d70\0\u0d70\0\u8d6e\0\u0d70\0\u0d70\0\u0d70"+ + "\0\u8dc4\0\u8e1a\0\u0d70\0\u8e70\0\u8ec6\0\u18dc\0\u8f1c\0\u18dc"+ + "\0\u8f72\0\u18dc\0\u0d70\0\u0d70\0\u0d70\0\u8fc8\0\u18dc\0\u18dc"+ + "\0\u18dc\0\u18dc"; private static int [] zzUnpackRowMap() { - int [] result = new int[572]; + int [] result = new int[578]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -272,509 +276,511 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { private static final int [] ZZ_TRANS = zzUnpacktrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\11\3\12\1\11\1\12\1\13\1\14\1\15\1\16"+ - "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ - "\1\27\1\30\1\31\1\32\10\33\1\34\1\35\1\36"+ - "\1\37\1\40\1\41\1\42\13\43\1\44\1\11\1\45"+ - "\1\46\1\47\1\50\1\51\1\52\1\53\1\54\1\55"+ - "\1\56\2\57\1\60\2\57\1\61\1\62\1\63\3\57"+ - "\1\64\1\65\1\66\1\67\1\70\1\71\1\72\2\57"+ - "\1\73\1\74\1\75\1\76\2\11\2\77\1\100\14\77"+ - "\1\101\4\77\1\102\101\77\3\103\1\11\61\103\1\104"+ - "\37\103\3\11\1\105\1\11\1\105\2\106\1\107\51\106"+ - "\1\110\44\106\2\11\1\105\1\11\1\105\7\111\1\112"+ - "\44\111\1\110\44\111\2\11\1\105\1\11\1\105\2\113"+ - "\1\114\116\113\2\11\1\105\1\11\1\105\7\115\1\116"+ - "\111\115\3\103\1\11\61\103\1\117\37\103\1\11\127\0"+ - "\3\12\1\0\1\12\126\0\1\120\32\0\1\121\131\0"+ - "\13\122\4\0\1\123\1\0\32\124\17\0\1\125\33\0"+ - "\13\126\4\0\1\127\1\0\1\130\1\131\1\132\1\133"+ - "\1\134\1\135\2\131\1\136\4\131\1\137\2\131\1\140"+ - "\1\131\1\141\1\142\1\131\1\143\4\131\47\0\1\144"+ - "\77\0\1\145\25\0\1\146\124\0\1\147\126\0\1\150"+ - "\104\0\1\151\20\0\1\152\106\0\1\153\16\0\1\154"+ - "\1\11\106\0\1\155\121\0\1\156\4\0\1\157\14\0"+ - "\1\160\107\0\1\161\1\0\11\33\10\0\1\162\1\163"+ - "\2\0\1\164\1\165\1\166\1\0\1\167\1\170\4\0"+ - "\1\171\2\0\1\162\2\0\1\163\3\0\1\164\2\0"+ - "\1\165\2\0\1\166\5\0\1\167\2\0\1\170\33\0"+ - "\1\161\1\0\11\33\11\0\1\163\2\0\1\164\1\165"+ - "\2\0\1\167\5\0\1\171\5\0\1\163\3\0\1\164"+ - "\2\0\1\165\10\0\1\167\51\0\1\172\127\0\1\173"+ - "\1\174\125\0\1\175\1\176\101\0\1\177\22\0\1\200"+ - "\1\201\17\0\1\202\101\0\1\203\4\0\1\204\127\0"+ - "\13\205\4\0\1\206\1\0\32\207\33\0\11\43\7\0"+ - "\13\43\4\0\1\43\1\0\32\210\46\0\1\211\126\0"+ - "\1\212\131\0\13\43\4\0\1\213\1\0\32\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\214"+ - "\4\57\1\215\7\57\33\0\6\57\1\216\2\57\7\0"+ - "\13\57\4\0\1\57\1\0\5\57\1\217\2\57\1\220"+ - "\5\57\1\221\2\57\1\222\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\1\223\6\57\1\224\6\57"+ - "\1\225\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\226\3\57\1\227\5\57\1\230\13\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\231\1\57\1\232\11\57\1\233\2\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\234\12\57\1\235"+ - "\1\57\1\236\1\237\13\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\32\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\2\57\1\240\2\57\1\241\6\57"+ - "\1\242\1\243\1\57\1\244\2\57\1\245\7\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\16\57\1\246"+ - "\13\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\247\15\57\1\250\13\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\4\57\1\251\17\57\1\252\5\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\4\57"+ - "\1\253\25\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\7\57\1\254\13\57\1\255\2\57\1\256\3\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\257\5\57\1\260\6\57\1\261\1\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\10\57\1\262\2\57"+ - "\1\263\1\57\1\264\1\57\1\265\2\57\1\266\7\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\1\267"+ - "\15\57\1\270\13\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\7\57\1\271\22\57\15\0\1\272\4\0"+ - "\1\273\10\0\11\57\7\0\13\57\4\0\1\57\1\274"+ - "\32\57\127\0\1\275\45\0\1\276\57\0\1\277\1\300"+ - "\3\0\2\77\1\0\14\77\1\0\4\77\1\0\101\77"+ - "\24\0\1\301\120\0\1\302\173\0\1\103\45\0\2\106"+ - "\1\0\51\106\1\0\44\106\5\0\121\103\5\0\7\111"+ - "\1\0\44\111\1\0\44\111\5\0\2\113\1\0\116\113"+ - "\1\0\5\303\1\0\1\103\123\0\7\115\1\0\111\115"+ - "\1\0\5\304\6\0\1\103\112\0\5\305\57\0\1\103"+ - "\65\0\11\122\7\0\13\122\4\0\1\122\1\0\32\122"+ - "\33\0\11\124\7\0\13\124\4\0\1\124\1\0\32\124"+ - "\53\0\13\306\4\0\1\125\1\0\32\307\33\0\11\126"+ - "\7\0\13\126\4\0\1\126\1\0\32\310\53\0\13\126"+ - "\4\0\1\127\1\0\32\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\13\131\1\311\6\131\1\312\7\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\32\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\1\313"+ - "\31\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\4\131\1\314\25\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\2\131\1\315\10\131\1\316\1\131\1\317"+ - "\3\131\1\320\3\131\1\321\1\131\1\322\2\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\323"+ - "\11\131\1\324\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\5\131\1\325\7\131\1\326\4\131\1\327"+ - "\7\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\1\330\31\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\15\131\1\331\14\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\10\131\1\332\12\131\1\333\2\131"+ - "\1\334\3\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\30\131\1\335\1\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\1\336\31\131\21\0\1\337\132\0"+ - "\1\340\130\0\1\341\102\0\2\157\3\0\120\157\26\0"+ - "\11\342\115\0\2\343\117\0\1\344\1\0\1\344\2\0"+ - "\11\345\116\0\1\346\1\0\1\347\2\0\1\350\1\165"+ - "\116\0\7\351\120\0\1\346\1\0\1\347\2\0\1\350"+ - "\1\165\16\0\1\165\25\0\1\165\51\0\11\352\7\0"+ - "\4\352\15\0\6\352\57\0\11\33\26\0\1\171\102\0"+ - "\1\353\125\0\1\354\111\0\11\205\7\0\13\205\4\0"+ - "\1\205\1\0\32\355\33\0\11\207\7\0\13\207\4\0"+ - "\1\207\1\0\32\207\33\0\11\210\7\0\13\210\4\0"+ - "\1\210\1\0\32\210\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\30\57\1\356\1\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\14\57\1\357\5\57\1\360"+ - "\7\57\33\0\4\57\1\72\4\57\7\0\13\57\4\0"+ - "\1\57\1\0\32\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\13\57\1\361\16\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\362\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\16\57\1\363"+ - "\13\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\364\25\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\365\1\366\6\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\367\31\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\370"+ - "\14\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\5\57\1\371\24\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\372\7\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\24\57\1\373\5\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\22\57\1\374"+ - "\7\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\24\57\1\375\5\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\376\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\13\57\1\377\10\57\1\u0100"+ - "\5\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\16\57\1\u0101\13\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\21\57\1\u0102\10\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\7\57\1\u0103\22\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\17\57\1\u0104"+ - "\12\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\13\57\1\u0105\7\57\1\u0106\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u0107\6\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\31\57\1\u0108"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\15\57"+ - "\1\u0109\14\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\2\57\1\u010a\27\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\3\57\1\u010b\26\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\27\57\1\u010c\2\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\u010d\16\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\23\57\1\u010e\6\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\16\57\1\u010f\13\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\u0110\20\57\1\u0111"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\10\57\1\u0112\21\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\u0113\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\24\57\1\u0114\3\57\1\u0115"+ - "\1\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\17\57\1\u0116\12\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\15\57\1\u0117\14\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\16\57\1\u0118\13\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\10\57\1\u0119"+ - "\21\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u011a\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\7\57\1\u011b\21\57\1\u011c\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\21\57\1\u011d\10\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\10\57"+ - "\1\u011e\21\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\10\57\1\u011f\21\57\127\0\1\u0120\31\0\11\306"+ - "\7\0\13\306\4\0\1\306\66\0\11\307\7\0\13\307"+ - "\4\0\1\307\1\0\32\307\33\0\11\310\7\0\13\310"+ - "\4\0\1\310\1\0\32\310\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\10\131\1\u0121\21\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\22\131\1\u0122\7\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\22\131"+ - "\1\u0123\7\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\5\131\1\u0124\24\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\7\131\1\u0125\22\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\22\131\1\u0126\7\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\3\131"+ - "\1\u0127\26\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\21\131\1\u0128\10\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\1\u0129\31\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\23\131\1\u012a\6\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\1\u012b\31\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\21\131"+ - "\1\u012c\10\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\2\131\1\u012d\27\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\u012e\1\0\32\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\14\131\1\u012f\15\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\1\u0130\31\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\31\131\1\u0131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\21\131"+ - "\1\u0132\10\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\10\131\1\u0133\21\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\17\131\1\u0134\12\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\1\u0135\1\131\1\u0136"+ - "\1\131\1\u0137\14\131\1\u0138\1\u0139\1\u013a\6\131\33\0"+ - "\11\342\11\0\1\163\1\u013b\13\0\1\u013c\5\0\1\163"+ - "\1\u013b\57\0\2\343\23\0\1\164\1\165\2\0\1\167"+ - "\5\0\1\u013d\11\0\1\164\2\0\1\165\10\0\1\167"+ - "\40\0\11\345\115\0\11\345\12\0\1\u013b\22\0\1\u013b"+ - "\61\0\1\u013e\3\0\1\165\121\0\1\165\127\0\1\165"+ - "\121\0\7\351\16\0\1\164\1\165\2\0\1\167\5\0"+ - "\1\u013f\11\0\1\164\2\0\1\165\10\0\1\167\36\0"+ - "\1\u0140\1\0\11\352\7\0\4\352\1\0\1\164\1\165"+ - "\1\0\1\163\1\167\5\0\1\u0141\1\0\6\352\2\0"+ - "\1\164\2\0\1\165\3\0\1\163\4\0\1\167\40\0"+ - "\11\355\7\0\13\355\4\0\1\355\1\0\32\355\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\5\57\1\u0142"+ - "\24\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\4\57\1\u0143\25\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\16\57\1\u0144\13\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\22\57\1\u0145\7\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\13\57\1\u0146"+ - "\16\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\u0147\31\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u0148\25\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\2\57\1\u0149\27\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\21\57\1\u014a\10\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\22\57"+ - "\1\u014b\1\u014c\6\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\1\u014d\3\57\1\u014e\25\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\23\57\1\u014f\6\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\1\57"+ - "\1\u0150\30\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u0151\25\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\14\57\1\u0152\15\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\4\57\1\u0153\25\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\22\57"+ - "\1\u0154\7\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\13\57\1\u0155\16\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\1\u0156\31\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\4\57\1\u0157\25\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\1\u0158\31\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\16\57"+ - "\1\u0159\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\10\57\1\u015a\21\57\33\0\1\57\1\u015b\7\57"+ - "\7\0\13\57\4\0\1\57\1\0\4\57\1\u015c\25\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u015d\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\6\57\1\u015e\23\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\21\57\1\u015f\10\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\24\57\1\u0160\5\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u0161\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\13\57\1\u0162\16\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\24\57\1\u0163\5\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\21\57\1\u0164\10\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u0165\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\24\57\1\u0166\5\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\23\57\1\u0167\6\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\2\57\1\u0168\27\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\4\57"+ - "\1\u0169\25\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u016a\25\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\23\57\1\u016b\6\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\15\57\1\u016c\14\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\16\57"+ - "\1\u016d\13\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\21\57\1\u016e\10\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\16\57\1\u016f\13\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\3\57\1\u0170\26\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\u0171\16\57\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\6\131\1\u0172\23\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\4\131\1\u0173\25\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\4\131\1\u0174\25\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\1\u0175"+ - "\7\131\1\u0176\21\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\16\131\1\u0177\13\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u0178\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u0179"+ - "\2\131\1\u017a\11\131\1\u017b\7\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\16\131\1\u017c\13\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\13\131\1\u017d"+ - "\16\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\15\131\1\u017e\14\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\23\131\1\u017f\6\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u0180\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\13\131\1\u0181"+ - "\16\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\2\131\1\u0182\27\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\4\131\1\u0183\25\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\14\131\1\u0184\15\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\4\131\1\u0185"+ - "\25\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\10\131\1\u0186\21\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\23\131\1\u0187\6\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u0188\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\21\131\1\u0189"+ - "\10\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\16\131\1\u018a\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\27\131\1\u018b\2\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u018c\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\17\131\1\u018d"+ - "\12\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\30\131\1\u018e\1\131\34\0\1\u018f\1\0\1\u0190\2\0"+ - "\1\u0191\1\u0192\116\0\11\342\26\0\1\u013c\66\0\2\343"+ - "\35\0\1\u013d\75\0\1\165\116\0\7\351\30\0\1\u013f"+ - "\66\0\11\u0193\7\0\4\u0193\15\0\6\u0193\57\0\11\352"+ - "\7\0\4\352\13\0\1\u0141\1\0\6\352\57\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\u0194\31\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u0195"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\1\u0196\31\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\23\57\1\u0197\6\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\12\57\1\u0198\17\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\7\57\1\u0199\22\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u019a\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\10\57\1\u019b\21\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\24\57\1\u019c\5\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\21\57\1\u019d\10\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\10\57"+ - "\1\u019e\21\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\13\57\1\u019f\16\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\21\57\1\u01a0\10\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\4\57\1\u01a1\25\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u01a2\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\23\57\1\u01a3\6\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\1\u01a4\31\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\21\57\1\u01a5\10\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\21\57\1\u01a6"+ - "\10\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\15\57\1\u01a7\14\57\33\0\2\57\1\u01a8\6\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\21\57\1\u01a9\10\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\16\57\1\u01aa"+ - "\13\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\13\57\1\u01ab\16\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\2\57\1\u01ac\27\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\21\57\1\u01ad\10\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\23\57\1\u01ae"+ - "\6\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\10\57\1\u01af\21\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\2\57\1\u01b0\27\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\2\57\1\u01b1\27\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\1\u01b2\31\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\10\57"+ - "\1\u01b3\21\57\33\0\1\57\1\u01b4\7\57\7\0\13\57"+ - "\4\0\1\57\1\0\32\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\6\57\1\u01b5\23\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01b6\14\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u01b7\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u01b8\25\57\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\15\131\1\u01b9\14\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\21\131\1\u01ba\10\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\24\131"+ - "\1\u01bb\5\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\15\131\1\u01bc\14\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\16\131\1\u01bd\13\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\5\131\1\u01be\24\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\26\131"+ - "\1\u01bf\3\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\21\131\1\u01c0\10\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\23\131\1\u01c1\6\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\1\u01c2\31\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\24\131\1\u01c3"+ - "\5\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\1\u01c4\31\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\24\131\1\u01c5\5\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\16\131\1\u01c6\13\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\16\131\1\u01c7\13\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\4\131"+ - "\1\u01c8\25\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\16\131\1\u01c9\13\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\15\131\1\u01ca\14\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\2\131\1\u01cb\27\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\5\131"+ - "\1\u01cc\10\131\1\u01cd\13\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\6\131\1\u01ce\23\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\15\131\1\u01cf\6\131"+ - "\1\u01d0\5\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\17\131\1\u01d1\12\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\5\131\1\u01d2\24\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\13\131\1\u01d3\16\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\17\131"+ - "\1\u01d4\12\131\35\0\1\u01d5\3\0\1\u0192\121\0\1\u0192"+ - "\127\0\1\u0192\121\0\11\u0193\7\0\4\u0193\4\0\1\163"+ - "\6\0\1\u01d6\1\0\6\u0193\11\0\1\163\45\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\24\57\1\u01d7\5\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u01d8\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\23\57\1\u01d9\6\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\21\57\1\u01da\10\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01db\14\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\u01dc\16\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\15\57\1\u01dd\14\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\4\57\1\u01de\25\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\15\57\1\u01df\14\57"+ - "\33\0\1\57\1\u01e0\7\57\7\0\13\57\4\0\1\57"+ - "\1\0\32\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\2\57\1\u01e1\27\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\23\57\1\u01e2\6\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\4\57\1\u01e3\25\57"+ - "\33\0\7\57\1\u01e4\1\57\7\0\13\57\4\0\1\57"+ - "\1\0\32\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\5\57\1\u01e5\24\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\4\57\1\u01e6\25\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\1\u01e7\31\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\15\57\1\u01e8"+ - "\14\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\2\57\1\u01e9\27\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\23\57\1\u01ea\6\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\7\57\1\u01eb\22\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\13\57\1\u01ec"+ - "\16\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\3\57\1\u01ed\26\57\33\0\2\57\1\u01ee\6\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\23\57\1\u01ef\6\57\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\16\131\1\u01f0"+ - "\13\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\23\131\1\u01f1\6\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\13\131\1\u01f2\16\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u01f3\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\21\131\1\u01f4"+ - "\10\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\10\131\1\u01f5\21\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\30\131\1\u01f6\1\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\14\131\1\u01f7\15\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\21\131\1\u01f8"+ - "\10\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\2\131\1\u01f9\27\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\3\131\1\u01fa\26\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\15\131\1\u01fb\14\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u01fc"+ - "\24\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\16\131\1\u01fd\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\5\131\1\u01fe\24\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\6\131\1\u01ff\23\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\7\131\1\u0200"+ - "\22\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\21\131\1\u0201\10\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\5\131\1\u0202\24\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\22\131\1\u0203\7\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\15\131\1\u0204"+ - "\14\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\21\131\1\u0205\10\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\1\u0206\31\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\4\131\1\u0207\25\131\42\0\1\u0192"+ - "\116\0\11\u0193\7\0\4\u0193\13\0\1\u01d6\1\0\6\u0193"+ - "\57\0\11\57\7\0\13\57\4\0\1\57\1\0\13\57"+ - "\1\u0208\16\57\33\0\1\57\1\u0209\7\57\7\0\13\57"+ - "\4\0\1\57\1\0\32\57\33\0\11\57\7\0\13\57"+ - "\4\0\1\57\1\0\24\57\1\u020a\5\57\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\24\57\1\u020b\5\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\23\57"+ - "\1\u020c\6\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\2\57\1\u020d\27\57\33\0\2\57\1\u020e\3\57"+ - "\1\u020f\2\57\7\0\13\57\4\0\1\57\1\0\32\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\7\57"+ - "\1\u0210\22\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\1\u0211\31\57\33\0\11\57\7\0\13\57\4\0"+ - "\1\57\1\0\22\57\1\u0212\7\57\33\0\7\57\1\u0213"+ - "\1\57\7\0\13\57\4\0\1\57\1\0\32\57\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\5\131\1\u0214"+ - "\24\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\23\131\1\u0215\6\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\3\131\1\u0216\26\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u0217\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\23\131\1\u0218"+ - "\6\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\17\131\1\u0219\12\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\4\131\1\u021a\25\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\4\131\1\u021b\25\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\7\131\1\u021c"+ - "\22\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\4\131\1\u021d\25\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\22\131\1\u021e\7\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\5\131\1\u021f\24\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\10\131\1\u0220"+ - "\21\131\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\16\131\1\u0221\13\131\33\0\11\131\7\0\13\131\4\0"+ - "\1\131\1\0\23\131\1\u0222\6\131\33\0\11\131\7\0"+ - "\13\131\4\0\1\131\1\0\23\131\1\u0223\6\131\33\0"+ - "\11\131\7\0\13\131\4\0\1\131\1\0\23\131\1\u0224"+ - "\6\131\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u0225\6\57\33\0\6\57\1\u0226\2\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\2\57\1\u0227\27\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u0228"+ - "\25\57\33\0\11\57\7\0\13\57\4\0\1\57\1\0"+ - "\23\57\1\u0229\6\57\33\0\7\57\1\u022a\1\57\7\0"+ - "\13\57\4\0\1\57\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\u022b\1\0\32\57\33\0\11\57\7\0"+ - "\13\57\4\0\1\57\1\0\2\57\1\u022c\27\57\33\0"+ - "\11\57\7\0\13\57\4\0\1\57\1\0\4\57\1\u022d"+ - "\25\57\33\0\11\131\7\0\13\131\4\0\1\131\1\0"+ - "\1\u022e\31\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\2\131\1\u022f\27\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\4\131\1\u0230\25\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\16\131\1\u0231\13\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\23\131"+ - "\1\u0232\6\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\5\131\1\u0233\24\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\14\131\1\u0234\15\131\33\0\11\57"+ - "\7\0\13\57\4\0\1\57\1\0\23\57\1\u0235\6\57"+ - "\33\0\11\57\7\0\13\57\4\0\1\57\1\0\21\57"+ - "\1\u0236\10\57\33\0\11\57\7\0\13\57\4\0\1\57"+ - "\1\0\4\57\1\u0237\25\57\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\2\131\1\u0238\27\131\33\0\11\131"+ - "\7\0\13\131\4\0\1\131\1\0\7\131\1\u0239\22\131"+ - "\33\0\11\131\7\0\13\131\4\0\1\131\1\0\5\131"+ - "\1\u023a\24\131\33\0\11\131\7\0\13\131\4\0\1\131"+ - "\1\0\30\131\1\u023b\1\131\33\0\11\131\7\0\13\131"+ - "\4\0\1\131\1\0\7\131\1\u023c\22\131\6\0"; + "\1\12\3\13\1\12\1\13\1\14\1\15\1\16\1\17"+ + "\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+ + "\1\30\1\31\1\32\1\33\10\34\1\35\1\36\1\37"+ + "\1\40\1\41\1\42\1\43\13\44\1\45\1\12\1\46"+ + "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56"+ + "\1\57\2\60\1\61\2\60\1\62\1\63\1\64\3\60"+ + "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\2\60"+ + "\1\74\1\75\1\76\1\77\2\12\2\100\1\101\14\100"+ + "\1\102\4\100\1\103\101\100\3\104\1\12\61\104\1\105"+ + "\37\104\1\12\2\106\1\107\14\106\1\110\106\106\2\12"+ + "\1\111\1\12\1\111\2\112\1\113\51\112\1\114\44\112"+ + "\2\12\1\111\1\12\1\111\7\115\1\116\44\115\1\114"+ + "\44\115\2\12\1\111\1\12\1\111\2\117\1\120\116\117"+ + "\2\12\1\111\1\12\1\111\7\121\1\122\111\121\3\104"+ + "\1\12\61\104\1\123\37\104\1\12\127\0\3\13\1\0"+ + "\1\13\126\0\1\124\32\0\1\125\131\0\13\126\4\0"+ + "\1\127\1\0\32\130\17\0\1\131\33\0\13\132\4\0"+ + "\1\133\1\0\1\134\1\135\1\136\1\137\1\140\1\141"+ + "\2\135\1\142\4\135\1\143\2\135\1\144\1\135\1\145"+ + "\1\146\1\135\1\147\4\135\47\0\1\150\77\0\1\151"+ + "\25\0\1\152\124\0\1\153\126\0\1\154\104\0\1\155"+ + "\20\0\1\156\106\0\1\157\16\0\1\160\1\12\106\0"+ + "\1\161\121\0\1\162\4\0\1\163\14\0\1\164\107\0"+ + "\1\165\1\0\11\34\10\0\1\166\1\167\2\0\1\170"+ + "\1\171\1\172\1\0\1\173\1\174\4\0\1\175\2\0"+ + "\1\166\2\0\1\167\3\0\1\170\2\0\1\171\2\0"+ + "\1\172\5\0\1\173\2\0\1\174\33\0\1\165\1\0"+ + "\11\34\11\0\1\167\2\0\1\170\1\171\2\0\1\173"+ + "\5\0\1\175\5\0\1\167\3\0\1\170\2\0\1\171"+ + "\10\0\1\173\51\0\1\176\106\0\1\177\20\0\1\200"+ + "\1\201\125\0\1\202\1\203\101\0\1\204\22\0\1\205"+ + "\1\206\17\0\1\207\101\0\1\210\4\0\1\211\127\0"+ + "\13\212\4\0\1\213\1\0\32\214\33\0\11\44\7\0"+ + "\13\44\4\0\1\44\1\0\32\215\46\0\1\216\126\0"+ + "\1\217\131\0\13\44\4\0\1\220\1\0\32\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\15\60\1\221"+ + "\4\60\1\222\7\60\33\0\6\60\1\223\2\60\7\0"+ + "\13\60\4\0\1\60\1\0\5\60\1\224\2\60\1\225"+ + "\5\60\1\226\2\60\1\227\10\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\1\230\6\60\1\231\6\60"+ + "\1\232\13\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\233\3\60\1\234\5\60\1\235\13\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\236\1\60\1\237\11\60\1\240\2\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\1\241\12\60\1\242"+ + "\1\60\1\243\1\244\13\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\32\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\2\60\1\245\2\60\1\246\6\60"+ + "\1\247\1\250\1\60\1\251\2\60\1\252\7\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\16\60\1\253"+ + "\13\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\1\254\15\60\1\255\13\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\4\60\1\256\17\60\1\257\5\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\4\60"+ + "\1\260\25\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\7\60\1\261\13\60\1\262\2\60\1\263\3\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\264\5\60\1\265\6\60\1\266\1\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\10\60\1\267\2\60"+ + "\1\270\1\60\1\271\1\60\1\272\2\60\1\273\7\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\1\274"+ + "\15\60\1\275\13\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\7\60\1\276\22\60\15\0\1\277\4\0"+ + "\1\300\10\0\11\60\7\0\13\60\4\0\1\60\1\301"+ + "\32\60\127\0\1\302\45\0\1\303\57\0\1\304\1\305"+ + "\3\0\2\100\1\0\14\100\1\0\4\100\1\0\101\100"+ + "\24\0\1\306\120\0\1\307\173\0\1\104\40\0\2\106"+ + "\1\0\14\106\1\0\106\106\42\0\1\310\70\0\2\112"+ + "\1\0\51\112\1\0\44\112\5\0\121\104\5\0\7\115"+ + "\1\0\44\115\1\0\44\115\5\0\2\117\1\0\116\117"+ + "\1\0\5\311\1\0\1\104\123\0\7\121\1\0\111\121"+ + "\1\0\5\312\6\0\1\104\112\0\5\313\57\0\1\104"+ + "\65\0\11\126\7\0\13\126\4\0\1\126\1\0\32\126"+ + "\33\0\11\130\7\0\13\130\4\0\1\130\1\0\32\130"+ + "\53\0\13\314\4\0\1\131\1\0\32\315\33\0\11\132"+ + "\7\0\13\132\4\0\1\132\1\0\32\316\53\0\13\132"+ + "\4\0\1\133\1\0\32\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\13\135\1\317\6\135\1\320\7\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\32\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\1\321"+ + "\31\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\4\135\1\322\25\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\2\135\1\323\10\135\1\324\1\135\1\325"+ + "\3\135\1\326\3\135\1\327\1\135\1\330\2\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\4\135\1\331"+ + "\11\135\1\332\13\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\5\135\1\333\7\135\1\334\4\135\1\335"+ + "\7\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\1\336\31\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\15\135\1\337\14\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\10\135\1\340\12\135\1\341\2\135"+ + "\1\342\3\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\30\135\1\343\1\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\1\344\31\135\21\0\1\345\132\0"+ + "\1\346\130\0\1\347\102\0\2\163\3\0\120\163\26\0"+ + "\11\350\115\0\2\351\117\0\1\352\1\0\1\352\2\0"+ + "\11\353\116\0\1\354\1\0\1\355\2\0\1\356\1\171"+ + "\116\0\7\357\120\0\1\354\1\0\1\355\2\0\1\356"+ + "\1\171\16\0\1\171\25\0\1\171\51\0\11\360\7\0"+ + "\4\360\15\0\6\360\57\0\11\34\26\0\1\175\102\0"+ + "\1\361\125\0\1\362\111\0\11\212\7\0\13\212\4\0"+ + "\1\212\1\0\32\363\33\0\11\214\7\0\13\214\4\0"+ + "\1\214\1\0\32\214\33\0\11\215\7\0\13\215\4\0"+ + "\1\215\1\0\32\215\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\30\60\1\364\1\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\14\60\1\365\5\60\1\366"+ + "\7\60\33\0\4\60\1\73\4\60\7\0\13\60\4\0"+ + "\1\60\1\0\32\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\13\60\1\367\16\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\23\60\1\370\6\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\16\60\1\371"+ + "\13\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\4\60\1\372\25\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\22\60\1\373\1\374\6\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\1\375\31\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\15\60\1\376"+ + "\14\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\5\60\1\377\24\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\22\60\1\u0100\7\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\24\60\1\u0101\5\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\22\60\1\u0102"+ + "\7\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\24\60\1\u0103\5\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\23\60\1\u0104\6\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\13\60\1\u0105\10\60\1\u0106"+ + "\5\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\16\60\1\u0107\13\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\21\60\1\u0108\10\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\7\60\1\u0109\22\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\17\60\1\u010a"+ + "\12\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\13\60\1\u010b\7\60\1\u010c\6\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\23\60\1\u010d\6\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\31\60\1\u010e"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\15\60"+ + "\1\u010f\14\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\2\60\1\u0110\27\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\3\60\1\u0111\26\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\27\60\1\u0112\2\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\u0113\16\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\23\60\1\u0114\6\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\16\60\1\u0115\13\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\1\u0116\20\60\1\u0117"+ + "\10\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\10\60\1\u0118\21\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\16\60\1\u0119\13\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\24\60\1\u011a\3\60\1\u011b"+ + "\1\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\17\60\1\u011c\12\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\15\60\1\u011d\14\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\16\60\1\u011e\13\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\10\60\1\u011f"+ + "\21\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\23\60\1\u0120\6\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\7\60\1\u0121\21\60\1\u0122\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\21\60\1\u0123\10\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\10\60"+ + "\1\u0124\21\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\10\60\1\u0125\21\60\127\0\1\u0126\31\0\11\314"+ + "\7\0\13\314\4\0\1\314\66\0\11\315\7\0\13\315"+ + "\4\0\1\315\1\0\32\315\33\0\11\316\7\0\13\316"+ + "\4\0\1\316\1\0\32\316\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\10\135\1\u0127\21\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\22\135\1\u0128\7\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\22\135"+ + "\1\u0129\7\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\5\135\1\u012a\24\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\7\135\1\u012b\22\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\22\135\1\u012c\7\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\3\135"+ + "\1\u012d\26\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\21\135\1\u012e\10\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\1\u012f\31\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\23\135\1\u0130\6\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\1\u0131\31\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\21\135"+ + "\1\u0132\10\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\2\135\1\u0133\27\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\u0134\1\0\32\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\14\135\1\u0135\15\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\1\u0136\31\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\31\135\1\u0137"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\21\135"+ + "\1\u0138\10\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\10\135\1\u0139\21\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\17\135\1\u013a\12\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\1\u013b\1\135\1\u013c"+ + "\1\135\1\u013d\14\135\1\u013e\1\u013f\1\u0140\6\135\33\0"+ + "\11\350\11\0\1\167\1\u0141\13\0\1\u0142\5\0\1\167"+ + "\1\u0141\57\0\2\351\23\0\1\170\1\171\2\0\1\173"+ + "\5\0\1\u0143\11\0\1\170\2\0\1\171\10\0\1\173"+ + "\40\0\11\353\115\0\11\353\12\0\1\u0141\22\0\1\u0141"+ + "\61\0\1\u0144\3\0\1\171\121\0\1\171\127\0\1\171"+ + "\121\0\7\357\16\0\1\170\1\171\2\0\1\173\5\0"+ + "\1\u0145\11\0\1\170\2\0\1\171\10\0\1\173\36\0"+ + "\1\u0146\1\0\11\360\7\0\4\360\1\0\1\170\1\171"+ + "\1\0\1\167\1\173\5\0\1\u0147\1\0\6\360\2\0"+ + "\1\170\2\0\1\171\3\0\1\167\4\0\1\173\40\0"+ + "\11\363\7\0\13\363\4\0\1\363\1\0\32\363\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\5\60\1\u0148"+ + "\24\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\4\60\1\u0149\25\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\16\60\1\u014a\13\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\22\60\1\u014b\7\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\13\60\1\u014c"+ + "\16\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\1\u014d\31\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\u014e\25\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\2\60\1\u014f\27\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\21\60\1\u0150\10\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\22\60"+ + "\1\u0151\1\u0152\6\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\1\u0153\3\60\1\u0154\25\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\23\60\1\u0155\6\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\1\60"+ + "\1\u0156\30\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\u0157\25\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\14\60\1\u0158\15\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\4\60\1\u0159\25\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\22\60"+ + "\1\u015a\7\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\13\60\1\u015b\16\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\1\u015c\31\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\4\60\1\u015d\25\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\1\u015e\31\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\16\60"+ + "\1\u015f\13\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\10\60\1\u0160\21\60\33\0\1\60\1\u0161\7\60"+ + "\7\0\13\60\4\0\1\60\1\0\4\60\1\u0162\25\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\21\60"+ + "\1\u0163\10\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\6\60\1\u0164\23\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\21\60\1\u0165\10\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\24\60\1\u0166\5\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u0167\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\13\60\1\u0168\16\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\24\60\1\u0169\5\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\21\60\1\u016a\10\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u016b\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\24\60\1\u016c\5\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\23\60\1\u016d\6\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\2\60\1\u016e\27\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\4\60"+ + "\1\u016f\25\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\u0170\25\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\23\60\1\u0171\6\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\15\60\1\u0172\14\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\16\60"+ + "\1\u0173\13\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\21\60\1\u0174\10\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\16\60\1\u0175\13\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\3\60\1\u0176\26\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\u0177\16\60\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\6\135\1\u0178\23\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\4\135\1\u0179\25\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\4\135\1\u017a\25\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\1\u017b"+ + "\7\135\1\u017c\21\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\16\135\1\u017d\13\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u017e\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\5\135\1\u017f"+ + "\2\135\1\u0180\11\135\1\u0181\7\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\16\135\1\u0182\13\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\13\135\1\u0183"+ + "\16\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\15\135\1\u0184\14\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\23\135\1\u0185\6\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u0186\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\13\135\1\u0187"+ + "\16\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\2\135\1\u0188\27\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\4\135\1\u0189\25\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\14\135\1\u018a\15\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\4\135\1\u018b"+ + "\25\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\10\135\1\u018c\21\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\23\135\1\u018d\6\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u018e\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\21\135\1\u018f"+ + "\10\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\16\135\1\u0190\13\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\27\135\1\u0191\2\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u0192\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\17\135\1\u0193"+ + "\12\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\30\135\1\u0194\1\135\34\0\1\u0195\1\0\1\u0196\2\0"+ + "\1\u0197\1\u0198\116\0\11\350\26\0\1\u0142\66\0\2\351"+ + "\35\0\1\u0143\75\0\1\171\116\0\7\357\30\0\1\u0145"+ + "\66\0\11\u0199\7\0\4\u0199\15\0\6\u0199\57\0\11\360"+ + "\7\0\4\360\13\0\1\u0147\1\0\6\360\57\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\1\u019a\31\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\21\60\1\u019b"+ + "\10\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\1\u019c\31\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\23\60\1\u019d\6\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\12\60\1\u019e\17\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\7\60\1\u019f\22\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u01a0\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\10\60\1\u01a1\21\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\24\60\1\u01a2\5\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\21\60\1\u01a3\10\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\10\60"+ + "\1\u01a4\21\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\13\60\1\u01a5\16\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\21\60\1\u01a6\10\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\4\60\1\u01a7\25\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u01a8\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\23\60\1\u01a9\6\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\1\u01aa\31\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\21\60\1\u01ab\10\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\21\60\1\u01ac"+ + "\10\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\15\60\1\u01ad\14\60\33\0\2\60\1\u01ae\6\60\7\0"+ + "\13\60\4\0\1\60\1\0\32\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\21\60\1\u01af\10\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\16\60\1\u01b0"+ + "\13\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\13\60\1\u01b1\16\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\2\60\1\u01b2\27\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\21\60\1\u01b3\10\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\23\60\1\u01b4"+ + "\6\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\10\60\1\u01b5\21\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\2\60\1\u01b6\27\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\2\60\1\u01b7\27\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\1\u01b8\31\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\10\60"+ + "\1\u01b9\21\60\33\0\1\60\1\u01ba\7\60\7\0\13\60"+ + "\4\0\1\60\1\0\32\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\6\60\1\u01bb\23\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\15\60\1\u01bc\14\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\21\60"+ + "\1\u01bd\10\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\u01be\25\60\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\15\135\1\u01bf\14\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\21\135\1\u01c0\10\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\24\135"+ + "\1\u01c1\5\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\15\135\1\u01c2\14\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\16\135\1\u01c3\13\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\5\135\1\u01c4\24\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\26\135"+ + "\1\u01c5\3\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\21\135\1\u01c6\10\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\23\135\1\u01c7\6\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\1\u01c8\31\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\24\135\1\u01c9"+ + "\5\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\1\u01ca\31\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\24\135\1\u01cb\5\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\16\135\1\u01cc\13\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\16\135\1\u01cd\13\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\4\135"+ + "\1\u01ce\25\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\16\135\1\u01cf\13\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\15\135\1\u01d0\14\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\2\135\1\u01d1\27\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\5\135"+ + "\1\u01d2\10\135\1\u01d3\13\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\6\135\1\u01d4\23\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\15\135\1\u01d5\6\135"+ + "\1\u01d6\5\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\17\135\1\u01d7\12\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\5\135\1\u01d8\24\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\13\135\1\u01d9\16\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\17\135"+ + "\1\u01da\12\135\35\0\1\u01db\3\0\1\u0198\121\0\1\u0198"+ + "\127\0\1\u0198\121\0\11\u0199\7\0\4\u0199\4\0\1\167"+ + "\6\0\1\u01dc\1\0\6\u0199\11\0\1\167\45\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\24\60\1\u01dd\5\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u01de\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\23\60\1\u01df\6\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\21\60\1\u01e0\10\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\15\60\1\u01e1\14\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\u01e2\16\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\15\60\1\u01e3\14\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\4\60\1\u01e4\25\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\15\60\1\u01e5\14\60"+ + "\33\0\1\60\1\u01e6\7\60\7\0\13\60\4\0\1\60"+ + "\1\0\32\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\2\60\1\u01e7\27\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\23\60\1\u01e8\6\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\4\60\1\u01e9\25\60"+ + "\33\0\7\60\1\u01ea\1\60\7\0\13\60\4\0\1\60"+ + "\1\0\32\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\5\60\1\u01eb\24\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\4\60\1\u01ec\25\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\1\u01ed\31\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\15\60\1\u01ee"+ + "\14\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\2\60\1\u01ef\27\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\23\60\1\u01f0\6\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\7\60\1\u01f1\22\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\13\60\1\u01f2"+ + "\16\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\3\60\1\u01f3\26\60\33\0\2\60\1\u01f4\6\60\7\0"+ + "\13\60\4\0\1\60\1\0\32\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\23\60\1\u01f5\6\60\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\16\135\1\u01f6"+ + "\13\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\23\135\1\u01f7\6\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\13\135\1\u01f8\16\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u01f9\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\21\135\1\u01fa"+ + "\10\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\10\135\1\u01fb\21\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\30\135\1\u01fc\1\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\14\135\1\u01fd\15\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\21\135\1\u01fe"+ + "\10\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\2\135\1\u01ff\27\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\3\135\1\u0200\26\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\15\135\1\u0201\14\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\5\135\1\u0202"+ + "\24\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\16\135\1\u0203\13\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\5\135\1\u0204\24\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\6\135\1\u0205\23\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\7\135\1\u0206"+ + "\22\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\21\135\1\u0207\10\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\5\135\1\u0208\24\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\22\135\1\u0209\7\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\15\135\1\u020a"+ + "\14\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\21\135\1\u020b\10\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\1\u020c\31\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\4\135\1\u020d\25\135\42\0\1\u0198"+ + "\116\0\11\u0199\7\0\4\u0199\13\0\1\u01dc\1\0\6\u0199"+ + "\57\0\11\60\7\0\13\60\4\0\1\60\1\0\13\60"+ + "\1\u020e\16\60\33\0\1\60\1\u020f\7\60\7\0\13\60"+ + "\4\0\1\60\1\0\32\60\33\0\11\60\7\0\13\60"+ + "\4\0\1\60\1\0\24\60\1\u0210\5\60\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\24\60\1\u0211\5\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\23\60"+ + "\1\u0212\6\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\2\60\1\u0213\27\60\33\0\2\60\1\u0214\3\60"+ + "\1\u0215\2\60\7\0\13\60\4\0\1\60\1\0\32\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\7\60"+ + "\1\u0216\22\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\1\u0217\31\60\33\0\11\60\7\0\13\60\4\0"+ + "\1\60\1\0\22\60\1\u0218\7\60\33\0\7\60\1\u0219"+ + "\1\60\7\0\13\60\4\0\1\60\1\0\32\60\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\5\135\1\u021a"+ + "\24\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\23\135\1\u021b\6\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\3\135\1\u021c\26\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u021d\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\23\135\1\u021e"+ + "\6\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\17\135\1\u021f\12\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\4\135\1\u0220\25\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\4\135\1\u0221\25\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\7\135\1\u0222"+ + "\22\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\4\135\1\u0223\25\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\22\135\1\u0224\7\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\5\135\1\u0225\24\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\10\135\1\u0226"+ + "\21\135\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\16\135\1\u0227\13\135\33\0\11\135\7\0\13\135\4\0"+ + "\1\135\1\0\23\135\1\u0228\6\135\33\0\11\135\7\0"+ + "\13\135\4\0\1\135\1\0\23\135\1\u0229\6\135\33\0"+ + "\11\135\7\0\13\135\4\0\1\135\1\0\23\135\1\u022a"+ + "\6\135\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\23\60\1\u022b\6\60\33\0\6\60\1\u022c\2\60\7\0"+ + "\13\60\4\0\1\60\1\0\32\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\2\60\1\u022d\27\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\4\60\1\u022e"+ + "\25\60\33\0\11\60\7\0\13\60\4\0\1\60\1\0"+ + "\23\60\1\u022f\6\60\33\0\7\60\1\u0230\1\60\7\0"+ + "\13\60\4\0\1\60\1\0\32\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\u0231\1\0\32\60\33\0\11\60\7\0"+ + "\13\60\4\0\1\60\1\0\2\60\1\u0232\27\60\33\0"+ + "\11\60\7\0\13\60\4\0\1\60\1\0\4\60\1\u0233"+ + "\25\60\33\0\11\135\7\0\13\135\4\0\1\135\1\0"+ + "\1\u0234\31\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\2\135\1\u0235\27\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\4\135\1\u0236\25\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\16\135\1\u0237\13\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\23\135"+ + "\1\u0238\6\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\5\135\1\u0239\24\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\14\135\1\u023a\15\135\33\0\11\60"+ + "\7\0\13\60\4\0\1\60\1\0\23\60\1\u023b\6\60"+ + "\33\0\11\60\7\0\13\60\4\0\1\60\1\0\21\60"+ + "\1\u023c\10\60\33\0\11\60\7\0\13\60\4\0\1\60"+ + "\1\0\4\60\1\u023d\25\60\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\2\135\1\u023e\27\135\33\0\11\135"+ + "\7\0\13\135\4\0\1\135\1\0\7\135\1\u023f\22\135"+ + "\33\0\11\135\7\0\13\135\4\0\1\135\1\0\5\135"+ + "\1\u0240\24\135\33\0\11\135\7\0\13\135\4\0\1\135"+ + "\1\0\30\135\1\u0241\1\135\33\0\11\135\7\0\13\135"+ + "\4\0\1\135\1\0\7\135\1\u0242\22\135\6\0"; private static int [] zzUnpacktrans() { - int [] result = new int[36636]; + int [] result = new int[36894]; int offset = 0; offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -812,20 +818,20 @@ private static int zzUnpacktrans(String packed, int offset, int [] result) { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\10\0\1\11\2\1\1\11\4\1\1\11\1\1\1\11"+ + "\11\0\1\11\2\1\1\11\4\1\1\11\1\1\1\11"+ "\2\1\1\11\6\1\1\11\7\1\1\11\2\1\1\11"+ - "\24\1\2\11\1\1\1\11\2\1\1\11\1\1\1\11"+ - "\1\1\1\11\2\1\1\11\5\1\2\11\1\1\1\0"+ - "\1\1\1\0\1\1\1\0\14\1\1\11\1\1\3\11"+ - "\1\1\3\11\1\1\1\11\1\1\1\11\4\0\1\11"+ - "\1\0\1\1\2\0\1\11\1\1\5\11\1\1\3\11"+ - "\1\1\1\0\2\1\2\11\1\0\56\1\5\11\1\1"+ - "\3\11\3\0\31\1\3\11\2\1\1\0\1\1\3\0"+ - "\2\1\2\11\63\1\1\11\33\1\6\0\115\1\3\0"+ - "\1\11\1\0\101\1\2\0\146\1"; + "\24\1\2\11\1\1\1\11\2\1\1\11\2\1\1\11"+ + "\1\1\1\11\1\1\1\11\2\1\1\11\5\1\2\11"+ + "\1\1\1\0\1\1\1\0\1\1\1\0\14\1\1\11"+ + "\1\1\3\11\1\1\3\11\1\1\1\11\1\1\1\11"+ + "\4\0\1\11\1\0\1\1\2\0\2\11\1\1\5\11"+ + "\1\1\3\11\1\1\1\0\2\1\2\11\1\0\56\1"+ + "\5\11\1\1\4\11\3\0\31\1\3\11\2\1\1\0"+ + "\1\1\3\0\2\1\2\11\63\1\1\11\33\1\6\0"+ + "\115\1\3\0\1\11\1\0\101\1\2\0\146\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[572]; + int [] result = new int[578]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1153,952 +1159,967 @@ else if (zzAtEOF) { { return TokenType.BAD_CHARACTER; } // fall through - case 191: break; + case 194: break; case 2: { return TokenType.WHITE_SPACE; } // fall through - case 192: break; + case 195: break; case 3: { return C3Types.BANG; } // fall through - case 193: break; + case 196: break; case 4: { yybegin(IN_STRING); } // fall through - case 194: break; + case 197: break; case 5: { return C3Types.MOD; } // fall through - case 195: break; + case 198: break; case 6: { return C3Types.AMP; } // fall through - case 196: break; + case 199: break; case 7: { yybegin(IN_CHAR); } // fall through - case 197: break; + case 200: break; case 8: { return C3Types.LP; } // fall through - case 198: break; + case 201: break; case 9: { return C3Types.RP; } // fall through - case 199: break; + case 202: break; case 10: { return C3Types.STAR; } // fall through - case 200: break; + case 203: break; case 11: { return C3Types.PLUS; } // fall through - case 201: break; + case 204: break; case 12: { return C3Types.COMMA; } // fall through - case 202: break; + case 205: break; case 13: { return C3Types.MINUS; } // fall through - case 203: break; + case 206: break; case 14: { return C3Types.DOT; } // fall through - case 204: break; + case 207: break; case 15: { return C3Types.DIV; } // fall through - case 205: break; + case 208: break; case 16: { return C3Types.INT_LITERAL; } // fall through - case 206: break; + case 209: break; case 17: { return C3Types.COLON; } // fall through - case 207: break; + case 210: break; case 18: { return C3Types.EOS; } // fall through - case 208: break; + case 211: break; case 19: { return C3Types.LT_OP; } // fall through - case 209: break; + case 212: break; case 20: { return C3Types.EQ; } // fall through - case 210: break; + case 213: break; case 21: { return C3Types.GT_OP; } // fall through - case 211: break; + case 214: break; case 22: { return C3Types.QUESTION; } // fall through - case 212: break; + case 215: break; case 23: { return C3Types.CONST_IDENT; } // fall through - case 213: break; + case 216: break; case 24: { return C3Types.LBT; } // fall through - case 214: break; + case 217: break; case 25: { return C3Types.RBT; } // fall through - case 215: break; + case 218: break; case 26: { return C3Types.BIT_XOR; } // fall through - case 216: break; + case 219: break; case 27: { yybegin(IN_RAW_STRING); } // fall through - case 217: break; + case 220: break; case 28: { return C3Types.IDENT; } // fall through - case 218: break; + case 221: break; case 29: { return C3Types.LB; } // fall through - case 219: break; + case 222: break; case 30: { return C3Types.BIT_OR; } // fall through - case 220: break; + case 223: break; case 31: { return C3Types.RB; } // fall through - case 221: break; + case 224: break; case 32: { return C3Types.BIT_NOT; } // fall through - case 222: break; + case 225: break; case 33: { return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 223: break; + case 226: break; case 34: { } // fall through - case 224: break; + case 227: break; case 35: { yybegin(YYINITIAL); return C3Types.STRING_LIT; } // fall through - case 225: break; + case 228: break; case 36: - { yybegin(YYINITIAL); return TokenType.BAD_CHARACTER; + { return C3ParserDefinition.DOC_COMMENT; } // fall through - case 226: break; + case 229: break; case 37: - { yybegin(YYINITIAL); return C3Types.CHAR_LIT; + { yybegin(YYINITIAL); return TokenType.BAD_CHARACTER; } // fall through - case 227: break; + case 230: break; case 38: - { yybegin(YYINITIAL); return C3Types.BYTES; + { yybegin(YYINITIAL); return C3Types.CHAR_LIT; } // fall through - case 228: break; + case 231: break; case 39: - { return C3Types.BANGBANG; + { yybegin(YYINITIAL); return C3Types.BYTES; } // fall through - case 229: break; + case 232: break; case 40: - { return C3Types.NE_OP; + { return C3Types.BANGBANG; } // fall through - case 230: break; + case 233: break; case 41: - { return C3Types.HASH_IDENT; + { return C3Types.NE_OP; } // fall through - case 231: break; + case 234: break; case 42: - { return C3Types.CT_CONST_IDENT; + { return C3Types.HASH_IDENT; } // fall through - case 232: break; + case 235: break; case 43: - { return C3Types.CT_IDENT; + { return C3Types.CT_CONST_IDENT; } // fall through - case 233: break; + case 236: break; case 44: - { return C3Types.MOD_ASSIGN; + { return C3Types.CT_IDENT; } // fall through - case 234: break; + case 237: break; case 45: - { return C3Types.AND; + { return C3Types.MOD_ASSIGN; } // fall through - case 235: break; + case 238: break; case 46: - { return C3Types.BIT_AND_ASSIGN; + { return C3Types.AND; } // fall through - case 236: break; + case 239: break; case 47: - { return C3Types.LGENPAR; + { return C3Types.BIT_AND_ASSIGN; } // fall through - case 237: break; + case 240: break; case 48: - { return C3Types.MULT_ASSIGN; + { return C3Types.LGENPAR; } // fall through - case 238: break; + case 241: break; case 49: - { return C3Types.PLUSPLUS; + { return C3Types.MULT_ASSIGN; } // fall through - case 239: break; + case 242: break; case 50: - { return C3Types.PLUS_ASSIGN; + { return C3Types.PLUSPLUS; } // fall through - case 240: break; + case 243: break; case 51: - { return C3Types.MINUSMINUS; + { return C3Types.PLUS_ASSIGN; } // fall through - case 241: break; + case 244: break; case 52: - { return C3Types.MINUS_ASSIGN; + { return C3Types.MINUSMINUS; } // fall through - case 242: break; + case 245: break; case 53: - { return C3Types.DOTDOT; + { return C3Types.MINUS_ASSIGN; } // fall through - case 243: break; + case 246: break; case 54: - { yybegin(IN_COMMENT); commentNesting = 1; return C3ParserDefinition.BLOCK_COMMENT; + { return C3Types.DOTDOT; } // fall through - case 244: break; + case 247: break; case 55: - { return C3ParserDefinition.LINE_COMMENT; + { yybegin(IN_COMMENT); commentNesting = 1; return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 245: break; + case 248: break; case 56: - { return C3Types.DIV_ASSIGN; + { return C3ParserDefinition.LINE_COMMENT; } // fall through - case 246: break; + case 249: break; case 57: - { return C3Types.SCOPE; + { return C3Types.DIV_ASSIGN; } // fall through - case 247: break; + case 250: break; case 58: - { return C3Types.SHL; + { return C3Types.SCOPE; } // fall through - case 248: break; + case 251: break; case 59: - { return C3Types.LE_OP; + { yybegin(IN_DOC_COMMENT); return C3ParserDefinition.DOC_COMMENT; } // fall through - case 249: break; + case 252: break; case 60: - { return C3Types.EQ_OP; + { return C3Types.SHL; } // fall through - case 250: break; + case 253: break; case 61: - { return C3Types.IMPLIES; + { return C3Types.LE_OP; } // fall through - case 251: break; + case 254: break; case 62: - { return C3Types.RGENPAR; + { return C3Types.EQ_OP; } // fall through - case 252: break; + case 255: break; case 63: - { return C3Types.GE_OP; + { return C3Types.IMPLIES; } // fall through - case 253: break; + case 256: break; case 64: - { return C3Types.SHR; + { return C3Types.RGENPAR; } // fall through - case 254: break; + case 257: break; case 65: - { return C3Types.RVEC; + { return C3Types.GE_OP; } // fall through - case 255: break; + case 258: break; case 66: - { return C3Types.ELVIS; + { return C3Types.SHR; } // fall through - case 256: break; + case 259: break; case 67: - { return C3Types.OPTELSE; + { return C3Types.RVEC; } // fall through - case 257: break; + case 260: break; case 68: - { return C3Types.AT_IDENT; + { return C3Types.ELVIS; } // fall through - case 258: break; + case 261: break; case 69: - { return C3Types.TYPE_IDENT; + { return C3Types.OPTELSE; } // fall through - case 259: break; + case 262: break; case 70: - { return C3Types.LVEC; + { return C3Types.AT_IDENT; } // fall through - case 260: break; + case 263: break; case 71: - { return C3Types.BIT_XOR_ASSIGN; + { return C3Types.TYPE_IDENT; } // fall through - case 261: break; + case 264: break; case 72: - { return C3Types.KW_DO; + { return C3Types.LVEC; } // fall through - case 262: break; + case 265: break; case 73: - { return C3Types.KW_FN; + { return C3Types.BIT_XOR_ASSIGN; } // fall through - case 263: break; + case 266: break; case 74: - { return C3Types.KW_IF; + { return C3Types.KW_DO; } // fall through - case 264: break; + case 267: break; case 75: - { yybegin(IN_BYTES_STRING); + { return C3Types.KW_FN; } // fall through - case 265: break; + case 268: break; case 76: - { yybegin(IN_BYTES_CHAR); + { return C3Types.KW_IF; } // fall through - case 266: break; + case 269: break; case 77: - { yybegin(IN_BYTES_RAW_STRING); + { yybegin(IN_BYTES_STRING); } // fall through - case 267: break; + case 270: break; case 78: - { return C3Types.LBRAPIPE; + { yybegin(IN_BYTES_CHAR); } // fall through - case 268: break; + case 271: break; case 79: - { return C3Types.BIT_OR_ASSIGN; + { yybegin(IN_BYTES_RAW_STRING); } // fall through - case 269: break; + case 272: break; case 80: - { return C3Types.OR; + { return C3Types.LBRAPIPE; } // fall through - case 270: break; + case 273: break; case 81: - { return C3Types.RBRAPIPE; + { return C3Types.BIT_OR_ASSIGN; } // fall through - case 271: break; + case 274: break; case 82: - { if (--commentNesting == 0) { yybegin(YYINITIAL); return C3ParserDefinition.BLOCK_COMMENT; } + { return C3Types.OR; } // fall through - case 272: break; + case 275: break; case 83: - { commentNesting++; return C3ParserDefinition.BLOCK_COMMENT; + { return C3Types.RBRAPIPE; } // fall through - case 273: break; + case 276: break; case 84: - { return C3Types.BUILTIN_CONST; + { if (--commentNesting == 0) { yybegin(YYINITIAL); return C3ParserDefinition.BLOCK_COMMENT; } } // fall through - case 274: break; + case 277: break; case 85: - { return C3Types.BUILTIN; + { commentNesting++; return C3ParserDefinition.BLOCK_COMMENT; } // fall through - case 275: break; + case 278: break; case 86: - { return C3Types.CT_TYPE_IDENT; + { yybegin(YYINITIAL); return C3ParserDefinition.DOC_COMMENT; } // fall through - case 276: break; + case 279: break; case 87: - { return C3Types.KW_CT_IF; + { return C3Types.BUILTIN_CONST; } // fall through - case 277: break; + case 280: break; case 88: - { return C3Types.CT_AND; + { return C3Types.BUILTIN; } // fall through - case 278: break; + case 281: break; case 89: - { return C3Types.CT_PLUS; + { return C3Types.CT_TYPE_IDENT; } // fall through - case 279: break; + case 282: break; case 90: - { return C3Types.ELLIPSIS; + { return C3Types.KW_CT_IF; } // fall through - case 280: break; + case 283: break; case 91: - { return C3Types.FLOAT_LITERAL; + { return C3Types.CT_AND; } // fall through - case 281: break; + case 284: break; case 92: - { return C3Types.SHL_ASSIGN; + { return C3Types.CT_PLUS; } // fall through - case 282: break; + case 285: break; case 93: - { return C3Types.SHR_ASSIGN; + { return C3Types.ELLIPSIS; } // fall through - case 283: break; + case 286: break; case 94: - { return C3Types.AT_TYPE_IDENT; + { return C3Types.FLOAT_LITERAL; } // fall through - case 284: break; + case 287: break; case 95: - { return C3Types.KW_ANY; + { return C3Types.SHL_ASSIGN; } // fall through - case 285: break; + case 288: break; case 96: - { return C3Types.KW_ASM; + { return C3Types.SHR_ASSIGN; } // fall through - case 286: break; + case 289: break; case 97: - { return C3Types.KW_DEF; + { return C3Types.AT_TYPE_IDENT; } // fall through - case 287: break; + case 290: break; case 98: - { return C3Types.KW_FOR; + { return C3Types.KW_ANY; } // fall through - case 288: break; + case 291: break; case 99: - { return C3Types.KW_INT; + { return C3Types.KW_ASM; } // fall through - case 289: break; + case 292: break; case 100: - { return C3Types.KW_ISZ; + { return C3Types.KW_DEF; } // fall through - case 290: break; + case 293: break; case 101: - { return C3Types.KW_TRY; + { return C3Types.KW_FOR; } // fall through - case 291: break; + case 294: break; case 102: - { return C3Types.KW_USZ; + { return C3Types.KW_INT; } // fall through - case 292: break; + case 295: break; case 103: - { return C3Types.KW_VAR; + { return C3Types.KW_ISZ; } // fall through - case 293: break; + case 296: break; case 104: - { return C3Types.CT_OR; + { return C3Types.KW_TRY; } // fall through - case 294: break; + case 297: break; case 105: - { return C3Types.KW_CT_FOR; + { return C3Types.KW_USZ; } // fall through - case 295: break; + case 298: break; case 106: - { return C3Types.KW_BOOL; + { return C3Types.KW_VAR; } // fall through - case 296: break; + case 299: break; case 107: - { return C3Types.KW_CASE; + { return C3Types.CT_OR; } // fall through - case 297: break; + case 300: break; case 108: - { return C3Types.KW_CHAR; + { return C3Types.KW_CT_FOR; } // fall through - case 298: break; + case 301: break; case 109: - { return C3Types.KW_ELSE; + { return C3Types.KW_BOOL; } // fall through - case 299: break; + case 302: break; case 110: - { return C3Types.KW_ENUM; + { return C3Types.KW_CASE; } // fall through - case 300: break; + case 303: break; case 111: - { return C3Types.KW_IPTR; + { return C3Types.KW_CHAR; } // fall through - case 301: break; + case 304: break; case 112: - { return C3Types.KW_LONG; + { return C3Types.KW_ELSE; } // fall through - case 302: break; + case 305: break; case 113: - { return C3Types.KW_NULL; + { return C3Types.KW_ENUM; } // fall through - case 303: break; + case 306: break; case 114: - { return C3Types.KW_TRUE; + { return C3Types.KW_IPTR; } // fall through - case 304: break; + case 307: break; case 115: - { return C3Types.KW_UINT; + { return C3Types.KW_LONG; } // fall through - case 305: break; + case 308: break; case 116: - { return C3Types.KW_UPTR; + { return C3Types.KW_NULL; } // fall through - case 306: break; + case 309: break; case 117: - { return C3Types.KW_VOID; + { return C3Types.KW_TRUE; } // fall through - case 307: break; + case 310: break; case 118: - { return C3Types.KW_CT_CASE; + { return C3Types.KW_UINT; } // fall through - case 308: break; + case 311: break; case 119: - { return C3Types.KW_CT_ECHO; + { return C3Types.KW_UPTR; } // fall through - case 309: break; + case 312: break; case 120: - { return C3Types.KW_CT_ELSE; + { return C3Types.KW_VOID; } // fall through - case 310: break; + case 313: break; case 121: - { return C3Types.KW_CT_EVAL; + { return C3Types.KW_CT_CASE; } // fall through - case 311: break; + case 314: break; case 122: - { return C3Types.KW_BREAK; + { return C3Types.KW_CT_ECHO; } // fall through - case 312: break; + case 315: break; case 123: - { return C3Types.KW_CATCH; + { return C3Types.KW_CT_ELSE; } // fall through - case 313: break; + case 316: break; case 124: - { return C3Types.KW_CONST; + { return C3Types.KW_CT_EVAL; } // fall through - case 314: break; + case 317: break; case 125: - { return C3Types.KW_DEFER; + { return C3Types.KW_BREAK; } // fall through - case 315: break; + case 318: break; case 126: - { return C3Types.KW_FALSE; + { return C3Types.KW_CATCH; } // fall through - case 316: break; + case 319: break; case 127: - { return C3Types.KW_FAULT; + { return C3Types.KW_CONST; } // fall through - case 317: break; + case 320: break; case 128: - { return C3Types.KW_FLOAT; + { return C3Types.KW_DEFER; } // fall through - case 318: break; + case 321: break; case 129: - { return C3Types.KW_ICHAR; + { return C3Types.KW_FALSE; } // fall through - case 319: break; + case 322: break; case 130: - { return C3Types.KW_MACRO; + { return C3Types.KW_FAULT; } // fall through - case 320: break; + case 323: break; case 131: - { return C3Types.KW_SHORT; + { return C3Types.KW_FLOAT; } // fall through - case 321: break; + case 324: break; case 132: - { return C3Types.KW_ULONG; + { return C3Types.KW_ICHAR; } // fall through - case 322: break; + case 325: break; case 133: - { return C3Types.KW_UNION; + { return C3Types.KW_MACRO; } // fall through - case 323: break; + case 326: break; case 134: - { return C3Types.KW_WHILE; + { return C3Types.KW_SHORT; } // fall through - case 324: break; + case 327: break; case 135: - { return C3Types.KW_CT_ENDIF; + { return C3Types.KW_ULONG; } // fall through - case 325: break; + case 328: break; case 136: - { return C3Types.KW_CT_ERROR; + { return C3Types.KW_UNION; } // fall through - case 326: break; + case 329: break; case 137: - { return C3Types.KW_CT_VAARG; + { return C3Types.KW_WHILE; } // fall through - case 327: break; + case 330: break; case 138: - { return C3Types.KW_CT_VAREF; + { return C3Types.KW_CT_ENDIF; } // fall through - case 328: break; + case 331: break; case 139: - { return C3Types.KW_ASSERT; + { return C3Types.KW_CT_ERROR; } // fall through - case 329: break; + case 332: break; case 140: - { return C3Types.KW_DOUBLE; + { return C3Types.KW_CT_VAARG; } // fall through - case 330: break; + case 333: break; case 141: - { return C3Types.KW_EXTERN; + { return C3Types.KW_CT_VAREF; } // fall through - case 331: break; + case 334: break; case 142: - { return C3Types.KW_IMPORT; + { return C3Types.KW_ASSERT; } // fall through - case 332: break; + case 335: break; case 143: - { return C3Types.KW_INLINE; + { return C3Types.KW_DOUBLE; } // fall through - case 333: break; + case 336: break; case 144: - { return C3Types.KW_INT128; + { return C3Types.KW_EXTERN; } // fall through - case 334: break; + case 337: break; case 145: - { return C3Types.KW_MODULE; + { return C3Types.KW_IMPORT; } // fall through - case 335: break; + case 338: break; case 146: - { return C3Types.KW_RETURN; + { return C3Types.KW_INLINE; } // fall through - case 336: break; + case 339: break; case 147: - { return C3Types.KW_STATIC; + { return C3Types.KW_INT128; } // fall through - case 337: break; + case 340: break; case 148: - { return C3Types.KW_STRUCT; + { return C3Types.KW_MODULE; } // fall through - case 338: break; + case 341: break; case 149: - { return C3Types.KW_SWITCH; + { return C3Types.KW_RETURN; } // fall through - case 339: break; + case 342: break; case 150: - { return C3Types.KW_TLOCAL; + { return C3Types.KW_STATIC; } // fall through - case 340: break; + case 343: break; case 151: - { return C3Types.KW_TYPEID; + { return C3Types.KW_STRUCT; } // fall through - case 341: break; + case 344: break; case 152: - { return C3Types.KW_USHORT; + { return C3Types.KW_SWITCH; } // fall through - case 342: break; + case 345: break; case 153: - { return C3Types.KW_CT_ASSERT; + { return C3Types.KW_TLOCAL; } // fall through - case 343: break; + case 346: break; case 154: - { return C3Types.KW_CT_ENDFOR; + { return C3Types.KW_TYPEID; } // fall through - case 344: break; + case 347: break; case 155: - { return C3Types.KW_CT_NAMEOF; + { return C3Types.KW_USHORT; } // fall through - case 345: break; + case 348: break; case 156: - { return C3Types.KW_CT_SIZEOF; + { return C3Types.KW_CT_ASSERT; } // fall through - case 346: break; + case 349: break; case 157: - { return C3Types.KW_CT_SWITCH; + { return C3Types.KW_CT_ENDFOR; } // fall through - case 347: break; + case 350: break; case 158: - { return C3Types.KW_CT_TYPEOF; + { return C3Types.KW_CT_NAMEOF; } // fall through - case 348: break; + case 351: break; case 159: - { return C3Types.KW_CT_VAEXPR; + { return C3Types.KW_CT_SIZEOF; } // fall through - case 349: break; + case 352: break; case 160: - { return C3Types.KW_CT_VATYPE; + { return C3Types.KW_CT_SWITCH; } // fall through - case 350: break; + case 353: break; case 161: - { return C3Types.KW_DEFAULT; + { return C3Types.KW_CT_TYPEOF; } // fall through - case 351: break; + case 354: break; case 162: - { return C3Types.KW_FLOAT16; + { return C3Types.KW_CT_VAEXPR; } // fall through - case 352: break; + case 355: break; case 163: - { return C3Types.KW_FOREACH; + { return C3Types.KW_CT_VATYPE; } // fall through - case 353: break; + case 356: break; case 164: - { return C3Types.KW_UINT128; + { return C3Types.KW_DEFAULT; } // fall through - case 354: break; + case 357: break; case 165: - { return C3Types.KW_CT_ALIGNOF; + { return C3Types.KW_FLOAT16; } // fall through - case 355: break; + case 358: break; case 166: - { return C3Types.KW_CT_DEFAULT; + { return C3Types.KW_FOREACH; } // fall through - case 356: break; + case 359: break; case 167: - { return C3Types.KW_CT_DEFINED; + { return C3Types.KW_UINT128; } // fall through - case 357: break; + case 360: break; case 168: - { return C3Types.KW_CT_FEATURE; + { return C3Types.KW_CT_ALIGNOF; } // fall through - case 358: break; + case 361: break; case 169: - { return C3Types.KW_CT_FOREACH; + { return C3Types.KW_CT_DEFAULT; } // fall through - case 359: break; + case 362: break; case 170: - { return C3Types.KW_CT_INCLUDE; + { return C3Types.KW_CT_DEFINED; } // fall through - case 360: break; + case 363: break; case 171: - { return C3Types.KW_CT_QNAMEOF; + { return C3Types.KW_CT_FEATURE; } // fall through - case 361: break; + case 364: break; case 172: - { return C3Types.KW_CT_VACONST; + { return C3Types.KW_CT_FOREACH; } // fall through - case 362: break; + case 365: break; case 173: - { return C3Types.KW_CT_VACOUNT; + { return C3Types.KW_CT_INCLUDE; } // fall through - case 363: break; + case 366: break; case 174: - { return C3Types.KW_CT_VASPLAT; + { return C3Types.KW_CT_QNAMEOF; } // fall through - case 364: break; + case 367: break; case 175: - { return C3Types.KW_ANYFAULT; + { return C3Types.KW_CT_VACONST; } // fall through - case 365: break; + case 368: break; case 176: - { return C3Types.KW_BFLOAT16; + { return C3Types.KW_CT_VACOUNT; } // fall through - case 366: break; + case 369: break; case 177: - { return C3Types.KW_CONTINUE; + { return C3Types.KW_CT_VASPLAT; } // fall through - case 367: break; + case 370: break; case 178: - { return C3Types.KW_DISTINCT; + { return C3Types.KW_ANYFAULT; } // fall through - case 368: break; + case 371: break; case 179: - { return C3Types.KW_FLOAT128; + { return C3Types.KW_BFLOAT16; } // fall through - case 369: break; + case 372: break; case 180: - { return C3Types.KW_NEXTCASE; + { return C3Types.KW_CONTINUE; } // fall through - case 370: break; + case 373: break; case 181: - { return C3Types.KW_CT_EVALTYPE; + { return C3Types.KW_DISTINCT; } // fall through - case 371: break; + case 374: break; case 182: - { return C3Types.KW_CT_IS_CONST; + { return C3Types.KW_FLOAT128; } // fall through - case 372: break; + case 375: break; case 183: - { return C3Types.KW_CT_TYPEFROM; + { return C3Types.KW_NEXTCASE; } // fall through - case 373: break; + case 376: break; case 184: - { return C3Types.KW_BITSTRUCT; + { return C3Types.KW_CT_EVALTYPE; } // fall through - case 374: break; + case 377: break; case 185: - { return C3Types.KW_FOREACH_R; + { return C3Types.KW_CT_IS_CONST; } // fall through - case 375: break; + case 378: break; case 186: - { return C3Types.KW_INTERFACE; + { return C3Types.KW_CT_TYPEFROM; } // fall through - case 376: break; + case 379: break; case 187: - { return C3Types.KW_CT_ENDSWITCH; + { return C3Types.KW_BITSTRUCT; } // fall through - case 377: break; + case 380: break; case 188: - { return C3Types.KW_CT_EXTNAMEOF; + { return C3Types.KW_FOREACH_R; } // fall through - case 378: break; + case 381: break; case 189: - { return C3Types.KW_CT_STRINGIFY; + { return C3Types.KW_INTERFACE; } // fall through - case 379: break; + case 382: break; case 190: + { return C3Types.KW_CT_ENDSWITCH; + } + // fall through + case 383: break; + case 191: + { return C3Types.KW_CT_EXTNAMEOF; + } + // fall through + case 384: break; + case 192: + { return C3Types.KW_CT_STRINGIFY; + } + // fall through + case 385: break; + case 193: { return C3Types.KW_CT_ENDFOREACH; } // fall through - case 380: break; + case 386: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/gen/org/c3lang/intellij/parser/C3Parser.java b/src/main/gen/org/c3lang/intellij/parser/C3Parser.java index 96cb19c..5fea2a2 100644 --- a/src/main/gen/org/c3lang/intellij/parser/C3Parser.java +++ b/src/main/gen/org/c3lang/intellij/parser/C3Parser.java @@ -439,7 +439,7 @@ private static boolean asm_block_stmt_1_1_2(PsiBuilder b, int l) { /* ********************************************************** */ // CT_IDENT | CT_CONST_IDENT | AMP? IDENT | CONST_IDENT - // | FLOAT_LITERAL | INT_LITERAL | grouped_expression | LBT asm_addr RBT + // | MINUS? FLOAT_LITERAL | MINUS? INT_LITERAL | grouped_expression | LBT asm_addr RBT public static boolean asm_expr(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "asm_expr")) return false; boolean r; @@ -448,8 +448,8 @@ public static boolean asm_expr(PsiBuilder b, int l) { if (!r) r = consumeToken(b, CT_CONST_IDENT); if (!r) r = asm_expr_2(b, l + 1); if (!r) r = consumeToken(b, CONST_IDENT); - if (!r) r = consumeToken(b, FLOAT_LITERAL); - if (!r) r = consumeToken(b, INT_LITERAL); + if (!r) r = asm_expr_4(b, l + 1); + if (!r) r = asm_expr_5(b, l + 1); if (!r) r = grouped_expression(b, l + 1); if (!r) r = asm_expr_7(b, l + 1); exit_section_(b, l, m, r, false, null); @@ -474,6 +474,42 @@ private static boolean asm_expr_2_0(PsiBuilder b, int l) { return true; } + // MINUS? FLOAT_LITERAL + private static boolean asm_expr_4(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "asm_expr_4")) return false; + boolean r; + Marker m = enter_section_(b); + r = asm_expr_4_0(b, l + 1); + r = r && consumeToken(b, FLOAT_LITERAL); + exit_section_(b, m, null, r); + return r; + } + + // MINUS? + private static boolean asm_expr_4_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "asm_expr_4_0")) return false; + consumeToken(b, MINUS); + return true; + } + + // MINUS? INT_LITERAL + private static boolean asm_expr_5(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "asm_expr_5")) return false; + boolean r; + Marker m = enter_section_(b); + r = asm_expr_5_0(b, l + 1); + r = r && consumeToken(b, INT_LITERAL); + exit_section_(b, m, null, r); + return r; + } + + // MINUS? + private static boolean asm_expr_5_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "asm_expr_5_0")) return false; + consumeToken(b, MINUS); + return true; + } + // LBT asm_addr RBT private static boolean asm_expr_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "asm_expr_7")) return false; @@ -5776,13 +5812,18 @@ private static boolean string_expr_0(PsiBuilder b, int l) { return r; } - // BYTES + // BYTES+ public static boolean bytes_expr(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bytes_expr")) return false; if (!nextTokenIsSmart(b, BYTES)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokenSmart(b, BYTES); + while (r) { + int c = current_position_(b); + if (!consumeTokenSmart(b, BYTES)) break; + if (!empty_element_parsed_guard_(b, "bytes_expr", c)) break; + } exit_section_(b, m, BYTES_EXPR, r); return r; } diff --git a/src/main/java/org/c3lang/intellij/C3.bnf b/src/main/java/org/c3lang/intellij/C3.bnf index 6bf7312..fc8e2e3 100644 --- a/src/main/java/org/c3lang/intellij/C3.bnf +++ b/src/main/java/org/c3lang/intellij/C3.bnf @@ -274,7 +274,7 @@ asm_stmt ::= asm_instr asm_exprs? EOS asm_instr ::= (KW_INT | IDENT) (DOT IDENT)? asm_exprs ::= asm_expr (COMMA asm_expr)* asm_expr ::= CT_IDENT | CT_CONST_IDENT | AMP? IDENT | CONST_IDENT - | FLOAT_LITERAL | INT_LITERAL | grouped_expression | LBT asm_addr RBT + | MINUS? FLOAT_LITERAL | MINUS? INT_LITERAL | grouped_expression | LBT asm_addr RBT asm_addr ::= asm_expr (add_bin_op asm_expr asm_addr_trailing?)? asm_addr_trailing ::= STAR INT_LITERAL (add_bin_op INT_LITERAL)? | (shift_bin_op | add_bin_op) INT_LITERAL @@ -329,7 +329,7 @@ path_ident_expr ::= path_ident path_const_expr ::= path_const path_at_ident_expr ::= path_at_ident string_expr ::= STRING_LIT+ | CHAR_LIT -bytes_expr ::= BYTES +bytes_expr ::= BYTES+ compound_init_expr ::= type initializer_list grouped_expr ::= LP expr RP local_ident_expr ::= CT_IDENT | HASH_IDENT diff --git a/src/main/java/org/c3lang/intellij/C3.flex b/src/main/java/org/c3lang/intellij/C3.flex index 7391b4d..87885fa 100644 --- a/src/main/java/org/c3lang/intellij/C3.flex +++ b/src/main/java/org/c3lang/intellij/C3.flex @@ -74,7 +74,7 @@ HEX_FLOAT_LIT = "0"[xX]{HINT}("."{HINT})?{P} LINE_COMMENT = "//" .* -%state IN_COMMENT, IN_RAW_STRING, IN_STRING, IN_CHAR, IN_BYTES_STRING, IN_BYTES_CHAR, IN_BYTES_RAW_STRING +%state IN_COMMENT, IN_RAW_STRING, IN_DOC_COMMENT, IN_STRING, IN_CHAR, IN_BYTES_STRING, IN_BYTES_CHAR, IN_BYTES_RAW_STRING %% @@ -285,6 +285,7 @@ LINE_COMMENT = "//" .* "\"" { yybegin(IN_STRING); } "`" { yybegin(IN_RAW_STRING); } "'" { yybegin(IN_CHAR); } + "<*" { yybegin(IN_DOC_COMMENT); return C3ParserDefinition.DOC_COMMENT; } "/*" { yybegin(IN_COMMENT); commentNesting = 1; return C3ParserDefinition.BLOCK_COMMENT; } } @@ -339,9 +340,14 @@ LINE_COMMENT = "//" .* { "*/" { if (--commentNesting == 0) { yybegin(YYINITIAL); return C3ParserDefinition.BLOCK_COMMENT; } } "/*" { commentNesting++; return C3ParserDefinition.BLOCK_COMMENT; } - [^*/\n]+ { return C3ParserDefinition.BLOCK_COMMENT; } - "*"|[/] { return C3ParserDefinition.BLOCK_COMMENT; } - [\n] { return C3ParserDefinition.BLOCK_COMMENT; } + [^\*/\n]+ { return C3ParserDefinition.BLOCK_COMMENT; } + [^] { return C3ParserDefinition.BLOCK_COMMENT; } +} + + { + "*>" { yybegin(YYINITIAL); return C3ParserDefinition.DOC_COMMENT; } + [^\*\n]+ { return C3ParserDefinition.DOC_COMMENT; } + [\*\n] { return C3ParserDefinition.DOC_COMMENT; } } [^] { return TokenType.BAD_CHARACTER; }