diff --git a/php/php.api.phpmodule/manifest.mf b/php/php.api.phpmodule/manifest.mf
index 8f8d64e0f95e..dc444c32a336 100644
--- a/php/php.api.phpmodule/manifest.mf
+++ b/php/php.api.phpmodule/manifest.mf
@@ -1,4 +1,4 @@
Manifest-Version: 1.0
OpenIDE-Module: org.netbeans.modules.php.api.phpmodule
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/api/phpmodule/resources/Bundle.properties
-OpenIDE-Module-Specification-Version: 2.80
+OpenIDE-Module-Specification-Version: 2.81
diff --git a/php/php.api.phpmodule/src/org/netbeans/modules/php/api/PhpVersion.java b/php/php.api.phpmodule/src/org/netbeans/modules/php/api/PhpVersion.java
index e894d18167e5..9f0893ab3a90 100644
--- a/php/php.api.phpmodule/src/org/netbeans/modules/php/api/PhpVersion.java
+++ b/php/php.api.phpmodule/src/org/netbeans/modules/php/api/PhpVersion.java
@@ -209,6 +209,17 @@ public boolean hasMixedType() {
return this.compareTo(PhpVersion.PHP_80) >= 0;
}
+ /**
+ * Check whether this version supports the never type.
+ *
+ * @return {@code true} if this version supports never type, {@code false}
+ * otherwise
+ * @since 2.81
+ */
+ public boolean hasNeverType() {
+ return this.compareTo(PhpVersion.PHP_81) >= 0;
+ }
+
/**
* Check whether this is supported version yet by PHP official.
*
diff --git a/php/php.editor/nbproject/project.properties b/php/php.editor/nbproject/project.properties
index 0adbe82d2750..d6a2322f8b5f 100644
--- a/php/php.editor/nbproject/project.properties
+++ b/php/php.editor/nbproject/project.properties
@@ -20,7 +20,7 @@ build.compiler=extJavac
nbjavac.ignore.missing.enclosing=**/CUP$ASTPHP5Parser$actions.class
javac.compilerargs=-J-Xmx512m
nbm.needs.restart=true
-spec.version.base=2.8.0
+spec.version.base=2.9.0
release.external/predefined_vars-1.0.zip=docs/predefined_vars.zip
sigtest.gen.fail.on.error=false
diff --git a/php/php.editor/nbproject/project.xml b/php/php.editor/nbproject/project.xml
index 122a319b22fa..c4706d247dd9 100644
--- a/php/php.editor/nbproject/project.xml
+++ b/php/php.editor/nbproject/project.xml
@@ -304,7 +304,7 @@
- 2.80
+ 2.81
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java b/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java
index 405bb6553e33..2e400f3018ff 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java
@@ -1157,6 +1157,7 @@ private static boolean isType(Token token) {
|| id == PHPTokenId.PHP_TYPE_INT
|| id == PHPTokenId.PHP_TYPE_STRING
|| id == PHPTokenId.PHP_TYPE_VOID
+ || id == PHPTokenId.PHP_TYPE_NEVER
|| id == PHPTokenId.PHP_TYPE_OBJECT
|| id == PHPTokenId.PHP_TYPE_MIXED
|| id == PHPTokenId.PHP_SELF
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java
index 1c24d79f4dd6..18786dafef5f 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java
@@ -534,8 +534,10 @@ public CodeCompletionResult complete(CodeCompletionContext completionContext) {
typesForReturnTypeName.remove(Type.FALSE);
typesForReturnTypeName.remove(Type.NULL);
typesForReturnTypeName.remove(Type.VOID);
+ typesForReturnTypeName.remove(Type.NEVER);
} else if (context == CompletionContext.RETURN_UNION_TYPE_NAME) {
typesForReturnTypeName.remove(Type.VOID);
+ typesForReturnTypeName.remove(Type.NEVER);
typesForReturnTypeName.remove(Type.MIXED);
}
autoCompleteKeywords(completionResult, request, typesForReturnTypeName);
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHP5ColoringLexer.java b/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHP5ColoringLexer.java
index 6b1a92ff011a..d19413ee8ccc 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHP5ColoringLexer.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHP5ColoringLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 21/01/27 20:27 */
+/* The following code was generated by JFlex 1.4.3 on 21/11/19 13:21 */
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -31,7 +31,7 @@
/**
* This class is a scanner generated by
* JFlex 1.4.3
- * on 21/01/27 20:27 from the specification file
+ * on 21/11/19 13:21 from the specification file
* /home/junichi11/NetBeansProjects/netbeans/php/php.editor/tools/Php5ColoringScanner.flex
*/
public class PHP5ColoringLexer {
@@ -186,7 +186,7 @@ public class PHP5ColoringLexer {
private static final String ZZ_ACTION_PACKED_0 =
"\27\0\2\1\1\2\1\3\1\4\1\5\1\4\1\6"+
"\1\3\4\4\1\7\1\5\1\10\1\5\1\11\1\12"+
- "\1\13\1\14\14\6\1\5\24\4\1\2\1\5\1\15"+
+ "\1\13\1\14\14\6\1\5\25\4\1\2\1\5\1\15"+
"\1\16\3\4\1\5\1\4\1\17\1\20\1\21\1\22"+
"\2\21\1\20\3\21\4\23\1\24\1\23\3\25\1\21"+
"\1\2\1\21\1\26\1\27\1\26\1\30\1\2\1\31"+
@@ -197,7 +197,7 @@ public class PHP5ColoringLexer {
"\1\3\1\0\6\4\1\54\2\0\2\4\1\55\2\4"+
"\1\0\1\4\1\0\1\56\2\0\1\21\2\0\2\6"+
"\1\0\1\57\1\16\1\60\1\0\1\61\1\62\4\4"+
- "\1\63\4\4\1\64\1\4\1\65\35\4\13\0\1\66"+
+ "\1\63\4\4\1\64\1\4\1\65\36\4\13\0\1\66"+
"\2\4\1\67\3\0\2\70\2\71\1\72\1\73\1\71"+
"\3\0\1\70\2\71\1\74\1\0\1\75\3\0\1\76"+
"\1\0\1\27\1\0\1\30\3\0\1\77\1\0\1\31"+
@@ -205,35 +205,35 @@ public class PHP5ColoringLexer {
"\1\70\1\0\1\103\1\0\1\104\1\105\1\44\1\106"+
"\5\0\1\107\3\0\1\110\2\0\10\4\1\0\7\4"+
"\2\3\1\111\3\4\1\0\1\4\3\0\1\112\4\4"+
- "\1\113\4\4\1\114\3\4\1\115\5\4\1\116\13\4"+
+ "\1\113\4\4\1\114\3\4\1\115\6\4\1\116\13\4"+
"\1\117\16\4\1\120\12\0\2\4\3\121\1\122\1\123"+
"\1\0\1\124\1\0\1\76\1\77\1\125\1\126\1\127"+
"\1\44\10\0\11\4\1\130\6\4\1\131\1\132\1\133"+
- "\6\4\4\0\1\134\5\4\1\135\11\4\1\136\2\4"+
+ "\6\4\4\0\1\134\5\4\1\135\12\4\1\136\2\4"+
"\1\137\1\4\1\140\3\4\1\141\1\4\1\142\1\143"+
"\4\4\1\144\12\4\12\0\2\4\1\123\1\44\1\145"+
"\3\0\1\146\1\0\14\4\1\147\3\4\1\150\1\4"+
"\1\151\1\152\1\4\1\153\2\154\3\0\3\4\1\155"+
- "\10\4\1\156\1\4\1\157\1\160\1\161\6\4\1\162"+
- "\1\163\1\4\1\164\1\165\1\166\1\167\1\4\1\170"+
- "\3\4\1\171\10\0\1\172\1\0\1\173\1\174\1\44"+
- "\1\0\1\107\3\0\12\4\1\175\3\4\1\176\3\4"+
- "\3\0\1\177\13\4\1\200\1\201\1\202\1\203\1\204"+
- "\4\4\1\205\1\206\5\0\1\44\1\207\1\1\3\4"+
- "\1\210\5\4\1\211\4\4\1\212\1\213\1\4\2\214"+
- "\1\0\1\215\2\4\1\216\1\217\3\4\1\220\5\4"+
- "\1\221\3\0\1\44\1\0\1\222\3\4\1\223\6\4"+
- "\1\224\1\225\1\0\1\4\1\226\5\4\1\227\1\4"+
- "\1\230\1\231\1\4\1\0\1\44\1\0\2\4\1\232"+
- "\1\233\4\4\1\234\1\50\1\4\1\235\1\236\1\237"+
- "\3\4\1\240\1\0\1\44\1\0\2\4\1\241\1\4"+
- "\1\242\1\243\1\4\1\244\1\4\1\245\1\246\1\44"+
- "\1\0\5\4\1\0\1\247\2\4\1\250\1\251\1\0"+
- "\1\252\1\4\1\0\1\4\1\0\1\253\14\0\1\254"+
- "\1\0";
+ "\10\4\1\156\1\4\1\157\1\160\1\161\1\162\6\4"+
+ "\1\163\1\164\1\4\1\165\1\166\1\167\1\170\1\4"+
+ "\1\171\3\4\1\172\10\0\1\173\1\0\1\174\1\175"+
+ "\1\44\1\0\1\107\3\0\12\4\1\176\3\4\1\177"+
+ "\3\4\3\0\1\200\13\4\1\201\1\202\1\203\1\204"+
+ "\1\205\4\4\1\206\1\207\5\0\1\44\1\210\1\1"+
+ "\3\4\1\211\5\4\1\212\4\4\1\213\1\214\1\4"+
+ "\2\215\1\0\1\216\2\4\1\217\1\220\3\4\1\221"+
+ "\5\4\1\222\3\0\1\44\1\0\1\223\3\4\1\224"+
+ "\6\4\1\225\1\226\1\0\1\4\1\227\5\4\1\230"+
+ "\1\4\1\231\1\232\1\4\1\0\1\44\1\0\2\4"+
+ "\1\233\1\234\4\4\1\235\1\50\1\4\1\236\1\237"+
+ "\1\240\3\4\1\241\1\0\1\44\1\0\2\4\1\242"+
+ "\1\4\1\243\1\244\1\4\1\245\1\4\1\246\1\247"+
+ "\1\44\1\0\5\4\1\0\1\250\2\4\1\251\1\252"+
+ "\1\0\1\253\1\4\1\0\1\4\1\0\1\254\14\0"+
+ "\1\255\1\0";
private static int [] zzUnpackAction() {
- int [] result = new int[790];
+ int [] result = new int[795];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -267,99 +267,100 @@ private static int zzUnpackAction(String packed, int offset, int [] result) {
"\0\u0e47\0\u0e9c\0\u0ef1\0\u0f46\0\u0f9b\0\u0ff0\0\u1045\0\u084d"+
"\0\u109a\0\u10ef\0\u1144\0\u1199\0\u11ee\0\u1243\0\u1298\0\u12ed"+
"\0\u1342\0\u1397\0\u13ec\0\u1441\0\u1496\0\u14eb\0\u1540\0\u1595"+
- "\0\u15ea\0\u163f\0\u1694\0\u16e9\0\u173e\0\u1793\0\u17e8\0\u084d"+
- "\0\u183d\0\u1892\0\u18e7\0\u193c\0\u1991\0\u19e6\0\u084d\0\u1a3b"+
- "\0\u1a90\0\u084d\0\u1ae5\0\u1b3a\0\u1b8f\0\u1be4\0\u1c39\0\u1c8e"+
- "\0\u084d\0\u1ce3\0\u1d38\0\u1d8d\0\u1de2\0\u1e37\0\u1e8c\0\u1ee1"+
- "\0\u1f36\0\u1f8b\0\u1fe0\0\u1d38\0\u084d\0\u2035\0\u208a\0\u20df"+
- "\0\u2134\0\u2189\0\u21de\0\u2233\0\u2288\0\u084d\0\u22dd\0\u2332"+
- "\0\u2387\0\u23dc\0\u2431\0\u23dc\0\u084d\0\u2486\0\u24db\0\u2530"+
- "\0\u084d\0\u084d\0\u2585\0\u25da\0\u084d\0\u262f\0\u084d\0\u084d"+
- "\0\u2684\0\u084d\0\u26d9\0\u272e\0\u2783\0\u27d8\0\u282d\0\u084d"+
- "\0\u2882\0\u28d7\0\u292c\0\u2981\0\u084d\0\u29d6\0\u06a4\0\u084d"+
- "\0\u2a2b\0\u2a80\0\u2ad5\0\u2b2a\0\u2b7f\0\u2bd4\0\u2c29\0\u2c7e"+
+ "\0\u15ea\0\u163f\0\u1694\0\u16e9\0\u173e\0\u1793\0\u17e8\0\u183d"+
+ "\0\u084d\0\u1892\0\u18e7\0\u193c\0\u1991\0\u19e6\0\u1a3b\0\u084d"+
+ "\0\u1a90\0\u1ae5\0\u084d\0\u1b3a\0\u1b8f\0\u1be4\0\u1c39\0\u1c8e"+
+ "\0\u1ce3\0\u084d\0\u1d38\0\u1d8d\0\u1de2\0\u1e37\0\u1e8c\0\u1ee1"+
+ "\0\u1f36\0\u1f8b\0\u1fe0\0\u2035\0\u1d8d\0\u084d\0\u208a\0\u20df"+
+ "\0\u2134\0\u2189\0\u21de\0\u2233\0\u2288\0\u22dd\0\u084d\0\u2332"+
+ "\0\u2387\0\u23dc\0\u2431\0\u2486\0\u2431\0\u084d\0\u24db\0\u2530"+
+ "\0\u2585\0\u084d\0\u084d\0\u25da\0\u262f\0\u084d\0\u2684\0\u084d"+
+ "\0\u084d\0\u26d9\0\u084d\0\u272e\0\u2783\0\u27d8\0\u282d\0\u2882"+
+ "\0\u084d\0\u28d7\0\u292c\0\u2981\0\u29d6\0\u084d\0\u2a2b\0\u06a4"+
+ "\0\u084d\0\u2a80\0\u2ad5\0\u2b2a\0\u2b7f\0\u2bd4\0\u2c29\0\u2c7e"+
"\0\u2cd3\0\u2d28\0\u2d7d\0\u2dd2\0\u2e27\0\u2e7c\0\u2ed1\0\u2f26"+
- "\0\u2f7b\0\u2fd0\0\u3025\0\u307a\0\u30cf\0\u3124\0\u084d\0\u3179"+
- "\0\u31ce\0\u3223\0\u3278\0\u0b9f\0\u32cd\0\u3322\0\u3377\0\u33cc"+
- "\0\u1793\0\u3421\0\u0c9e\0\u3476\0\u084d\0\u34cb\0\u3520\0\u3575"+
- "\0\u35ca\0\u361f\0\u3674\0\u084d\0\u36c9\0\u371e\0\u3773\0\u0b9f"+
- "\0\u37c8\0\u381d\0\u3872\0\u38c7\0\u0b9f\0\u391c\0\u3971\0\u39c6"+
- "\0\u3a1b\0\u0b9f\0\u3a70\0\u0b9f\0\u3ac5\0\u3b1a\0\u3b6f\0\u3bc4"+
+ "\0\u2f7b\0\u2fd0\0\u3025\0\u307a\0\u30cf\0\u3124\0\u3179\0\u084d"+
+ "\0\u31ce\0\u3223\0\u3278\0\u32cd\0\u0b9f\0\u3322\0\u3377\0\u33cc"+
+ "\0\u3421\0\u17e8\0\u3476\0\u0c9e\0\u34cb\0\u084d\0\u3520\0\u3575"+
+ "\0\u35ca\0\u361f\0\u3674\0\u36c9\0\u084d\0\u371e\0\u3773\0\u37c8"+
+ "\0\u0b9f\0\u381d\0\u3872\0\u38c7\0\u391c\0\u0b9f\0\u3971\0\u39c6"+
+ "\0\u3a1b\0\u3a70\0\u0b9f\0\u3ac5\0\u0b9f\0\u3b1a\0\u3b6f\0\u3bc4"+
"\0\u3c19\0\u3c6e\0\u3cc3\0\u3d18\0\u3d6d\0\u3dc2\0\u3e17\0\u3e6c"+
"\0\u3ec1\0\u3f16\0\u3f6b\0\u3fc0\0\u4015\0\u406a\0\u40bf\0\u4114"+
"\0\u4169\0\u41be\0\u4213\0\u4268\0\u42bd\0\u4312\0\u4367\0\u43bc"+
- "\0\u4411\0\u4466\0\u44bb\0\u4510\0\u17e8\0\u4565\0\u45ba\0\u460f"+
- "\0\u4664\0\u46b9\0\u470e\0\u4763\0\u084d\0\u47b8\0\u480d\0\u084d"+
- "\0\u4862\0\u1ae5\0\u48b7\0\u490c\0\u4961\0\u4862\0\u084d\0\u084d"+
- "\0\u084d\0\u48b7\0\u49b6\0\u1c39\0\u4a0b\0\u4a60\0\u49b6\0\u4a0b"+
- "\0\u084d\0\u4ab5\0\u084d\0\u4b0a\0\u4b5f\0\u4bb4\0\u4c09\0\u4c5e"+
- "\0\u084d\0\u208a\0\u084d\0\u2134\0\u21de\0\u2189\0\u4cb3\0\u4d08"+
- "\0\u4d5d\0\u22dd\0\u084d\0\u2332\0\u084d\0\u2431\0\u084d\0\u4db2"+
- "\0\u2585\0\u4e07\0\u084d\0\u4e5c\0\u4eb1\0\u4f06\0\u084d\0\u4f5b"+
- "\0\u084d\0\u084d\0\u4fb0\0\u5005\0\u505a\0\u50af\0\u5104\0\u2b2a"+
- "\0\u5159\0\u084d\0\u51ae\0\u5203\0\u5258\0\u084d\0\u52ad\0\u5302"+
+ "\0\u4411\0\u4466\0\u44bb\0\u4510\0\u4565\0\u45ba\0\u183d\0\u460f"+
+ "\0\u4664\0\u46b9\0\u470e\0\u4763\0\u47b8\0\u480d\0\u084d\0\u4862"+
+ "\0\u48b7\0\u084d\0\u490c\0\u1b3a\0\u4961\0\u49b6\0\u4a0b\0\u490c"+
+ "\0\u084d\0\u084d\0\u084d\0\u4961\0\u4a60\0\u1c8e\0\u4ab5\0\u4b0a"+
+ "\0\u4a60\0\u4ab5\0\u084d\0\u4b5f\0\u084d\0\u4bb4\0\u4c09\0\u4c5e"+
+ "\0\u4cb3\0\u4d08\0\u084d\0\u20df\0\u084d\0\u2189\0\u2233\0\u21de"+
+ "\0\u4d5d\0\u4db2\0\u4e07\0\u2332\0\u084d\0\u2387\0\u084d\0\u2486"+
+ "\0\u084d\0\u4e5c\0\u25da\0\u4eb1\0\u084d\0\u4f06\0\u4f5b\0\u4fb0"+
+ "\0\u084d\0\u5005\0\u084d\0\u084d\0\u505a\0\u50af\0\u5104\0\u5159"+
+ "\0\u51ae\0\u2b7f\0\u5203\0\u084d\0\u5258\0\u52ad\0\u5302\0\u084d"+
"\0\u5357\0\u53ac\0\u5401\0\u5456\0\u54ab\0\u5500\0\u5555\0\u55aa"+
"\0\u55ff\0\u5654\0\u56a9\0\u56fe\0\u5753\0\u57a8\0\u57fd\0\u5852"+
"\0\u58a7\0\u58fc\0\u5951\0\u59a6\0\u59fb\0\u5a50\0\u5aa5\0\u5afa"+
- "\0\u5b4f\0\u5ba4\0\u5bf9\0\u084d\0\u5c4e\0\u5ca3\0\u5cf8\0\u5d4d"+
- "\0\u0b9f\0\u5da2\0\u5df7\0\u5e4c\0\u5ea1\0\u0b9f\0\u5ef6\0\u5f4b"+
- "\0\u5fa0\0\u5ef6\0\u5ff5\0\u604a\0\u609f\0\u60f4\0\u6149\0\u0b9f"+
- "\0\u619e\0\u61f3\0\u6248\0\u629d\0\u62f2\0\u6347\0\u639c\0\u63f1"+
- "\0\u6446\0\u649b\0\u64f0\0\u0b9f\0\u6545\0\u659a\0\u65ef\0\u6644"+
+ "\0\u5b4f\0\u5ba4\0\u5bf9\0\u5c4e\0\u5ca3\0\u084d\0\u5cf8\0\u5d4d"+
+ "\0\u5da2\0\u5df7\0\u0b9f\0\u5e4c\0\u5ea1\0\u5ef6\0\u5f4b\0\u0b9f"+
+ "\0\u5fa0\0\u5ff5\0\u604a\0\u5fa0\0\u609f\0\u60f4\0\u6149\0\u619e"+
+ "\0\u61f3\0\u6248\0\u0b9f\0\u629d\0\u62f2\0\u6347\0\u639c\0\u63f1"+
+ "\0\u6446\0\u649b\0\u64f0\0\u6545\0\u659a\0\u65ef\0\u0b9f\0\u6644"+
"\0\u6699\0\u66ee\0\u6743\0\u6798\0\u67ed\0\u6842\0\u6897\0\u68ec"+
- "\0\u6941\0\u6996\0\u0b9f\0\u69eb\0\u6a40\0\u6a95\0\u6aea\0\u6b3f"+
- "\0\u6b94\0\u6be9\0\u6c3e\0\u6c93\0\u6ce8\0\u6d3d\0\u6d92\0\u084d"+
- "\0\u1a3b\0\u1b8f\0\u084d\0\u6de7\0\u6e3c\0\u084d\0\u6e91\0\u084d"+
- "\0\u084d\0\u084d\0\u084d\0\u084d\0\u6ee6\0\u6f3b\0\u6f90\0\u6fe5"+
+ "\0\u6941\0\u6996\0\u69eb\0\u6a40\0\u6a95\0\u0b9f\0\u6aea\0\u6b3f"+
+ "\0\u6b94\0\u6be9\0\u6c3e\0\u6c93\0\u6ce8\0\u6d3d\0\u6d92\0\u6de7"+
+ "\0\u6e3c\0\u6e91\0\u084d\0\u1a90\0\u1be4\0\u084d\0\u6ee6\0\u6f3b"+
+ "\0\u084d\0\u6f90\0\u084d\0\u084d\0\u084d\0\u084d\0\u084d\0\u6fe5"+
"\0\u703a\0\u708f\0\u70e4\0\u7139\0\u718e\0\u71e3\0\u7238\0\u728d"+
- "\0\u72e2\0\u7337\0\u738c\0\u73e1\0\u7436\0\u748b\0\u0b9f\0\u74e0"+
- "\0\u7535\0\u758a\0\u75df\0\u7634\0\u7689\0\u76de\0\u0b9f\0\u0b9f"+
- "\0\u7733\0\u7788\0\u77dd\0\u7832\0\u7887\0\u78dc\0\u7931\0\u7986"+
- "\0\u79db\0\u7a30\0\u5bf9\0\u7a85\0\u7ada\0\u7b2f\0\u7b84\0\u7bd9"+
- "\0\u0b9f\0\u7c2e\0\u7c83\0\u7cd8\0\u7d2d\0\u7d82\0\u7dd7\0\u7e2c"+
- "\0\u7e81\0\u7ed6\0\u0b9f\0\u7f2b\0\u7f80\0\u0b9f\0\u7fd5\0\u0b9f"+
- "\0\u802a\0\u807f\0\u80d4\0\u0b9f\0\u8129\0\u0b9f\0\u0b9f\0\u817e"+
- "\0\u81d3\0\u8228\0\u827d\0\u0b9f\0\u82d2\0\u8327\0\u837c\0\u83d1"+
+ "\0\u72e2\0\u7337\0\u738c\0\u73e1\0\u7436\0\u748b\0\u74e0\0\u7535"+
+ "\0\u758a\0\u0b9f\0\u75df\0\u7634\0\u7689\0\u76de\0\u7733\0\u7788"+
+ "\0\u77dd\0\u0b9f\0\u0b9f\0\u7832\0\u7887\0\u78dc\0\u7931\0\u7986"+
+ "\0\u79db\0\u7a30\0\u7a85\0\u7ada\0\u7b2f\0\u5ca3\0\u7b84\0\u7bd9"+
+ "\0\u7c2e\0\u7c83\0\u7cd8\0\u0b9f\0\u7d2d\0\u7d82\0\u7dd7\0\u7e2c"+
+ "\0\u7e81\0\u7ed6\0\u7f2b\0\u7f80\0\u7fd5\0\u802a\0\u0b9f\0\u807f"+
+ "\0\u80d4\0\u0b9f\0\u8129\0\u0b9f\0\u817e\0\u81d3\0\u8228\0\u0b9f"+
+ "\0\u827d\0\u0b9f\0\u0b9f\0\u82d2\0\u8327\0\u837c\0\u83d1\0\u0b9f"+
"\0\u8426\0\u847b\0\u84d0\0\u8525\0\u857a\0\u85cf\0\u8624\0\u8679"+
"\0\u86ce\0\u8723\0\u8778\0\u87cd\0\u8822\0\u8877\0\u88cc\0\u8921"+
- "\0\u8976\0\u89cb\0\u084d\0\u8a20\0\u084d\0\u8a75\0\u8aca\0\u8b1f"+
- "\0\u084d\0\u8b74\0\u8bc9\0\u8c1e\0\u8c73\0\u8cc8\0\u8d1d\0\u8d72"+
- "\0\u8dc7\0\u8e1c\0\u8e71\0\u8ec6\0\u8f1b\0\u8f70\0\u0b9f\0\u8fc5"+
- "\0\u901a\0\u906f\0\u0b9f\0\u90c4\0\u0b9f\0\u9119\0\u916e\0\u0b9f"+
- "\0\u084d\0\u91c3\0\u9218\0\u926d\0\u92c2\0\u9317\0\u936c\0\u93c1"+
- "\0\u0b9f\0\u9416\0\u946b\0\u94c0\0\u9515\0\u956a\0\u95bf\0\u9614"+
- "\0\u9669\0\u0b9f\0\u96be\0\u0b9f\0\u0b9f\0\u0b9f\0\u9713\0\u9768"+
- "\0\u97bd\0\u9812\0\u9867\0\u98bc\0\u0b9f\0\u0b9f\0\u9911\0\u0b9f"+
- "\0\u0b9f\0\u0b9f\0\u0b9f\0\u9966\0\u0b9f\0\u99bb\0\u9a10\0\u9a65"+
- "\0\u0b9f\0\u9aba\0\u9b0f\0\u9b64\0\u9bb9\0\u9c0e\0\u9c63\0\u9cb8"+
- "\0\u9d0d\0\u084d\0\u9d62\0\u9db7\0\u0b9f\0\u9e0c\0\u9e61\0\u9eb6"+
- "\0\u9f0b\0\u9f60\0\u9fb5\0\ua00a\0\ua05f\0\ua0b4\0\ua109\0\ua15e"+
- "\0\ua1b3\0\ua208\0\ua25d\0\ua2b2\0\ua307\0\ua35c\0\ua3b1\0\ua406"+
- "\0\ua45b\0\u0b9f\0\ua4b0\0\ua505\0\ua55a\0\ua5af\0\ua604\0\ua659"+
- "\0\u0b9f\0\ua6ae\0\ua703\0\ua758\0\ua7ad\0\ua802\0\ua857\0\ua8ac"+
- "\0\ua901\0\ua956\0\ua9ab\0\uaa00\0\u0b9f\0\u0b9f\0\u0b9f\0\u0b9f"+
- "\0\u0b9f\0\uaa55\0\uaaaa\0\uaaff\0\uab54\0\u0b9f\0\u0b9f\0\uaba9"+
- "\0\uabfe\0\uac53\0\uaca8\0\uacfd\0\uad52\0\u084d\0\uada7\0\uadfc"+
- "\0\uae51\0\uaea6\0\u0b9f\0\uaefb\0\uaf50\0\uafa5\0\uaffa\0\ub04f"+
- "\0\u0b9f\0\ub0a4\0\ub0f9\0\ub14e\0\ub1a3\0\u0b9f\0\u0b9f\0\ub1f8"+
- "\0\u084d\0\ub24d\0\ub2a2\0\ub2f7\0\ub34c\0\ub3a1\0\u0b9f\0\u0b9f"+
- "\0\ub3f6\0\ub44b\0\ub4a0\0\ub4f5\0\ub54a\0\ub59f\0\ub5f4\0\ub649"+
- "\0\ub69e\0\u0b9f\0\ub6f3\0\ub748\0\ub79d\0\ub7f2\0\ub847\0\u0b9f"+
- "\0\ub89c\0\ub8f1\0\ub946\0\u0b9f\0\ub99b\0\ub9f0\0\uba45\0\uba9a"+
- "\0\ubaef\0\ubb44\0\u0b9f\0\u0b9f\0\ubb99\0\ubbee\0\u0b9f\0\ubc43"+
- "\0\ubc98\0\ubced\0\ubd42\0\ubd97\0\u0b9f\0\ubdec\0\u0b9f\0\u0b9f"+
- "\0\ube41\0\ube96\0\ubeeb\0\ubf40\0\ubf95\0\ubfea\0\u0b9f\0\u0b9f"+
- "\0\uc03f\0\uc094\0\uc0e9\0\uc13e\0\u0b9f\0\uc193\0\uc1e8\0\u0b9f"+
- "\0\u0b9f\0\u0b9f\0\uc23d\0\uc292\0\uc2e7\0\u0b9f\0\uc33c\0\uc391"+
- "\0\uc3e6\0\uc43b\0\uc490\0\u0b9f\0\uc4e5\0\u0b9f\0\u0b9f\0\uc53a"+
- "\0\u0b9f\0\uc58f\0\u0b9f\0\u084d\0\uc193\0\uc5e4\0\uc639\0\uc68e"+
- "\0\uc6e3\0\uc738\0\uc78d\0\uc7e2\0\u0b9f\0\uc837\0\uc88c\0\u0b9f"+
- "\0\u0b9f\0\uc8e1\0\u0b9f\0\uc936\0\uc98b\0\uc9e0\0\uca35\0\u0b9f"+
- "\0\uca8a\0\ucadf\0\ucb34\0\ucb89\0\ucbde\0\ucc33\0\ucc88\0\uccdd"+
- "\0\ucd32\0\ucd87\0\ucddc\0\uce31\0\u084d\0\uce86";
+ "\0\u8976\0\u89cb\0\u8a20\0\u8a75\0\u8aca\0\u8b1f\0\u084d\0\u8b74"+
+ "\0\u084d\0\u8bc9\0\u8c1e\0\u8c73\0\u084d\0\u8cc8\0\u8d1d\0\u8d72"+
+ "\0\u8dc7\0\u8e1c\0\u8e71\0\u8ec6\0\u8f1b\0\u8f70\0\u8fc5\0\u901a"+
+ "\0\u906f\0\u90c4\0\u0b9f\0\u9119\0\u916e\0\u91c3\0\u0b9f\0\u9218"+
+ "\0\u0b9f\0\u926d\0\u92c2\0\u0b9f\0\u084d\0\u9317\0\u936c\0\u93c1"+
+ "\0\u9416\0\u946b\0\u94c0\0\u9515\0\u0b9f\0\u956a\0\u95bf\0\u9614"+
+ "\0\u9669\0\u96be\0\u9713\0\u9768\0\u97bd\0\u0b9f\0\u9812\0\u0b9f"+
+ "\0\u0b9f\0\u0b9f\0\u0b9f\0\u9867\0\u98bc\0\u9911\0\u9966\0\u99bb"+
+ "\0\u9a10\0\u0b9f\0\u0b9f\0\u9a65\0\u0b9f\0\u0b9f\0\u0b9f\0\u0b9f"+
+ "\0\u9aba\0\u0b9f\0\u9b0f\0\u9b64\0\u9bb9\0\u0b9f\0\u9c0e\0\u9c63"+
+ "\0\u9cb8\0\u9d0d\0\u9d62\0\u9db7\0\u9e0c\0\u9e61\0\u084d\0\u9eb6"+
+ "\0\u9f0b\0\u0b9f\0\u9f60\0\u9fb5\0\ua00a\0\ua05f\0\ua0b4\0\ua109"+
+ "\0\ua15e\0\ua1b3\0\ua208\0\ua25d\0\ua2b2\0\ua307\0\ua35c\0\ua3b1"+
+ "\0\ua406\0\ua45b\0\ua4b0\0\ua505\0\ua55a\0\ua5af\0\u0b9f\0\ua604"+
+ "\0\ua659\0\ua6ae\0\ua703\0\ua758\0\ua7ad\0\u0b9f\0\ua802\0\ua857"+
+ "\0\ua8ac\0\ua901\0\ua956\0\ua9ab\0\uaa00\0\uaa55\0\uaaaa\0\uaaff"+
+ "\0\uab54\0\u0b9f\0\u0b9f\0\u0b9f\0\u0b9f\0\u0b9f\0\uaba9\0\uabfe"+
+ "\0\uac53\0\uaca8\0\u0b9f\0\u0b9f\0\uacfd\0\uad52\0\uada7\0\uadfc"+
+ "\0\uae51\0\uaea6\0\u084d\0\uaefb\0\uaf50\0\uafa5\0\uaffa\0\u0b9f"+
+ "\0\ub04f\0\ub0a4\0\ub0f9\0\ub14e\0\ub1a3\0\u0b9f\0\ub1f8\0\ub24d"+
+ "\0\ub2a2\0\ub2f7\0\u0b9f\0\u0b9f\0\ub34c\0\u084d\0\ub3a1\0\ub3f6"+
+ "\0\ub44b\0\ub4a0\0\ub4f5\0\u0b9f\0\u0b9f\0\ub54a\0\ub59f\0\ub5f4"+
+ "\0\ub649\0\ub69e\0\ub6f3\0\ub748\0\ub79d\0\ub7f2\0\u0b9f\0\ub847"+
+ "\0\ub89c\0\ub8f1\0\ub946\0\ub99b\0\u0b9f\0\ub9f0\0\uba45\0\uba9a"+
+ "\0\u0b9f\0\ubaef\0\ubb44\0\ubb99\0\ubbee\0\ubc43\0\ubc98\0\u0b9f"+
+ "\0\u0b9f\0\ubced\0\ubd42\0\u0b9f\0\ubd97\0\ubdec\0\ube41\0\ube96"+
+ "\0\ubeeb\0\u0b9f\0\ubf40\0\u0b9f\0\u0b9f\0\ubf95\0\ubfea\0\uc03f"+
+ "\0\uc094\0\uc0e9\0\uc13e\0\u0b9f\0\u0b9f\0\uc193\0\uc1e8\0\uc23d"+
+ "\0\uc292\0\u0b9f\0\uc2e7\0\uc33c\0\u0b9f\0\u0b9f\0\u0b9f\0\uc391"+
+ "\0\uc3e6\0\uc43b\0\u0b9f\0\uc490\0\uc4e5\0\uc53a\0\uc58f\0\uc5e4"+
+ "\0\u0b9f\0\uc639\0\u0b9f\0\u0b9f\0\uc68e\0\u0b9f\0\uc6e3\0\u0b9f"+
+ "\0\u084d\0\uc2e7\0\uc738\0\uc78d\0\uc7e2\0\uc837\0\uc88c\0\uc8e1"+
+ "\0\uc936\0\u0b9f\0\uc98b\0\uc9e0\0\u0b9f\0\u0b9f\0\uca35\0\u0b9f"+
+ "\0\uca8a\0\ucadf\0\ucb34\0\ucb89\0\u0b9f\0\ucbde\0\ucc33\0\ucc88"+
+ "\0\uccdd\0\ucd32\0\ucd87\0\ucddc\0\uce31\0\uce86\0\ucedb\0\ucf30"+
+ "\0\ucf85\0\u084d\0\ucfda";
private static int [] zzUnpackRowMap() {
- int [] result = new int[790];
+ int [] result = new int[795];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -387,1083 +388,1092 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
"\2\45\1\46\1\47\1\45\1\50\1\51\1\52\1\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\1\71\1\72\1\73"+
- "\1\74\1\75\1\76\1\77\1\75\1\100\1\101\1\102"+
- "\1\103\1\74\1\104\1\73\1\105\1\106\1\107\1\76"+
- "\1\36\1\44\1\110\1\111\1\41\1\46\1\112\1\113"+
- "\1\110\1\114\1\112\1\100\1\102\1\105\1\115\1\44"+
- "\1\116\1\117\1\120\1\121\1\46\1\122\1\123\1\124"+
- "\1\44\1\125\1\126\2\44\1\127\23\130\1\131\1\132"+
- "\1\133\1\130\1\134\75\130\23\135\1\136\1\135\1\137"+
- "\1\132\1\140\75\135\5\141\1\142\21\141\1\143\14\141"+
- "\1\144\62\141\1\145\1\141\1\145\2\141\3\145\1\141"+
- "\2\145\1\141\2\45\2\141\1\45\22\141\27\145\1\141"+
- "\12\145\5\141\4\145\1\146\3\145\1\141\16\147\1\150"+
- "\3\147\1\151\1\152\1\147\1\153\1\147\1\154\75\147"+
- "\2\155\1\156\1\155\1\156\2\155\3\156\1\155\2\156"+
- "\2\155\1\157\25\155\27\156\1\155\12\156\5\155\4\156"+
- "\1\155\3\156\1\155\2\32\1\160\1\32\1\160\2\32"+
- "\3\160\1\32\2\160\1\32\1\0\1\161\25\32\27\160"+
- "\1\32\12\160\5\32\4\160\1\32\3\160\1\32\2\162"+
- "\1\163\1\162\1\163\2\162\3\163\2\162\1\163\1\162"+
- "\1\164\3\162\1\165\22\162\27\163\1\162\12\163\5\162"+
- "\4\163\1\162\3\163\1\162\2\166\1\167\1\166\1\167"+
- "\2\166\3\167\1\166\2\167\2\166\1\170\25\166\27\167"+
- "\1\166\12\167\5\166\4\167\1\166\3\167\1\166\2\32"+
- "\1\171\1\32\1\171\2\32\3\171\1\32\2\171\1\32"+
- "\1\172\1\173\2\32\1\174\22\32\27\171\1\32\12\171"+
- "\5\32\4\171\1\32\3\171\1\32\2\175\1\176\1\175"+
- "\1\176\1\177\1\175\3\176\1\175\2\176\1\175\2\45"+
- "\2\175\1\45\21\175\1\200\27\176\1\175\12\176\5\175"+
- "\4\176\1\175\3\176\3\175\1\176\1\175\1\176\2\175"+
- "\3\176\1\175\2\176\1\175\2\45\2\175\1\45\22\175"+
- "\27\176\1\175\12\176\1\175\1\201\3\175\4\176\1\175"+
- "\3\176\1\175\2\202\1\203\1\202\1\203\2\202\3\203"+
- "\1\202\2\203\1\202\2\45\2\202\1\45\22\202\27\203"+
- "\1\202\12\203\5\202\4\203\1\202\3\203\1\202\1\32"+
- "\1\204\1\44\1\205\1\44\1\32\1\206\3\44\1\204"+
- "\2\44\1\32\2\207\1\210\1\205\1\207\1\211\1\205"+
- "\1\207\2\205\6\32\1\205\5\32\1\205\27\44\1\205"+
- "\12\44\1\207\2\205\1\207\1\212\4\44\1\205\3\44"+
- "\1\205\35\213\1\214\67\213\35\215\1\216\67\215\16\217"+
- "\1\220\3\217\1\221\11\217\1\222\2\217\1\223\4\217"+
- "\1\224\60\217\16\225\2\226\2\225\1\226\102\225\125\227"+
- "\10\230\1\231\5\230\2\45\2\230\1\45\25\230\1\232"+
- "\2\230\1\232\1\233\1\231\24\230\1\233\24\230\1\234"+
- "\1\230\1\234\2\230\3\234\1\230\2\234\1\230\2\45"+
- "\2\230\1\45\22\230\14\234\1\235\12\234\1\230\1\236"+
- "\1\235\2\234\1\236\5\234\5\230\4\234\1\230\3\234"+
- "\1\230\34\30\1\237\124\30\1\0\2\30\1\240\4\30"+
- "\1\241\5\30\1\0\1\30\1\0\4\30\1\242\1\0"+
+ "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+
+ "\1\104\1\74\1\105\1\73\1\106\1\107\1\110\1\76"+
+ "\1\36\1\44\1\111\1\112\1\41\1\46\1\113\1\114"+
+ "\1\111\1\115\1\113\1\101\1\103\1\106\1\116\1\44"+
+ "\1\117\1\120\1\121\1\122\1\46\1\123\1\124\1\125"+
+ "\1\44\1\126\1\127\2\44\1\130\23\131\1\132\1\133"+
+ "\1\134\1\131\1\135\75\131\23\136\1\137\1\136\1\140"+
+ "\1\133\1\141\75\136\5\142\1\143\21\142\1\144\14\142"+
+ "\1\145\62\142\1\146\1\142\1\146\2\142\3\146\1\142"+
+ "\2\146\1\142\2\45\2\142\1\45\22\142\27\146\1\142"+
+ "\12\146\5\142\4\146\1\147\3\146\1\142\16\150\1\151"+
+ "\3\150\1\152\1\153\1\150\1\154\1\150\1\155\75\150"+
+ "\2\156\1\157\1\156\1\157\2\156\3\157\1\156\2\157"+
+ "\2\156\1\160\25\156\27\157\1\156\12\157\5\156\4\157"+
+ "\1\156\3\157\1\156\2\32\1\161\1\32\1\161\2\32"+
+ "\3\161\1\32\2\161\1\32\1\0\1\162\25\32\27\161"+
+ "\1\32\12\161\5\32\4\161\1\32\3\161\1\32\2\163"+
+ "\1\164\1\163\1\164\2\163\3\164\2\163\1\164\1\163"+
+ "\1\165\3\163\1\166\22\163\27\164\1\163\12\164\5\163"+
+ "\4\164\1\163\3\164\1\163\2\167\1\170\1\167\1\170"+
+ "\2\167\3\170\1\167\2\170\2\167\1\171\25\167\27\170"+
+ "\1\167\12\170\5\167\4\170\1\167\3\170\1\167\2\32"+
+ "\1\172\1\32\1\172\2\32\3\172\1\32\2\172\1\32"+
+ "\1\173\1\174\2\32\1\175\22\32\27\172\1\32\12\172"+
+ "\5\32\4\172\1\32\3\172\1\32\2\176\1\177\1\176"+
+ "\1\177\1\200\1\176\3\177\1\176\2\177\1\176\2\45"+
+ "\2\176\1\45\21\176\1\201\27\177\1\176\12\177\5\176"+
+ "\4\177\1\176\3\177\3\176\1\177\1\176\1\177\2\176"+
+ "\3\177\1\176\2\177\1\176\2\45\2\176\1\45\22\176"+
+ "\27\177\1\176\12\177\1\176\1\202\3\176\4\177\1\176"+
+ "\3\177\1\176\2\203\1\204\1\203\1\204\2\203\3\204"+
+ "\1\203\2\204\1\203\2\45\2\203\1\45\22\203\27\204"+
+ "\1\203\12\204\5\203\4\204\1\203\3\204\1\203\1\32"+
+ "\1\205\1\44\1\206\1\44\1\32\1\207\3\44\1\205"+
+ "\2\44\1\32\2\210\1\211\1\206\1\210\1\212\1\206"+
+ "\1\210\2\206\6\32\1\206\5\32\1\206\27\44\1\206"+
+ "\12\44\1\210\2\206\1\210\1\213\4\44\1\206\3\44"+
+ "\1\206\35\214\1\215\67\214\35\216\1\217\67\216\16\220"+
+ "\1\221\3\220\1\222\11\220\1\223\2\220\1\224\4\220"+
+ "\1\225\60\220\16\226\2\227\2\226\1\227\102\226\125\230"+
+ "\10\231\1\232\5\231\2\45\2\231\1\45\25\231\1\233"+
+ "\2\231\1\233\1\234\1\232\24\231\1\234\24\231\1\235"+
+ "\1\231\1\235\2\231\3\235\1\231\2\235\1\231\2\45"+
+ "\2\231\1\45\22\231\14\235\1\236\12\235\1\231\1\237"+
+ "\1\236\2\235\1\237\5\235\5\231\4\235\1\231\3\235"+
+ "\1\231\34\30\1\240\124\30\1\0\2\30\1\241\4\30"+
+ "\1\242\5\30\1\0\1\30\1\0\4\30\1\243\1\0"+
"\6\30\1\0\2\30\2\0\12\30\1\0\14\30\126\0"+
- "\1\33\1\243\1\244\1\245\1\0\1\33\3\0\1\33"+
- "\54\0\1\245\36\0\1\44\1\246\1\0\1\44\1\0"+
+ "\1\33\1\244\1\245\1\246\1\0\1\33\3\0\1\33"+
+ "\54\0\1\246\36\0\1\44\1\247\1\0\1\44\1\0"+
"\10\44\27\0\27\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\1\247\1\0\1\250\2\0\1\247\3\0"+
- "\1\247\15\0\1\70\75\0\2\44\1\0\1\44\1\0"+
- "\1\44\1\251\6\44\27\0\3\44\1\252\2\44\1\252"+
- "\2\44\1\253\6\44\1\254\3\44\1\255\1\256\1\251"+
- "\1\0\2\44\1\255\3\44\1\253\3\44\5\0\1\44"+
- "\1\256\2\44\1\0\1\254\2\44\6\0\1\70\22\0"+
- "\1\70\1\257\74\0\1\33\1\243\1\244\1\245\1\0"+
- "\1\33\1\260\1\0\1\261\1\33\51\0\1\261\2\0"+
- "\1\245\3\0\1\260\32\0\2\44\1\0\1\44\1\0"+
+ "\3\44\2\0\1\250\1\0\1\251\2\0\1\250\3\0"+
+ "\1\250\15\0\1\70\75\0\2\44\1\0\1\44\1\0"+
+ "\1\44\1\252\6\44\27\0\3\44\1\253\2\44\1\253"+
+ "\2\44\1\254\6\44\1\255\3\44\1\256\1\257\1\252"+
+ "\1\0\2\44\1\256\3\44\1\254\3\44\5\0\1\44"+
+ "\1\257\2\44\1\0\1\255\2\44\6\0\1\70\22\0"+
+ "\1\70\1\260\74\0\1\33\1\244\1\245\1\246\1\0"+
+ "\1\33\1\261\1\0\1\262\1\33\51\0\1\262\2\0"+
+ "\1\246\3\0\1\261\32\0\2\44\1\0\1\44\1\0"+
"\10\44\27\0\1\72\11\44\1\72\14\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\262\1\44\1\263\1\264\1\44"+
- "\1\265\1\264\3\44\1\262\1\263\13\44\1\0\3\44"+
- "\1\265\4\44\1\266\1\44\5\0\4\44\1\0\3\44"+
+ "\1\0\10\44\27\0\1\263\1\44\1\264\1\265\1\44"+
+ "\1\266\1\265\3\44\1\263\1\264\13\44\1\0\3\44"+
+ "\1\266\4\44\1\267\1\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\6\0\1\51"+
- "\7\0\1\267\10\0\1\44\1\270\13\44\1\270\11\44"+
- "\1\0\12\44\1\271\4\0\4\44\1\0\3\44\2\0"+
+ "\7\0\1\270\10\0\1\44\1\271\13\44\1\271\11\44"+
+ "\1\0\12\44\1\272\4\0\4\44\1\0\3\44\2\0"+
"\2\44\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\17\0\2\45\2\0"+
- "\1\45\104\0\1\272\1\0\1\272\2\0\3\272\1\0"+
- "\2\272\30\0\27\272\1\0\12\272\5\0\4\272\1\0"+
- "\3\272\1\0\23\273\1\274\1\275\1\276\1\273\1\277"+
- "\75\273\30\0\1\67\1\70\123\0\1\70\1\67\123\0"+
- "\1\70\1\0\1\70\122\0\1\67\124\0\1\300\1\70"+
- "\2\0\1\301\1\0\1\302\116\0\1\70\4\0\1\67"+
- "\117\0\1\70\4\0\1\303\1\304\116\0\1\70\1\305"+
+ "\1\45\104\0\1\273\1\0\1\273\2\0\3\273\1\0"+
+ "\2\273\30\0\27\273\1\0\12\273\5\0\4\273\1\0"+
+ "\3\273\1\0\23\274\1\275\1\276\1\277\1\274\1\300"+
+ "\75\274\30\0\1\67\1\70\123\0\1\70\1\67\123\0"+
+ "\1\70\1\0\1\70\122\0\1\67\124\0\1\301\1\70"+
+ "\2\0\1\302\1\0\1\303\116\0\1\70\4\0\1\67"+
+ "\117\0\1\70\4\0\1\304\1\305\116\0\1\70\1\306"+
"\123\0\1\70\7\0\1\70\114\0\1\70\10\0\1\70"+
- "\113\0\1\70\101\0\1\306\23\0\1\307\12\0\1\67"+
+ "\113\0\1\70\101\0\1\307\23\0\1\310\12\0\1\67"+
"\61\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
- "\1\310\13\44\1\310\11\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\311\1\0\10\44"+
- "\27\0\22\44\1\311\4\44\1\0\12\44\5\0\4\44"+
+ "\1\311\13\44\1\311\11\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\312\1\0\10\44"+
+ "\27\0\22\44\1\312\4\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\3\44"+
- "\1\312\4\44\27\0\1\44\1\313\1\44\1\314\2\44"+
- "\1\314\5\44\1\315\1\313\1\44\1\312\7\44\1\0"+
- "\1\44\1\315\10\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\316\1\0\10\44\27\0\2\44\1\317"+
- "\10\44\1\317\6\44\1\316\4\44\1\0\10\44\1\320"+
+ "\1\313\4\44\27\0\1\44\1\314\1\44\1\315\2\44"+
+ "\1\315\5\44\1\316\1\314\1\44\1\313\7\44\1\0"+
+ "\1\44\1\316\10\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\317\1\0\10\44\27\0\2\44\1\320"+
+ "\10\44\1\320\6\44\1\317\4\44\1\0\10\44\1\321"+
"\1\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\321\1\0\10\44\27\0\1\322\4\44\1\323\4\44"+
- "\1\322\7\44\1\321\4\44\1\0\3\44\1\323\6\44"+
+ "\1\322\1\0\10\44\27\0\1\323\4\44\1\324\4\44"+
+ "\1\323\7\44\1\322\4\44\1\0\3\44\1\324\6\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\2\44\1\324\5\44\27\0\3\44\1\325\2\44"+
- "\1\326\1\327\1\324\3\44\1\330\10\44\1\331\1\44"+
- "\1\0\1\44\1\330\10\44\5\0\1\44\1\331\2\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\1\44\1\332\13\44\1\332\11\44\1\0\11\44"+
- "\1\333\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\262\1\44\1\263\1\264"+
- "\1\44\1\265\1\264\2\44\1\334\1\262\1\263\13\44"+
- "\1\0\3\44\1\265\4\44\1\266\1\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\5\44\1\335\21\44\1\0\3\44\1\335\6\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\44\1\310\13\44\1\310\1\44"+
- "\1\336\7\44\1\0\12\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\337\1\0\10\44\27\0\7\44"+
- "\1\340\12\44\1\337\4\44\1\0\5\44\1\341\4\44"+
- "\5\0\2\44\1\342\1\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\1\343\10\44\1\344"+
- "\1\343\14\44\1\0\6\44\1\344\3\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\6\0\1\51\7\0\1\267\10\0\1\44\1\270\10\44"+
- "\1\345\2\44\1\270\11\44\1\0\12\44\1\271\4\0"+
+ "\1\0\2\44\1\325\5\44\27\0\3\44\1\326\2\44"+
+ "\1\327\1\330\1\325\3\44\1\331\10\44\1\332\1\44"+
+ "\1\0\1\44\1\331\10\44\5\0\1\44\1\332\2\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\317\1\0\10\44"+
+ "\27\0\2\44\1\320\10\44\1\320\6\44\1\333\4\44"+
+ "\1\0\10\44\1\321\1\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
+ "\1\334\13\44\1\334\11\44\1\0\11\44\1\335\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\2\44\1\346\7\44\1\347\1\346\13\44"+
+ "\10\44\27\0\1\263\1\44\1\264\1\265\1\44\1\266"+
+ "\1\265\2\44\1\336\1\263\1\264\13\44\1\0\3\44"+
+ "\1\266\4\44\1\267\1\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\5\44"+
+ "\1\337\21\44\1\0\3\44\1\337\6\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
+ "\27\0\1\44\1\311\13\44\1\311\1\44\1\340\7\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\1\350\1\44\1\351"+
- "\6\44\1\352\1\350\1\351\13\44\1\0\6\44\1\352"+
- "\3\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\2\44\1\353\2\44\1\354"+
- "\5\44\1\353\13\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\1\44\1\355\1\356\10\44\1\356\1\44\1\355\11\44"+
- "\1\0\10\44\1\357\1\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\337\1\0\10\44\27\0\7\44"+
- "\1\341\12\44\1\337\4\44\1\0\5\44\1\341\4\44"+
- "\5\0\2\44\1\342\1\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\2\44\1\324\5\44\27\0\3\44"+
- "\1\325\2\44\1\325\1\44\1\324\3\44\1\330\10\44"+
- "\1\331\1\44\1\0\1\44\1\330\10\44\5\0\1\44"+
- "\1\331\2\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\3\44\1\360\2\44\1\360\5\44"+
- "\1\361\12\44\1\0\1\44\1\361\10\44\5\0\4\44"+
- "\1\0\3\44\1\0\25\271\1\362\61\271\1\275\15\271"+
- "\10\0\1\363\1\364\5\0\1\365\25\0\1\366\1\367"+
- "\1\370\1\0\1\371\1\372\2\0\1\363\1\0\1\366"+
- "\1\370\1\373\1\367\1\0\1\364\1\0\1\371\7\0"+
- "\1\373\1\0\1\372\4\0\1\374\132\0\1\375\12\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\5\44\1\376"+
- "\21\44\1\0\3\44\1\376\6\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\2\44\1\353\10\44\1\353\13\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\27\44\1\0\11\44\1\377\5\0\4\44"+
- "\1\0\3\44\121\0\1\u0100\5\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\2\44\1\346\10\44\1\346\13\44"+
- "\1\0\12\44\5\0\4\44\1\0\3\44\1\0\23\130"+
- "\1\u0101\1\0\1\u0102\1\130\1\u0103\77\130\1\u0104\1\130"+
- "\1\u0104\2\130\3\u0104\1\130\1\u0105\1\u0104\6\130\1\u0106"+
- "\1\u0107\1\u0102\1\130\1\u0108\15\130\27\u0104\1\130\12\u0104"+
- "\5\130\4\u0104\1\130\3\u0104\151\130\1\u0109\1\u0107\1\u0102"+
- "\1\130\1\u010a\75\130\23\135\1\u010b\1\135\1\u010c\1\0"+
- "\1\u010d\77\135\1\u0104\1\135\1\u0104\2\135\3\u0104\1\135"+
- "\1\u010e\1\u0104\6\135\1\u010f\1\135\1\u010c\1\u0107\1\u0108"+
- "\15\135\27\u0104\1\135\12\u0104\5\135\4\u0104\1\135\3\u0104"+
- "\151\135\1\u0109\1\135\1\u010c\1\u0107\1\u0110\75\135\31\0"+
- "\1\u0111\116\0\1\u0109\106\0\1\u0112\120\0\2\145\1\0"+
- "\1\145\1\0\10\145\27\0\27\145\1\0\12\145\5\0"+
- "\4\145\1\0\3\145\121\0\1\u0113\4\0\16\147\1\0"+
- "\3\147\1\0\1\u0114\1\147\1\u0115\1\147\1\u0116\77\147"+
- "\1\u0117\1\147\1\u0117\2\147\3\u0117\1\147\2\u0117\1\147"+
- "\1\0\1\150\2\147\1\0\1\u0114\1\147\1\u0115\1\147"+
- "\1\u0116\15\147\27\u0117\1\147\12\u0117\5\147\4\u0117\1\147"+
- "\3\u0117\3\147\1\u0117\1\147\1\u0117\2\147\3\u0117\1\147"+
- "\2\u0117\1\147\1\u0118\1\150\2\147\1\0\1\u0114\1\147"+
- "\1\u0115\1\147\1\u0116\15\147\27\u0117\1\147\12\u0117\5\147"+
- "\4\u0117\1\147\3\u0117\1\147\2\0\1\u0104\1\0\1\u0104"+
- "\2\0\3\u0104\1\0\2\u0104\12\0\1\u0108\15\0\27\u0104"+
- "\1\0\12\u0104\5\0\4\u0104\1\0\3\u0104\1\0\125\147"+
- "\16\156\1\u0119\3\156\1\u0119\102\156\2\0\1\156\1\0"+
- "\1\156\2\0\3\156\1\0\2\156\2\0\1\u011a\25\0"+
- "\27\156\1\0\12\156\5\0\4\156\1\0\3\156\2\0"+
- "\2\160\1\0\1\160\1\0\10\160\3\0\1\u011b\23\0"+
- "\27\160\1\0\12\160\5\0\4\160\1\0\3\160\3\0"+
- "\1\160\1\0\1\160\2\0\3\160\1\0\2\160\2\0"+
- "\1\u011c\25\0\27\160\1\0\12\160\5\0\4\160\1\0"+
- "\3\160\1\0\16\162\1\0\3\162\1\0\103\162\2\u011d"+
- "\1\162\1\u011d\1\162\5\u011d\1\162\1\u011d\1\162\1\0"+
- "\2\162\1\u011e\1\0\22\162\27\u011d\1\162\12\u011d\5\162"+
- "\4\u011d\1\162\3\u011d\3\162\1\u011f\1\162\1\u011f\2\162"+
- "\3\u011f\1\162\2\u011f\1\162\1\u0120\1\u0121\2\162\1\u0120"+
- "\22\162\27\u011f\1\162\12\u011f\5\162\4\u011f\1\162\3\u011f"+
- "\3\162\1\u011f\1\162\1\u011f\2\162\3\u011f\1\162\2\u011f"+
- "\1\162\1\164\1\u0121\2\162\1\u0120\22\162\27\u011f\1\162"+
- "\12\u011f\5\162\4\u011f\1\162\3\u011f\1\162\16\u0122\1\u0123"+
- "\3\u0122\1\u0123\102\u0122\2\0\1\u0122\1\0\1\u0122\2\0"+
- "\3\u0122\1\0\2\u0122\2\0\1\u0124\25\0\27\u0122\1\0"+
- "\12\u0122\5\0\4\u0122\1\0\3\u0122\2\0\2\171\1\0"+
- "\1\171\1\0\10\171\3\0\1\u0125\23\0\27\171\1\0"+
- "\12\171\5\0\4\171\1\0\3\171\3\0\1\171\1\0"+
- "\1\171\2\0\3\171\1\0\2\171\1\0\1\172\1\u0126"+
- "\2\0\1\172\22\0\27\171\1\0\12\171\5\0\4\171"+
- "\1\0\3\171\3\0\1\171\1\0\1\171\2\0\3\171"+
- "\1\0\2\171\2\0\1\u0126\25\0\27\171\1\0\12\171"+
- "\5\0\4\171\1\0\3\171\2\0\2\176\1\0\1\176"+
- "\1\0\10\176\27\0\27\176\1\0\12\176\5\0\4\176"+
- "\1\0\3\176\32\0\1\u0127\100\0\1\u0128\120\0\2\u0129"+
- "\1\0\1\u0129\1\0\10\u0129\2\u012a\2\0\1\u012a\5\0"+
- "\1\u012b\14\0\27\u0129\1\0\12\u0129\5\0\4\u0129\1\0"+
- "\3\u0129\2\0\1\204\1\u012c\3\0\1\204\3\0\1\204"+
- "\113\0\1\204\1\u012c\3\0\1\204\1\260\2\0\1\204"+
- "\60\0\1\260\33\0\1\u012d\1\0\1\u012d\2\0\3\u012d"+
- "\1\0\2\u012d\30\0\27\u012d\1\0\12\u012d\5\0\4\u012d"+
- "\1\0\3\u012d\1\0\35\213\1\u012e\124\213\1\u012e\1\u012f"+
- "\66\213\35\215\1\u0130\124\215\1\u0130\1\u0131\66\215\16\217"+
- "\1\220\3\217\1\220\14\217\1\220\4\217\1\220\60\217"+
- "\16\0\1\u0132\106\0\16\217\1\220\3\217\1\220\13\217"+
- "\1\u0133\1\220\4\217\1\220\60\217\31\0\1\u0134\124\0"+
- "\1\307\111\0\2\226\2\0\1\226\151\0\1\u0135\10\0"+
- "\1\u0135\151\0\1\u0136\65\0\1\u0137\13\0\1\u0137\43\0"+
- "\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139"+
- "\22\0\27\u0138\1\0\12\u0138\5\0\4\u0138\1\u013a\3\u0138"+
- "\2\0\2\u0138\1\0\1\u013b\1\0\10\u0138\2\u0139\2\0"+
- "\1\u0139\22\0\7\u0138\1\u013c\12\u0138\1\u013b\4\u0138\1\0"+
- "\5\u0138\1\u013c\4\u0138\5\0\4\u0138\1\u013a\3\u0138\2\0"+
- "\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139"+
- "\22\0\2\u0138\1\u013d\10\u0138\1\u013d\13\u0138\1\0\12\u0138"+
- "\5\0\4\u0138\1\u013a\3\u0138\1\0\34\30\1\0\2\30"+
- "\1\0\4\30\1\0\5\30\1\0\1\30\1\0\4\30"+
- "\2\0\6\30\1\0\2\30\2\0\12\30\1\0\14\30"+
- "\30\0\1\u013e\124\0\1\u013e\44\0\1\u013f\3\0\1\u013f"+
- "\114\0\1\u0140\5\0\1\u0140\26\0\1\33\4\0\1\33"+
- "\3\0\1\33\113\0\1\247\2\0\1\245\1\0\1\247"+
- "\3\0\1\247\54\0\1\245\36\0\1\204\3\0\1\u012c"+
- "\1\204\3\0\1\204\17\0\1\u012c\73\0\2\44\1\0"+
- "\1\44\1\0\2\44\1\u0141\5\44\27\0\3\44\1\u0142"+
- "\1\u0143\1\44\1\u0142\1\u0144\1\u0141\1\u0145\7\44\1\u0143"+
- "\2\44\1\u0146\1\u0147\1\44\1\0\2\44\1\u0146\2\44"+
- "\1\u0144\1\u0145\2\44\1\u0148\5\0\1\44\1\u0147\2\44"+
- "\1\0\3\44\2\0\1\247\1\u0149\1\0\1\245\1\0"+
- "\1\247\3\0\1\247\54\0\1\245\40\0\1\70\122\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\5\44\1\u014a"+
- "\1\44\1\u014b\17\44\1\0\3\44\1\u014a\1\44\1\u014b"+
- "\4\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\4\44\1\u014c\14\44\1\u014c"+
- "\5\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\14\44\1\u014d"+
- "\12\44\1\0\1\44\1\u014d\10\44\5\0\4\44\1\0"+
+ "\1\0\1\341\1\0\10\44\27\0\7\44\1\342\12\44"+
+ "\1\341\4\44\1\0\5\44\1\343\4\44\5\0\2\44"+
+ "\1\344\1\44\1\0\3\44\2\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\1\345\10\44\1\346\1\345\14\44"+
+ "\1\0\6\44\1\346\3\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\6\0\1\51"+
+ "\7\0\1\270\10\0\1\44\1\271\10\44\1\347\2\44"+
+ "\1\271\11\44\1\0\12\44\1\272\4\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\2\44\1\u014e\10\44\1\u014e\13\44\1\0\12\44\5\0"+
+ "\2\44\1\350\7\44\1\351\1\350\13\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\1\352\1\44\1\353\6\44\1\354"+
+ "\1\352\1\353\13\44\1\0\6\44\1\354\3\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\27\44\1\0\11\44\1\u014f\5\0\4\44"+
+ "\10\44\27\0\2\44\1\355\2\44\1\356\5\44\1\355"+
+ "\13\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\1\44\1\357"+
+ "\1\360\10\44\1\360\1\44\1\357\11\44\1\0\10\44"+
+ "\1\361\1\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\341\1\0\10\44\27\0\7\44\1\343\12\44"+
+ "\1\341\4\44\1\0\5\44\1\343\4\44\5\0\2\44"+
+ "\1\344\1\44\1\0\3\44\2\0\2\44\1\0\1\44"+
+ "\1\0\2\44\1\325\5\44\27\0\3\44\1\326\2\44"+
+ "\1\326\1\44\1\325\3\44\1\331\10\44\1\332\1\44"+
+ "\1\0\1\44\1\331\10\44\5\0\1\44\1\332\2\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\27\44\1\0\1\u0150\3\44\1\u0150\5\44\5\0"+
- "\4\44\1\0\3\44\2\0\1\u0151\2\0\1\u0151\1\0"+
- "\1\u0151\1\0\3\u0151\34\0\1\u0151\1\0\1\u0151\3\0"+
- "\1\u0151\2\0\1\u0151\3\0\1\u0151\1\0\2\u0151\1\0"+
- "\1\u0151\5\0\1\u0151\33\0\1\u0152\3\0\1\u0152\113\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\1\44\1\u0153"+
- "\13\44\1\u0153\11\44\1\0\12\44\5\0\4\44\1\0"+
+ "\27\0\3\44\1\362\2\44\1\362\5\44\1\363\12\44"+
+ "\1\0\1\44\1\363\10\44\5\0\4\44\1\0\3\44"+
+ "\1\0\25\272\1\364\61\272\1\276\15\272\10\0\1\365"+
+ "\1\366\5\0\1\367\25\0\1\370\1\371\1\372\1\0"+
+ "\1\373\1\374\2\0\1\365\1\0\1\370\1\372\1\375"+
+ "\1\371\1\0\1\366\1\0\1\373\7\0\1\375\1\0"+
+ "\1\374\4\0\1\376\132\0\1\377\12\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\5\44\1\u0100\21\44\1\0"+
+ "\3\44\1\u0100\6\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\355"+
+ "\10\44\1\355\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\11\44\1\u0154\15\44\1\0\6\44\1\u0154\3\44\5\0"+
+ "\27\44\1\0\11\44\1\u0101\5\0\4\44\1\0\3\44"+
+ "\121\0\1\u0102\5\0\2\44\1\0\1\44\1\0\10\44"+
+ "\27\0\2\44\1\350\10\44\1\350\13\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\1\0\23\131\1\u0103\1\0"+
+ "\1\u0104\1\131\1\u0105\77\131\1\u0106\1\131\1\u0106\2\131"+
+ "\3\u0106\1\131\1\u0107\1\u0106\6\131\1\u0108\1\u0109\1\u0104"+
+ "\1\131\1\u010a\15\131\27\u0106\1\131\12\u0106\5\131\4\u0106"+
+ "\1\131\3\u0106\151\131\1\u010b\1\u0109\1\u0104\1\131\1\u010c"+
+ "\75\131\23\136\1\u010d\1\136\1\u010e\1\0\1\u010f\77\136"+
+ "\1\u0106\1\136\1\u0106\2\136\3\u0106\1\136\1\u0110\1\u0106"+
+ "\6\136\1\u0111\1\136\1\u010e\1\u0109\1\u010a\15\136\27\u0106"+
+ "\1\136\12\u0106\5\136\4\u0106\1\136\3\u0106\151\136\1\u010b"+
+ "\1\136\1\u010e\1\u0109\1\u0112\75\136\31\0\1\u0113\116\0"+
+ "\1\u010b\106\0\1\u0114\120\0\2\146\1\0\1\146\1\0"+
+ "\10\146\27\0\27\146\1\0\12\146\5\0\4\146\1\0"+
+ "\3\146\121\0\1\u0115\4\0\16\150\1\0\3\150\1\0"+
+ "\1\u0116\1\150\1\u0117\1\150\1\u0118\77\150\1\u0119\1\150"+
+ "\1\u0119\2\150\3\u0119\1\150\2\u0119\1\150\1\0\1\151"+
+ "\2\150\1\0\1\u0116\1\150\1\u0117\1\150\1\u0118\15\150"+
+ "\27\u0119\1\150\12\u0119\5\150\4\u0119\1\150\3\u0119\3\150"+
+ "\1\u0119\1\150\1\u0119\2\150\3\u0119\1\150\2\u0119\1\150"+
+ "\1\u011a\1\151\2\150\1\0\1\u0116\1\150\1\u0117\1\150"+
+ "\1\u0118\15\150\27\u0119\1\150\12\u0119\5\150\4\u0119\1\150"+
+ "\3\u0119\1\150\2\0\1\u0106\1\0\1\u0106\2\0\3\u0106"+
+ "\1\0\2\u0106\12\0\1\u010a\15\0\27\u0106\1\0\12\u0106"+
+ "\5\0\4\u0106\1\0\3\u0106\1\0\125\150\16\157\1\u011b"+
+ "\3\157\1\u011b\102\157\2\0\1\157\1\0\1\157\2\0"+
+ "\3\157\1\0\2\157\2\0\1\u011c\25\0\27\157\1\0"+
+ "\12\157\5\0\4\157\1\0\3\157\2\0\2\161\1\0"+
+ "\1\161\1\0\10\161\3\0\1\u011d\23\0\27\161\1\0"+
+ "\12\161\5\0\4\161\1\0\3\161\3\0\1\161\1\0"+
+ "\1\161\2\0\3\161\1\0\2\161\2\0\1\u011e\25\0"+
+ "\27\161\1\0\12\161\5\0\4\161\1\0\3\161\1\0"+
+ "\16\163\1\0\3\163\1\0\103\163\2\u011f\1\163\1\u011f"+
+ "\1\163\5\u011f\1\163\1\u011f\1\163\1\0\2\163\1\u0120"+
+ "\1\0\22\163\27\u011f\1\163\12\u011f\5\163\4\u011f\1\163"+
+ "\3\u011f\3\163\1\u0121\1\163\1\u0121\2\163\3\u0121\1\163"+
+ "\2\u0121\1\163\1\u0122\1\u0123\2\163\1\u0122\22\163\27\u0121"+
+ "\1\163\12\u0121\5\163\4\u0121\1\163\3\u0121\3\163\1\u0121"+
+ "\1\163\1\u0121\2\163\3\u0121\1\163\2\u0121\1\163\1\165"+
+ "\1\u0123\2\163\1\u0122\22\163\27\u0121\1\163\12\u0121\5\163"+
+ "\4\u0121\1\163\3\u0121\1\163\16\u0124\1\u0125\3\u0124\1\u0125"+
+ "\102\u0124\2\0\1\u0124\1\0\1\u0124\2\0\3\u0124\1\0"+
+ "\2\u0124\2\0\1\u0126\25\0\27\u0124\1\0\12\u0124\5\0"+
+ "\4\u0124\1\0\3\u0124\2\0\2\172\1\0\1\172\1\0"+
+ "\10\172\3\0\1\u0127\23\0\27\172\1\0\12\172\5\0"+
+ "\4\172\1\0\3\172\3\0\1\172\1\0\1\172\2\0"+
+ "\3\172\1\0\2\172\1\0\1\173\1\u0128\2\0\1\173"+
+ "\22\0\27\172\1\0\12\172\5\0\4\172\1\0\3\172"+
+ "\3\0\1\172\1\0\1\172\2\0\3\172\1\0\2\172"+
+ "\2\0\1\u0128\25\0\27\172\1\0\12\172\5\0\4\172"+
+ "\1\0\3\172\2\0\2\177\1\0\1\177\1\0\10\177"+
+ "\27\0\27\177\1\0\12\177\5\0\4\177\1\0\3\177"+
+ "\32\0\1\u0129\100\0\1\u012a\120\0\2\u012b\1\0\1\u012b"+
+ "\1\0\10\u012b\2\u012c\2\0\1\u012c\5\0\1\u012d\14\0"+
+ "\27\u012b\1\0\12\u012b\5\0\4\u012b\1\0\3\u012b\2\0"+
+ "\1\205\1\u012e\3\0\1\205\3\0\1\205\113\0\1\205"+
+ "\1\u012e\3\0\1\205\1\261\2\0\1\205\60\0\1\261"+
+ "\33\0\1\u012f\1\0\1\u012f\2\0\3\u012f\1\0\2\u012f"+
+ "\30\0\27\u012f\1\0\12\u012f\5\0\4\u012f\1\0\3\u012f"+
+ "\1\0\35\214\1\u0130\124\214\1\u0130\1\u0131\66\214\35\216"+
+ "\1\u0132\124\216\1\u0132\1\u0133\66\216\16\220\1\221\3\220"+
+ "\1\221\14\220\1\221\4\220\1\221\60\220\16\0\1\u0134"+
+ "\106\0\16\220\1\221\3\220\1\221\13\220\1\u0135\1\221"+
+ "\4\220\1\221\60\220\31\0\1\u0136\124\0\1\310\111\0"+
+ "\2\227\2\0\1\227\151\0\1\u0137\10\0\1\u0137\151\0"+
+ "\1\u0138\65\0\1\u0139\13\0\1\u0139\43\0\2\u013a\1\0"+
+ "\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0\27\u013a"+
+ "\1\0\12\u013a\5\0\4\u013a\1\u013c\3\u013a\2\0\2\u013a"+
+ "\1\0\1\u013d\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0"+
+ "\7\u013a\1\u013e\12\u013a\1\u013d\4\u013a\1\0\5\u013a\1\u013e"+
+ "\4\u013a\5\0\4\u013a\1\u013c\3\u013a\2\0\2\u013a\1\0"+
+ "\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0\2\u013a"+
+ "\1\u013f\10\u013a\1\u013f\13\u013a\1\0\12\u013a\5\0\4\u013a"+
+ "\1\u013c\3\u013a\1\0\34\30\1\0\2\30\1\0\4\30"+
+ "\1\0\5\30\1\0\1\30\1\0\4\30\2\0\6\30"+
+ "\1\0\2\30\2\0\12\30\1\0\14\30\30\0\1\u0140"+
+ "\124\0\1\u0140\44\0\1\u0141\3\0\1\u0141\114\0\1\u0142"+
+ "\5\0\1\u0142\26\0\1\33\4\0\1\33\3\0\1\33"+
+ "\113\0\1\250\2\0\1\246\1\0\1\250\3\0\1\250"+
+ "\54\0\1\246\36\0\1\205\3\0\1\u012e\1\205\3\0"+
+ "\1\205\17\0\1\u012e\73\0\2\44\1\0\1\44\1\0"+
+ "\2\44\1\u0143\5\44\27\0\3\44\1\u0144\1\u0145\1\44"+
+ "\1\u0144\1\u0146\1\u0143\1\u0147\7\44\1\u0145\2\44\1\u0148"+
+ "\1\u0149\1\44\1\0\2\44\1\u0148\2\44\1\u0146\1\u0147"+
+ "\2\44\1\u014a\5\0\1\44\1\u0149\2\44\1\0\3\44"+
+ "\2\0\1\250\1\u014b\1\0\1\246\1\0\1\250\3\0"+
+ "\1\250\54\0\1\246\40\0\1\70\122\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\5\44\1\u014c\1\44\1\u014d"+
+ "\17\44\1\0\3\44\1\u014c\1\44\1\u014d\4\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\3\44\1\u0155\2\44\1\u0155\20\44\1\0"+
+ "\10\44\27\0\4\44\1\u014e\14\44\1\u014e\5\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\3\44\1\u0156\2\44\1\u0156"+
- "\20\44\1\0\12\44\5\0\4\44\1\0\3\44\35\0"+
- "\1\u0157\71\0\2\44\1\0\1\u0158\1\0\10\44\27\0"+
- "\22\44\1\u0158\4\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\272\1\0\1\272\1\0\10\272\27\0"+
- "\27\272\1\0\12\272\5\0\4\272\1\0\3\272\1\0"+
- "\2\273\1\0\1\273\1\0\2\273\3\0\2\273\1\0"+
- "\6\273\1\274\1\275\1\276\1\273\1\0\15\273\27\0"+
- "\1\273\12\0\5\273\4\0\1\273\3\0\151\273\1\0"+
- "\1\275\1\276\1\273\1\277\75\273\31\0\1\70\123\0"+
- "\1\70\3\0\1\u0159\151\0\1\u015a\14\0\1\u015a\63\0"+
- "\1\u015b\105\0\2\305\2\0\1\305\133\0\1\u015c\111\0"+
- "\2\307\2\0\1\307\103\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\7\44\1\u015d\17\44\1\0\5\44\1\u015d"+
- "\4\44\5\0\4\44\1\0\2\44\1\u015e\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\14\44\1\u015f\12\44"+
- "\1\0\1\44\1\u015f\10\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
- "\1\u0160\13\44\1\u0160\11\44\1\0\12\44\5\0\4\44"+
+ "\1\44\1\0\10\44\27\0\14\44\1\u014f\12\44\1\0"+
+ "\1\44\1\u014f\10\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u0150"+
+ "\10\44\1\u0150\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\27\44\1\0\11\44\1\u0151\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\27\44"+
+ "\1\0\1\u0152\3\44\1\u0152\5\44\5\0\4\44\1\0"+
+ "\3\44\2\0\1\u0153\2\0\1\u0153\1\0\1\u0153\1\0"+
+ "\3\u0153\34\0\1\u0153\1\0\1\u0153\3\0\1\u0153\2\0"+
+ "\1\u0153\3\0\1\u0153\1\0\2\u0153\1\0\1\u0153\5\0"+
+ "\1\u0153\33\0\1\u0154\3\0\1\u0154\113\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\1\44\1\u0155\13\44\1\u0155"+
+ "\11\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u0156"+
+ "\15\44\1\0\6\44\1\u0156\3\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\3\44\1\u0157\2\44\1\u0157\20\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
+ "\10\44\27\0\3\44\1\u0158\2\44\1\u0158\20\44\1\0"+
+ "\12\44\5\0\4\44\1\0\3\44\35\0\1\u0159\71\0"+
+ "\2\44\1\0\1\u015a\1\0\10\44\27\0\22\44\1\u015a"+
+ "\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\273\1\0\1\273\1\0\10\273\27\0\27\273\1\0"+
+ "\12\273\5\0\4\273\1\0\3\273\1\0\2\274\1\0"+
+ "\1\274\1\0\2\274\3\0\2\274\1\0\6\274\1\275"+
+ "\1\276\1\277\1\274\1\0\15\274\27\0\1\274\12\0"+
+ "\5\274\4\0\1\274\3\0\151\274\1\0\1\276\1\277"+
+ "\1\274\1\300\75\274\31\0\1\70\123\0\1\70\3\0"+
+ "\1\u015b\151\0\1\u015c\14\0\1\u015c\63\0\1\u015d\105\0"+
+ "\2\306\2\0\1\306\133\0\1\u015e\111\0\2\310\2\0"+
+ "\1\310\103\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\7\44\1\u015f\17\44\1\0\5\44\1\u015f\4\44\5\0"+
+ "\4\44\1\0\2\44\1\u0160\2\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\14\44\1\u0161\12\44\1\0\1\44"+
+ "\1\u0161\10\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\1\44\1\u0162\13\44"+
+ "\1\u0162\11\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\4\44"+
+ "\1\311\14\44\1\311\5\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\4\44\1\310\14\44\1\310\5\44\1\0\12\44"+
+ "\27\0\27\44\1\0\12\44\5\0\2\44\1\u0163\1\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
+ "\27\0\25\44\1\u0164\1\44\1\0\12\44\5\0\1\44"+
+ "\1\u0164\2\44\1\0\3\44\2\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\11\44\1\u0165\15\44\1\0\6\44"+
+ "\1\u0165\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\2\44\1\u0166\5\44\27\0\10\44"+
+ "\1\u0166\13\44\1\u0167\2\44\1\0\2\44\1\u0167\7\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u0168"+
+ "\1\0\10\44\27\0\22\44\1\u0168\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\27\44\1\0\12\44\5\0\2\44"+
- "\1\u0161\1\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\25\44\1\u0162\1\44\1\0\12\44"+
- "\5\0\1\44\1\u0162\2\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\11\44\1\u0163\15\44"+
- "\1\0\6\44\1\u0163\3\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\2\44\1\u0164\5\44"+
- "\27\0\10\44\1\u0164\13\44\1\u0165\2\44\1\0\2\44"+
- "\1\u0165\7\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u0166\1\0\10\44\27\0\22\44\1\u0166\4\44"+
+ "\1\0\10\44\27\0\7\44\1\u0169\4\44\1\u016a\7\44"+
+ "\1\u016b\2\44\1\0\1\44\1\u016a\1\u016b\2\44\1\u0169"+
+ "\4\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\7\44\1\u016c\4\44\1\u016a"+
+ "\7\44\1\u016b\2\44\1\0\1\44\1\u016a\1\u016b\2\44"+
+ "\1\u0169\4\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\22\44\1\u016d\4\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u0167\4\44"+
- "\1\u0168\7\44\1\u0169\2\44\1\0\1\44\1\u0168\1\u0169"+
- "\2\44\1\u0167\4\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u016a"+
- "\4\44\1\u0168\7\44\1\u0169\2\44\1\0\1\44\1\u0168"+
- "\1\u0169\2\44\1\u0167\4\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\22\44"+
- "\1\u016b\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\14\44"+
- "\1\u016c\12\44\1\0\1\44\1\u016c\10\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\27\44\1\0\1\u016d\3\44\1\u016d\5\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\2\44\1\u016e\10\44\1\u016e\13\44\1\0"+
- "\10\44\1\u016f\1\44\5\0\1\u0170\3\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\14\44\1\u016e\12\44"+
+ "\1\0\1\44\1\u016e\10\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\27\44"+
+ "\1\0\1\u016f\3\44\1\u016f\5\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\20\44\1\u0170\6\44\1\0\12\44\5\0\2\44\1\u0163"+
+ "\1\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
+ "\10\44\27\0\2\44\1\u0171\10\44\1\u0171\13\44\1\0"+
+ "\10\44\1\u0172\1\44\5\0\1\u0173\3\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
- "\1\u0171\13\44\1\u0171\11\44\1\0\12\44\5\0\4\44"+
+ "\1\u0174\13\44\1\u0174\11\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\12\44\1\u0172\14\44\1\0\12\44\5\0\4\44"+
+ "\27\0\12\44\1\u0175\14\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\14\44\1\u0173\12\44\1\0\1\44\1\u0173\10\44"+
+ "\27\0\14\44\1\u0176\12\44\1\0\1\44\1\u0176\10\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\23\44\1\u0174\3\44\1\0\12\44"+
+ "\1\0\10\44\27\0\23\44\1\u0177\3\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u0175\15\44\1\0\6\44"+
- "\1\u0175\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\2\44\1\u0176\10\44"+
- "\1\u0176\1\44\1\u0177\11\44\1\0\12\44\5\0\4\44"+
+ "\1\0\10\44\27\0\11\44\1\u0178\15\44\1\0\6\44"+
+ "\1\u0178\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\2\44\1\u0179\10\44"+
+ "\1\u0179\1\44\1\u017a\11\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\2\44\1\u0176\10\44\1\u0176\13\44\1\0\12\44"+
+ "\27\0\2\44\1\u0179\10\44\1\u0179\13\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\5\44\1\u0178\21\44\1\0\3\44"+
- "\1\u0178\6\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u0179\17\44"+
- "\1\0\5\44\1\u0179\4\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u017a"+
- "\11\44\1\u017a\14\44\1\0\12\44\5\0\4\44\1\0"+
+ "\1\0\10\44\27\0\5\44\1\u017b\21\44\1\0\3\44"+
+ "\1\u017b\6\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\7\44\1\u017c\17\44"+
+ "\1\0\5\44\1\u017c\4\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u017d"+
+ "\11\44\1\u017d\14\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\12\44\1\u017b\14\44\1\0\12\44\5\0\4\44\1\0"+
+ "\12\44\1\u017e\14\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\1\44\1\u017c\13\44\1\u017c\11\44\1\0\12\44\5\0"+
+ "\1\44\1\u017f\13\44\1\u017f\11\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\5\44\1\u017d\21\44\1\0\12\44\5\0"+
+ "\10\44\27\0\5\44\1\u0180\21\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\3\44\1\u017e\2\44\1\u017e\20\44\1\0"+
+ "\10\44\27\0\3\44\1\u0181\2\44\1\u0181\20\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\7\44\1\u017f\1\44\1\u0180"+
- "\2\44\1\u0181\12\44\1\0\1\44\1\u0181\3\44\1\u017f"+
- "\1\u0180\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\1\u0182\1\44\1\u0183"+
- "\7\44\1\u0182\1\u0183\13\44\1\0\12\44\5\0\4\44"+
+ "\1\44\1\0\10\44\27\0\7\44\1\u0182\1\44\1\u0183"+
+ "\2\44\1\u0184\12\44\1\0\1\44\1\u0184\3\44\1\u0182"+
+ "\1\u0183\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\1\u0185\1\44\1\u0186"+
+ "\7\44\1\u0185\1\u0186\13\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\7\44\1\u0184\17\44\1\0\5\44\1\u0184\4\44"+
+ "\27\0\7\44\1\u0187\17\44\1\0\5\44\1\u0187\4\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\26\44\1\u0185\1\0\12\44\5\0"+
+ "\1\0\10\44\27\0\26\44\1\u0188\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\1\u0186\4\44\1\u0187\4\44\1\u0186\14\44"+
- "\1\0\3\44\1\u0187\6\44\5\0\4\44\1\0\3\44"+
+ "\10\44\27\0\1\u0189\4\44\1\u018a\4\44\1\u0189\14\44"+
+ "\1\0\3\44\1\u018a\6\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
- "\1\u0188\13\44\1\u0188\11\44\1\0\12\44\5\0\4\44"+
+ "\1\u018b\13\44\1\u018b\11\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\3\44"+
- "\1\u0189\4\44\27\0\17\44\1\u0189\7\44\1\0\12\44"+
+ "\1\u018c\4\44\27\0\17\44\1\u018c\7\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\14\44\1\u018a\12\44\1\0\1\44"+
- "\1\u018a\10\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u018b\1\0\10\44\27\0\22\44\1\u018b\4\44"+
- "\1\0\12\44\5\0\4\44\1\0\3\44\1\0\125\271"+
- "\56\0\1\u018c\24\0\1\u018c\66\0\1\u018d\4\0\1\u018e"+
- "\4\0\1\u018d\20\0\1\u018e\35\0\1\u018f\52\0\1\u018f"+
- "\44\0\1\u0190\62\0\1\u0190\103\0\1\u0191\13\0\1\u0191"+
- "\107\0\1\u0192\11\0\1\u0192\115\0\1\u0193\2\0\1\u0193"+
- "\125\0\1\u0194\25\0\1\u0194\72\0\1\u0195\2\0\1\u0195"+
- "\52\0\2\44\1\0\1\u0196\1\0\10\44\27\0\22\44"+
- "\1\u0196\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\0\10\44\27\0\14\44\1\u018d\12\44\1\0\1\44"+
+ "\1\u018d\10\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\u018e\1\0\10\44\27\0\22\44\1\u018e\4\44"+
+ "\1\0\12\44\5\0\4\44\1\0\3\44\1\0\125\272"+
+ "\56\0\1\u018f\24\0\1\u018f\66\0\1\u0190\4\0\1\u0191"+
+ "\4\0\1\u0190\20\0\1\u0191\35\0\1\u0192\52\0\1\u0192"+
+ "\44\0\1\u0193\62\0\1\u0193\103\0\1\u0194\13\0\1\u0194"+
+ "\107\0\1\u0195\11\0\1\u0195\115\0\1\u0196\2\0\1\u0196"+
+ "\125\0\1\u0197\25\0\1\u0197\72\0\1\u0198\2\0\1\u0198"+
+ "\52\0\2\44\1\0\1\u0199\1\0\10\44\27\0\22\44"+
+ "\1\u0199\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\5\44"+
- "\1\u0197\21\44\1\0\3\44\1\u0197\6\44\5\0\4\44"+
- "\1\0\3\44\1\0\2\130\1\0\1\130\1\0\2\130"+
- "\3\0\2\130\1\0\6\130\1\u0106\1\u0107\1\u0102\1\130"+
- "\1\0\15\130\27\0\1\130\12\0\5\130\4\0\1\130"+
- "\3\0\24\130\1\0\1\u0107\1\u0102\1\130\1\u010a\75\130"+
- "\1\0\2\u0104\1\0\1\u0104\1\0\10\u0104\27\0\27\u0104"+
- "\1\0\12\u0104\4\0\1\u0198\4\u0104\1\0\3\u0104\1\0"+
- "\1\130\2\u0105\1\130\1\u0105\1\130\10\u0105\5\130\1\u0101"+
- "\1\0\1\u0102\1\130\1\u0103\15\130\27\u0105\1\130\12\u0105"+
- "\4\130\1\u0199\4\u0105\1\130\3\u0105\1\130\2\135\1\0"+
- "\1\135\1\0\2\135\3\0\2\135\1\0\6\135\1\u010f"+
- "\1\135\1\u010c\1\u0107\1\0\15\135\27\0\1\135\12\0"+
- "\5\135\4\0\1\135\3\0\24\135\1\0\1\135\1\u010c"+
- "\1\u0107\1\u0110\76\135\2\u010e\1\135\1\u010e\1\135\10\u010e"+
- "\5\135\1\u010b\1\135\1\u010c\1\0\1\u010d\15\135\27\u010e"+
- "\1\135\12\u010e\4\135\1\u019a\4\u010e\1\135\3\u010e\1\135"+
- "\31\0\1\u019b\73\0\2\147\1\u019c\1\147\1\u019c\2\147"+
- "\3\u019c\2\147\1\u019c\1\147\1\0\3\147\1\0\1\u019d"+
- "\1\147\1\u0115\1\147\1\u019e\15\147\27\u019c\1\147\12\u019c"+
- "\5\147\4\u019c\1\147\3\u019c\17\147\1\0\3\147\1\0"+
- "\120\147\1\0\3\147\1\0\1\u019e\1\147\1\u0115\1\147"+
- "\1\u019f\75\147\16\u0117\1\u01a0\3\u0117\1\u01a0\102\u0117\2\0"+
- "\1\u0117\1\0\1\u0117\2\0\3\u0117\1\0\2\u0117\2\0"+
- "\1\u0118\25\0\27\u0117\1\0\12\u0117\5\0\4\u0117\1\0"+
- "\3\u0117\1\0\16\u011f\1\u01a1\3\u011f\1\u01a1\102\u011f\2\162"+
- "\1\u011d\1\162\1\u011d\2\162\3\u011d\2\162\1\u011d\1\162"+
- "\1\u0120\3\162\1\u0120\22\162\27\u011d\1\162\12\u011d\5\162"+
- "\4\u011d\1\162\3\u011d\3\162\1\u011f\1\162\1\u011f\2\162"+
- "\3\u011f\1\162\2\u011f\1\162\1\0\1\u0121\2\162\1\0"+
- "\22\162\27\u011f\1\162\12\u011f\5\162\4\u011f\1\162\3\u011f"+
- "\1\162\31\0\1\u01a2\111\0\2\u012a\2\0\1\u012a\5\0"+
- "\1\u012b\75\0\1\204\4\0\1\204\3\0\1\204\113\0"+
- "\2\u012d\1\0\1\u012d\1\0\10\u012d\27\0\27\u012d\1\0"+
- "\12\u012d\5\0\4\u012d\1\0\3\u012d\1\0\35\213\1\u012e"+
- "\1\u01a3\66\213\35\215\1\u0130\1\u01a4\66\215\16\217\1\220"+
- "\3\217\1\220\14\217\1\220\4\217\1\220\14\217\1\u01a5"+
- "\14\217\1\u01a5\26\217\16\0\2\u0134\2\0\1\u0134\160\0"+
- "\1\u01a6\24\0\1\u01a6\77\0\1\u01a7\24\0\1\u01a7\126\0"+
- "\1\u01a8\35\0\2\u0139\2\0\1\u0139\75\0\1\u013a\5\0"+
- "\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139"+
- "\22\0\11\u0138\1\u01a9\15\u0138\1\0\6\u0138\1\u01a9\3\u0138"+
- "\5\0\4\u0138\1\u013a\3\u0138\2\0\2\u0138\1\0\1\u0138"+
- "\1\0\10\u0138\2\u0139\2\0\1\u0139\22\0\2\u0138\1\u01aa"+
- "\10\u0138\1\u01aa\13\u0138\1\0\12\u0138\5\0\4\u0138\1\u013a"+
- "\3\u0138\2\0\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139"+
- "\2\0\1\u0139\22\0\1\u0138\1\u01ab\13\u0138\1\u01ab\11\u0138"+
- "\1\0\12\u0138\5\0\4\u0138\1\u013a\3\u0138\107\0\1\u01ac"+
- "\64\0\1\u01ad\13\0\1\u01ad\43\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\5\44\1\u01ae\21\44\1\0\3\44"+
- "\1\u01ae\4\44\1\u01af\1\44\5\0\4\44\1\0\3\44"+
+ "\1\u019a\21\44\1\0\3\44\1\u019a\6\44\5\0\4\44"+
+ "\1\0\3\44\1\0\2\131\1\0\1\131\1\0\2\131"+
+ "\3\0\2\131\1\0\6\131\1\u0108\1\u0109\1\u0104\1\131"+
+ "\1\0\15\131\27\0\1\131\12\0\5\131\4\0\1\131"+
+ "\3\0\24\131\1\0\1\u0109\1\u0104\1\131\1\u010c\75\131"+
+ "\1\0\2\u0106\1\0\1\u0106\1\0\10\u0106\27\0\27\u0106"+
+ "\1\0\12\u0106\4\0\1\u019b\4\u0106\1\0\3\u0106\1\0"+
+ "\1\131\2\u0107\1\131\1\u0107\1\131\10\u0107\5\131\1\u0103"+
+ "\1\0\1\u0104\1\131\1\u0105\15\131\27\u0107\1\131\12\u0107"+
+ "\4\131\1\u019c\4\u0107\1\131\3\u0107\1\131\2\136\1\0"+
+ "\1\136\1\0\2\136\3\0\2\136\1\0\6\136\1\u0111"+
+ "\1\136\1\u010e\1\u0109\1\0\15\136\27\0\1\136\12\0"+
+ "\5\136\4\0\1\136\3\0\24\136\1\0\1\136\1\u010e"+
+ "\1\u0109\1\u0112\76\136\2\u0110\1\136\1\u0110\1\136\10\u0110"+
+ "\5\136\1\u010d\1\136\1\u010e\1\0\1\u010f\15\136\27\u0110"+
+ "\1\136\12\u0110\4\136\1\u019d\4\u0110\1\136\3\u0110\1\136"+
+ "\31\0\1\u019e\73\0\2\150\1\u019f\1\150\1\u019f\2\150"+
+ "\3\u019f\2\150\1\u019f\1\150\1\0\3\150\1\0\1\u01a0"+
+ "\1\150\1\u0117\1\150\1\u01a1\15\150\27\u019f\1\150\12\u019f"+
+ "\5\150\4\u019f\1\150\3\u019f\17\150\1\0\3\150\1\0"+
+ "\120\150\1\0\3\150\1\0\1\u01a1\1\150\1\u0117\1\150"+
+ "\1\u01a2\75\150\16\u0119\1\u01a3\3\u0119\1\u01a3\102\u0119\2\0"+
+ "\1\u0119\1\0\1\u0119\2\0\3\u0119\1\0\2\u0119\2\0"+
+ "\1\u011a\25\0\27\u0119\1\0\12\u0119\5\0\4\u0119\1\0"+
+ "\3\u0119\1\0\16\u0121\1\u01a4\3\u0121\1\u01a4\102\u0121\2\163"+
+ "\1\u011f\1\163\1\u011f\2\163\3\u011f\2\163\1\u011f\1\163"+
+ "\1\u0122\3\163\1\u0122\22\163\27\u011f\1\163\12\u011f\5\163"+
+ "\4\u011f\1\163\3\u011f\3\163\1\u0121\1\163\1\u0121\2\163"+
+ "\3\u0121\1\163\2\u0121\1\163\1\0\1\u0123\2\163\1\0"+
+ "\22\163\27\u0121\1\163\12\u0121\5\163\4\u0121\1\163\3\u0121"+
+ "\1\163\31\0\1\u01a5\111\0\2\u012c\2\0\1\u012c\5\0"+
+ "\1\u012d\75\0\1\205\4\0\1\205\3\0\1\205\113\0"+
+ "\2\u012f\1\0\1\u012f\1\0\10\u012f\27\0\27\u012f\1\0"+
+ "\12\u012f\5\0\4\u012f\1\0\3\u012f\1\0\35\214\1\u0130"+
+ "\1\u01a6\66\214\35\216\1\u0132\1\u01a7\66\216\16\220\1\221"+
+ "\3\220\1\221\14\220\1\221\4\220\1\221\14\220\1\u01a8"+
+ "\14\220\1\u01a8\26\220\16\0\2\u0136\2\0\1\u0136\160\0"+
+ "\1\u01a9\24\0\1\u01a9\77\0\1\u01aa\24\0\1\u01aa\126\0"+
+ "\1\u01ab\35\0\2\u013b\2\0\1\u013b\75\0\1\u013c\5\0"+
+ "\2\u013a\1\0\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b"+
+ "\22\0\11\u013a\1\u01ac\15\u013a\1\0\6\u013a\1\u01ac\3\u013a"+
+ "\5\0\4\u013a\1\u013c\3\u013a\2\0\2\u013a\1\0\1\u013a"+
+ "\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0\2\u013a\1\u01ad"+
+ "\10\u013a\1\u01ad\13\u013a\1\0\12\u013a\5\0\4\u013a\1\u013c"+
+ "\3\u013a\2\0\2\u013a\1\0\1\u013a\1\0\10\u013a\2\u013b"+
+ "\2\0\1\u013b\22\0\1\u013a\1\u01ae\13\u013a\1\u01ae\11\u013a"+
+ "\1\0\12\u013a\5\0\4\u013a\1\u013c\3\u013a\107\0\1\u01af"+
+ "\64\0\1\u01b0\13\0\1\u01b0\43\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\5\44\1\u01b1\21\44\1\0\3\44"+
+ "\1\u01b1\4\44\1\u01b2\1\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\2\44"+
- "\1\u01b0\10\44\1\u01b0\13\44\1\0\12\44\5\0\4\44"+
+ "\1\u01b3\10\44\1\u01b3\13\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\5\44\1\u01b1\21\44\1\0\3\44\1\u01b1\6\44"+
+ "\27\0\5\44\1\u01b4\21\44\1\0\3\44\1\u01b4\6\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\44\1\u01b2\13\44\1\u01b2\11\44"+
+ "\1\0\10\44\27\0\1\44\1\u01b5\13\44\1\u01b5\11\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\5\44\1\u01b3\21\44"+
- "\1\0\3\44\1\u01b3\6\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\5\44\1\u01b6\21\44"+
+ "\1\0\3\44\1\u01b6\6\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\11\44"+
- "\1\u01b4\15\44\1\0\6\44\1\u01b4\3\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u01b5\1\0\10\44"+
- "\27\0\22\44\1\u01b5\4\44\1\0\12\44\5\0\4\44"+
+ "\1\u01b7\15\44\1\0\6\44\1\u01b7\3\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u01b8\1\0\10\44"+
+ "\27\0\22\44\1\u01b8\4\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\2\44\1\u01b6\10\44\1\u01b6\13\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\2\0\1\247\4\0\1\247"+
- "\3\0\1\247\113\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\7\44\1\u01b7\17\44\1\0\5\44\1\u01b7\4\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u01b8"+
- "\1\0\10\44\27\0\22\44\1\u01b8\4\44\1\0\12\44"+
+ "\27\0\2\44\1\u01b9\10\44\1\u01b9\13\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\2\0\1\250\4\0\1\250"+
+ "\3\0\1\250\113\0\2\44\1\0\1\44\1\0\10\44"+
+ "\27\0\7\44\1\u01ba\17\44\1\0\5\44\1\u01ba\4\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u01bb"+
+ "\1\0\10\44\27\0\22\44\1\u01bb\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\2\44\1\u01b9\5\44\27\0\4\44\1\u01ba\1\u01bb"+
- "\2\44\1\u01b9\3\44\1\u01bc\4\44\1\u01ba\5\44\1\0"+
- "\1\44\1\u01bc\1\44\1\u01bb\6\44\5\0\2\44\1\u01bd"+
- "\1\44\1\0\3\44\2\0\2\44\1\0\1\u01be\1\0"+
- "\10\44\27\0\22\44\1\u01be\4\44\1\0\12\44\5\0"+
+ "\1\0\2\44\1\u01bc\5\44\27\0\4\44\1\u01bd\1\u01be"+
+ "\2\44\1\u01bc\3\44\1\u01bf\4\44\1\u01bd\5\44\1\0"+
+ "\1\44\1\u01bf\1\44\1\u01be\6\44\5\0\2\44\1\u01c0"+
+ "\1\44\1\0\3\44\2\0\2\44\1\0\1\u01c1\1\0"+
+ "\10\44\27\0\22\44\1\u01c1\4\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\11\44\1\u01bf\15\44\1\0\6\44\1\u01bf"+
+ "\10\44\27\0\11\44\1\u01c2\15\44\1\0\6\44\1\u01c2"+
"\3\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\u01c0\11\44\1\u01c0\14\44"+
+ "\1\44\1\0\10\44\27\0\1\u01c3\11\44\1\u01c3\14\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u01c1\17\44"+
- "\1\0\5\44\1\u01c1\4\44\5\0\4\44\1\0\3\44"+
- "\2\0\1\u0151\1\260\1\0\1\u0151\1\0\1\u0151\1\0"+
- "\3\u0151\34\0\1\u0151\1\0\1\u0151\3\0\1\u0151\2\0"+
- "\1\u0151\3\0\1\u0151\1\0\2\u0151\1\0\1\u0151\5\0"+
- "\1\u0151\27\0\1\261\3\0\1\u0152\3\0\1\u0152\113\0"+
- "\2\44\1\0\1\u01c2\1\0\10\44\27\0\22\44\1\u01c2"+
+ "\1\0\1\44\1\0\10\44\27\0\7\44\1\u01c4\17\44"+
+ "\1\0\5\44\1\u01c4\4\44\5\0\4\44\1\0\3\44"+
+ "\2\0\1\u0153\1\261\1\0\1\u0153\1\0\1\u0153\1\0"+
+ "\3\u0153\34\0\1\u0153\1\0\1\u0153\3\0\1\u0153\2\0"+
+ "\1\u0153\3\0\1\u0153\1\0\2\u0153\1\0\1\u0153\5\0"+
+ "\1\u0153\27\0\1\262\3\0\1\u0154\3\0\1\u0154\113\0"+
+ "\2\44\1\0\1\u01c5\1\0\10\44\27\0\22\44\1\u01c5"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\14\44\1\u01c3"+
- "\12\44\1\0\1\44\1\u01c3\10\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\14\44\1\u01c6"+
+ "\12\44\1\0\1\44\1\u01c6\10\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\2\44\1\u01c4\10\44\1\u01c4\13\44\1\0\12\44\5\0"+
+ "\2\44\1\u01c7\10\44\1\u01c7\13\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\24\44\1\u01c5\2\44\1\0\2\44\1\u01c5"+
- "\7\44\5\0\4\44\1\0\3\44\35\0\1\u0159\71\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u01c6"+
- "\10\44\1\u01c6\13\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\3\0\1\u01c7\1\0\1\u01c7\2\0\3\u01c7\1\0"+
- "\2\u01c7\2\0\1\u0159\4\0\1\u01c8\20\0\27\u01c7\1\0"+
- "\12\u01c7\1\u01c9\4\0\4\u01c7\1\0\3\u01c7\72\0\1\u01ca"+
- "\5\0\1\u01ca\43\0\2\u01cb\2\0\1\u01cb\103\0\2\44"+
+ "\10\44\27\0\24\44\1\u01c8\2\44\1\0\2\44\1\u01c8"+
+ "\7\44\5\0\4\44\1\0\3\44\35\0\1\u015b\71\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u01c9"+
+ "\10\44\1\u01c9\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\3\0\1\u01ca\1\0\1\u01ca\2\0\3\u01ca\1\0"+
+ "\2\u01ca\2\0\1\u015b\4\0\1\u01cb\20\0\27\u01ca\1\0"+
+ "\12\u01ca\1\u01cc\4\0\4\u01ca\1\0\3\u01ca\72\0\1\u01cd"+
+ "\5\0\1\u01cd\43\0\2\u01ce\2\0\1\u01ce\103\0\2\44"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\10\44"+
- "\1\u01cc\1\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\u01cf\1\44\5\0\4\44\1\0\3\44\2\0\2\44"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\10\44"+
- "\1\u01cd\1\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u01ce\17\44"+
- "\1\0\5\44\1\u01ce\4\44\5\0\4\44\1\0\3\44"+
+ "\1\u01d0\1\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\7\44\1\u01d1\17\44"+
+ "\1\0\5\44\1\u01d1\4\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\2\44"+
- "\1\u01cf\10\44\1\u01cf\13\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u01d0\1\0\10\44"+
- "\27\0\22\44\1\u01d0\4\44\1\0\12\44\5\0\4\44"+
+ "\1\u01d2\10\44\1\u01d2\13\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u01d3\1\0\10\44"+
+ "\27\0\22\44\1\u01d3\4\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\11\44\1\u01d1\15\44\1\0\6\44\1\u01d1\3\44"+
+ "\27\0\11\44\1\u01d4\15\44\1\0\6\44\1\u01d4\3\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\2\44\1\u01d2\10\44\1\u01d2\13\44"+
+ "\1\0\10\44\27\0\2\44\1\u01d5\10\44\1\u01d5\13\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\11\44\1\u01d3\15\44"+
- "\1\0\6\44\1\u01d3\3\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\u01d4\1\0\10\44\27\0\22\44"+
- "\1\u01d4\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\11\44\1\u01d6\15\44"+
+ "\1\0\6\44\1\u01d6\3\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\u01d7\1\0\10\44\27\0\22\44"+
+ "\1\u01d7\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\7\44"+
- "\1\u01d5\17\44\1\0\5\44\1\u01d5\4\44\5\0\4\44"+
+ "\1\u01d8\17\44\1\0\5\44\1\u01d8\4\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\11\44\1\u01d6\15\44\1\0\6\44\1\u01d6\3\44"+
+ "\27\0\11\44\1\u01d9\15\44\1\0\6\44\1\u01d9\3\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\15\44\1\u01d7\11\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u01d8"+
- "\1\0\10\44\27\0\22\44\1\u01d8\4\44\1\0\12\44"+
+ "\1\0\10\44\27\0\15\44\1\u01da\11\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u01db"+
+ "\1\0\10\44\27\0\22\44\1\u01db\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u01d9\15\44\1\0\6\44"+
- "\1\u01d9\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\5\44\1\u01da\21\44"+
- "\1\0\3\44\1\u01da\6\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\u01db\1\0\10\44\27\0\22\44"+
- "\1\u01db\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u01dc"+
- "\11\44\1\u01dc\14\44\1\0\12\44\5\0\4\44\1\0"+
+ "\1\0\10\44\27\0\11\44\1\u01dc\15\44\1\0\6\44"+
+ "\1\u01dc\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\22\44\1\u01dd\4\44"+
+ "\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\5\44\1\u01de\21\44"+
+ "\1\0\3\44\1\u01de\6\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\u01df\1\0\10\44\27\0\22\44"+
+ "\1\u01df\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u01e0"+
+ "\11\44\1\u01e0\14\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\13\44\1\u01dd\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\13\44\1\u01e1\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\7\44\1\u01de\17\44\1\0\5\44\1\u01de\4\44\5\0"+
+ "\7\44\1\u01e2\17\44\1\0\5\44\1\u01e2\4\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\22\44\1\u01df\4\44\1\0\12\44\5\0"+
+ "\10\44\27\0\22\44\1\u01e3\4\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\2\44\1\u01e0\5\44\27\0\10\44\1\u01e0\16\44\1\0"+
+ "\2\44\1\u01e4\5\44\27\0\10\44\1\u01e4\16\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\7\44\1\u01e1\17\44\1\0"+
- "\5\44\1\u01e1\4\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\5\44\1\u01e2"+
+ "\1\44\1\0\10\44\27\0\7\44\1\u01e5\17\44\1\0"+
+ "\5\44\1\u01e5\4\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\5\44\1\u01e6"+
"\21\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u01e3"+
- "\17\44\1\0\5\44\1\u01e3\4\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u01e7"+
+ "\17\44\1\0\5\44\1\u01e7\4\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\1\u01e4\11\44\1\u01e4\14\44\1\0\12\44\5\0\4\44"+
+ "\1\u01e8\11\44\1\u01e8\14\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\3\44"+
- "\1\u01e5\4\44\27\0\17\44\1\u01e5\7\44\1\0\12\44"+
+ "\1\u01e9\4\44\27\0\17\44\1\u01e9\7\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u01e6\15\44\1\0\12\44"+
+ "\1\0\10\44\27\0\11\44\1\u01ea\15\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\21\44\1\u01e7\5\44\1\0\12\44"+
+ "\1\0\10\44\27\0\21\44\1\u01eb\5\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\7\44\1\u01e8\4\44\1\u01e9\12\44"+
- "\1\0\1\44\1\u01e9\3\44\1\u01e8\4\44\5\0\4\44"+
+ "\1\0\10\44\27\0\7\44\1\u01ec\4\44\1\u01ed\12\44"+
+ "\1\0\1\44\1\u01ed\3\44\1\u01ec\4\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\24\44\1\u01ea\2\44\1\0\2\44\1\u01ea\7\44"+
+ "\27\0\24\44\1\u01ee\2\44\1\0\2\44\1\u01ee\7\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u01eb\15\44\1\0\6\44"+
- "\1\u01eb\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u01ec\1\0\10\44\27\0\22\44\1\u01ec\4\44"+
+ "\1\0\10\44\27\0\11\44\1\u01ef\15\44\1\0\6\44"+
+ "\1\u01ef\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\u01f0\1\0\10\44\27\0\22\44\1\u01f0\4\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\3\44\1\u01ed\2\44"+
- "\1\u01ed\20\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\3\44\1\u01f1\2\44"+
+ "\1\u01f1\20\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\14\44"+
- "\1\u01ee\12\44\1\0\1\44\1\u01ee\10\44\5\0\4\44"+
+ "\1\u01f2\12\44\1\0\1\44\1\u01f2\10\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\24\44\1\u01ef\2\44\1\0\2\44\1\u01ef\7\44"+
+ "\27\0\24\44\1\u01f3\2\44\1\0\2\44\1\u01f3\7\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\22\44\1\u01f0\4\44\1\0\12\44"+
+ "\1\0\10\44\27\0\22\44\1\u01f4\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\7\44\1\u01f1\17\44\1\0\5\44"+
- "\1\u01f1\4\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\3\44\1\u01f2\2\44"+
- "\1\u01f2\11\44\1\u01f3\6\44\1\0\12\44\5\0\4\44"+
- "\1\0\1\u01f3\2\44\2\0\2\44\1\0\1\u01f4\1\0"+
- "\10\44\27\0\22\44\1\u01f4\4\44\1\0\12\44\5\0"+
+ "\1\0\10\44\27\0\7\44\1\u01f5\17\44\1\0\5\44"+
+ "\1\u01f5\4\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\3\44\1\u01f6\2\44"+
+ "\1\u01f6\11\44\1\u01f7\6\44\1\0\12\44\5\0\4\44"+
+ "\1\0\1\u01f7\2\44\2\0\2\44\1\0\1\u01f8\1\0"+
+ "\10\44\27\0\22\44\1\u01f8\4\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\11\44\1\u01f5\15\44\1\0\6\44\1\u01f5"+
+ "\10\44\27\0\11\44\1\u01f9\15\44\1\0\6\44\1\u01f9"+
"\3\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\u01f6\1\0\10\44\27\0\22\44\1\u01f6\4\44\1\0"+
- "\12\44\5\0\4\44\1\0\3\44\46\0\1\u01f7\11\0"+
- "\1\u01f7\112\0\1\u01f8\11\0\1\u01f8\115\0\1\u01f9\2\0"+
- "\1\u01f9\141\0\1\u01fa\31\0\1\u01fa\51\0\1\u01fb\10\0"+
- "\1\u01fb\112\0\1\u01fc\13\0\1\u01fc\147\0\1\u01fd\73\0"+
- "\1\u01fe\25\0\1\u01fe\70\0\1\u01ff\13\0\1\u01ff\123\0"+
- "\1\u0200\14\0\1\u0200\27\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\11\44\1\u0201\15\44\1\0\6\44\1\u0201"+
+ "\1\u01fa\1\0\10\44\27\0\22\44\1\u01fa\4\44\1\0"+
+ "\12\44\5\0\4\44\1\0\3\44\46\0\1\u01fb\11\0"+
+ "\1\u01fb\112\0\1\u01fc\11\0\1\u01fc\115\0\1\u01fd\2\0"+
+ "\1\u01fd\141\0\1\u01fe\31\0\1\u01fe\51\0\1\u01ff\10\0"+
+ "\1\u01ff\112\0\1\u0200\13\0\1\u0200\147\0\1\u0201\73\0"+
+ "\1\u0202\25\0\1\u0202\70\0\1\u0203\13\0\1\u0203\123\0"+
+ "\1\u0204\14\0\1\u0204\27\0\2\44\1\0\1\44\1\0"+
+ "\10\44\27\0\11\44\1\u0205\15\44\1\0\6\44\1\u0205"+
"\3\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\11\44\1\u0202\15\44\1\0"+
- "\6\44\1\u0202\3\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\u019c\1\0\1\u019c\1\0\10\u019c\27\0\27\u019c\1\0"+
- "\12\u019c\4\0\1\u0203\4\u019c\1\0\3\u019c\1\0\2\147"+
- "\1\0\1\147\1\0\2\147\3\0\2\147\1\0\1\147"+
- "\1\0\3\147\1\0\1\u019d\1\147\1\u0115\1\147\1\0"+
- "\15\147\27\0\1\147\12\0\5\147\4\0\1\147\3\0"+
- "\17\147\1\0\3\147\2\0\1\147\1\u0115\1\147\1\u019f"+
- "\75\147\16\217\1\220\3\217\1\220\14\217\1\220\4\217"+
- "\1\220\24\217\1\u0204\5\217\1\u0204\25\217\61\0\1\u01a8"+
- "\14\0\1\u01a8\104\0\1\u0205\24\0\1\u0205\25\0\1\u0205"+
- "\62\0\1\u0205\36\0\2\u0138\1\0\1\u0138\1\0\2\u0138"+
- "\1\u0206\5\u0138\2\u0139\2\0\1\u0139\22\0\10\u0138\1\u0206"+
- "\16\u0138\1\0\12\u0138\5\0\4\u0138\1\u013a\3\u0138\2\0"+
- "\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139"+
- "\22\0\7\u0138\1\u0207\17\u0138\1\0\5\u0138\1\u0207\4\u0138"+
- "\5\0\4\u0138\1\u013a\3\u0138\2\0\2\u0138\1\0\1\u0208"+
- "\1\0\10\u0138\2\u0139\2\0\1\u0139\22\0\22\u0138\1\u0208"+
- "\4\u0138\1\0\12\u0138\5\0\4\u0138\1\u013a\3\u0138\76\0"+
- "\1\u0209\3\0\1\u0209\75\0\1\u020a\25\0\1\u020a\25\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u020b"+
- "\15\44\1\0\6\44\1\u020b\3\44\5\0\4\44\1\0"+
+ "\1\44\1\0\10\44\27\0\11\44\1\u0206\15\44\1\0"+
+ "\6\44\1\u0206\3\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\u019f\1\0\1\u019f\1\0\10\u019f\27\0\27\u019f\1\0"+
+ "\12\u019f\4\0\1\u0207\4\u019f\1\0\3\u019f\1\0\2\150"+
+ "\1\0\1\150\1\0\2\150\3\0\2\150\1\0\1\150"+
+ "\1\0\3\150\1\0\1\u01a0\1\150\1\u0117\1\150\1\0"+
+ "\15\150\27\0\1\150\12\0\5\150\4\0\1\150\3\0"+
+ "\17\150\1\0\3\150\2\0\1\150\1\u0117\1\150\1\u01a2"+
+ "\75\150\16\220\1\221\3\220\1\221\14\220\1\221\4\220"+
+ "\1\221\24\220\1\u0208\5\220\1\u0208\25\220\61\0\1\u01ab"+
+ "\14\0\1\u01ab\104\0\1\u0209\24\0\1\u0209\25\0\1\u0209"+
+ "\62\0\1\u0209\36\0\2\u013a\1\0\1\u013a\1\0\2\u013a"+
+ "\1\u020a\5\u013a\2\u013b\2\0\1\u013b\22\0\10\u013a\1\u020a"+
+ "\16\u013a\1\0\12\u013a\5\0\4\u013a\1\u013c\3\u013a\2\0"+
+ "\2\u013a\1\0\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b"+
+ "\22\0\7\u013a\1\u020b\17\u013a\1\0\5\u013a\1\u020b\4\u013a"+
+ "\5\0\4\u013a\1\u013c\3\u013a\2\0\2\u013a\1\0\1\u020c"+
+ "\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0\22\u013a\1\u020c"+
+ "\4\u013a\1\0\12\u013a\5\0\4\u013a\1\u013c\3\u013a\76\0"+
+ "\1\u020d\3\0\1\u020d\75\0\1\u020e\25\0\1\u020e\25\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u020f"+
+ "\15\44\1\0\6\44\1\u020f\3\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\3\44\1\u020c\2\44\1\u020c\20\44\1\0\12\44\5\0"+
+ "\3\44\1\u0210\2\44\1\u0210\20\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\25\44\1\u020d\1\44\1\0\12\44\5\0"+
- "\1\44\1\u020d\2\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\44\1\u020e\13\44\1\u020e"+
+ "\10\44\27\0\25\44\1\u0211\1\44\1\0\12\44\5\0"+
+ "\1\44\1\u0211\2\44\1\0\3\44\2\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\1\44\1\u0212\13\44\1\u0212"+
"\11\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u020f"+
- "\10\44\1\u020f\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u0213"+
+ "\10\44\1\u0213\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\3\44\1\u0210\2\44\1\u0210\20\44\1\0\12\44\5\0"+
+ "\3\44\1\u0214\2\44\1\u0214\20\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\2\44\1\u0211\10\44\1\u0211\13\44\1\0"+
+ "\10\44\27\0\2\44\1\u0215\10\44\1\u0215\13\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\7\44\1\u0212\17\44\1\0"+
- "\5\44\1\u0212\4\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u0213"+
- "\15\44\1\0\6\44\1\u0213\3\44\5\0\4\44\1\0"+
+ "\1\44\1\0\10\44\27\0\7\44\1\u0216\17\44\1\0"+
+ "\5\44\1\u0216\4\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u0217"+
+ "\15\44\1\0\6\44\1\u0217\3\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\3\44\1\u0214\2\44\1\u0214\20\44\1\0\12\44\5\0"+
+ "\3\44\1\u0218\2\44\1\u0218\20\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\1\u0215\11\44\1\u0215\14\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u0216"+
- "\1\0\10\44\27\0\22\44\1\u0216\4\44\1\0\12\44"+
+ "\10\44\27\0\1\u0219\11\44\1\u0219\14\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u021a"+
+ "\1\0\10\44\27\0\22\44\1\u021a\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\2\44\1\u0217\5\44\27\0\10\44\1\u0217\16\44"+
+ "\1\0\2\44\1\u021b\5\44\27\0\10\44\1\u021b\16\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\12\44"+
- "\5\0\2\44\1\u0218\1\44\1\0\3\44\2\0\2\44"+
+ "\5\0\2\44\1\u021c\1\44\1\0\3\44\2\0\2\44"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\11\44"+
- "\1\u0219\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\5\44\1\u021a\21\44\1\0"+
- "\3\44\1\u021a\6\44\5\0\4\44\1\0\3\44\2\0"+
+ "\1\u021d\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\5\44\1\u021e\21\44\1\0"+
+ "\3\44\1\u021e\6\44\5\0\4\44\1\0\3\44\2\0"+
"\2\44\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
- "\12\44\5\0\1\u021b\3\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\2\44\1\u021c\10\44"+
- "\1\u021c\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\u021d\1\0\10\44\27\0\22\44"+
- "\1\u021d\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\12\44\5\0\1\u021f\3\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\2\44\1\u0220\10\44"+
+ "\1\u0220\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\u0221\1\0\10\44\27\0\22\44"+
+ "\1\u0221\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\11\44"+
- "\1\u021e\15\44\1\0\6\44\1\u021e\3\44\5\0\4\44"+
+ "\1\u0222\15\44\1\0\6\44\1\u0222\3\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\7\44\1\u021f\17\44\1\0\5\44\1\u021f\4\44"+
+ "\27\0\7\44\1\u0223\17\44\1\0\5\44\1\u0223\4\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
"\1\0\10\44\27\0\27\44\1\0\12\44\5\0\3\44"+
- "\1\u0220\1\0\3\44\2\0\2\u01c7\1\0\1\u01c7\1\0"+
- "\10\u01c7\1\u0221\3\0\1\u0222\22\0\27\u01c7\1\0\12\u01c7"+
- "\5\0\4\u01c7\1\0\3\u01c7\3\0\1\u0223\1\0\1\u0223"+
- "\2\0\3\u0223\1\0\2\u0223\30\0\27\u0223\1\0\12\u0223"+
- "\5\0\4\u0223\1\0\3\u0223\3\0\1\u0224\1\0\1\u0224"+
- "\2\0\3\u0224\1\0\2\u0224\30\0\27\u0224\1\0\12\u0224"+
- "\5\0\4\u0224\1\0\3\u0224\47\0\1\u0225\13\0\1\u0225"+
+ "\1\u0224\1\0\3\44\2\0\2\u01ca\1\0\1\u01ca\1\0"+
+ "\10\u01ca\1\u0225\3\0\1\u0226\22\0\27\u01ca\1\0\12\u01ca"+
+ "\5\0\4\u01ca\1\0\3\u01ca\3\0\1\u0227\1\0\1\u0227"+
+ "\2\0\3\u0227\1\0\2\u0227\30\0\27\u0227\1\0\12\u0227"+
+ "\5\0\4\u0227\1\0\3\u0227\3\0\1\u0228\1\0\1\u0228"+
+ "\2\0\3\u0228\1\0\2\u0228\30\0\27\u0228\1\0\12\u0228"+
+ "\5\0\4\u0228\1\0\3\u0228\47\0\1\u0229\13\0\1\u0229"+
"\43\0\2\44\1\0\1\44\1\0\10\44\27\0\1\44"+
- "\1\u0226\13\44\1\u0226\11\44\1\0\12\44\5\0\4\44"+
+ "\1\u022a\13\44\1\u022a\11\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\5\44\1\u0227\21\44\1\0\3\44\1\u0227\6\44"+
+ "\27\0\5\44\1\u022b\21\44\1\0\3\44\1\u022b\6\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\44\1\u0228\13\44\1\u0228\11\44"+
+ "\1\0\10\44\27\0\1\44\1\u022c\13\44\1\u022c\11\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\12\44"+
- "\5\0\1\u0229\3\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\14\44\1\u022a\12\44\1\0"+
- "\1\44\1\u022a\10\44\5\0\4\44\1\0\3\44\2\0"+
+ "\5\0\1\u022d\3\44\1\0\3\44\2\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\14\44\1\u022e\12\44\1\0"+
+ "\1\44\1\u022e\10\44\5\0\4\44\1\0\3\44\2\0"+
"\2\44\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
- "\10\44\1\u022b\1\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u022c"+
- "\10\44\1\u022c\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\10\44\1\u022f\1\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u0230"+
+ "\10\44\1\u0230\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\1\44\1\u022d\13\44\1\u022d\11\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\u022e\1\0"+
- "\10\44\27\0\2\44\1\u022f\10\44\1\u022f\6\44\1\u022e"+
+ "\1\44\1\u0231\13\44\1\u0231\11\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\u0232\1\0"+
+ "\10\44\27\0\2\44\1\u0233\10\44\1\u0233\6\44\1\u0232"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
"\2\44\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
- "\10\44\1\u0230\1\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\13\44\1\u0231"+
+ "\10\44\1\u0234\1\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\13\44\1\u0235"+
"\13\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0232"+
- "\17\44\1\0\5\44\1\u0232\4\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\u0233\1\0\10\44\27\0"+
- "\22\44\1\u0233\4\44\1\0\12\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0236"+
+ "\17\44\1\0\5\44\1\u0236\4\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\u0237\1\0\10\44\27\0"+
+ "\22\44\1\u0237\4\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\7\44\1\u0234\17\44\1\0\5\44\1\u0234\4\44\5\0"+
+ "\15\44\1\u0238\11\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\7\44\1\u0239\17\44\1\0\5\44\1\u0239\4\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\27\44\1\0\12\44\5\0\2\44\1\u0235"+
+ "\10\44\27\0\27\44\1\0\12\44\5\0\2\44\1\u023a"+
"\1\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\7\44\1\u0236\17\44\1\0\12\44\5\0"+
+ "\10\44\27\0\7\44\1\u023b\17\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\24\44\1\u0237\2\44\1\0\12\44\5\0"+
+ "\10\44\27\0\24\44\1\u023c\2\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\5\44\1\u0238\21\44\1\0\3\44\1\u0238"+
+ "\10\44\27\0\5\44\1\u023d\21\44\1\0\3\44\1\u023d"+
"\6\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\6\44\1\u0239\20\44\1\0"+
+ "\1\44\1\0\10\44\27\0\6\44\1\u023e\20\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\24\44\1\u023a\2\44\1\0"+
- "\2\44\1\u023a\7\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u023b"+
- "\10\44\1\u023b\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\1\44\1\0\10\44\27\0\24\44\1\u023f\2\44\1\0"+
+ "\2\44\1\u023f\7\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u0240"+
+ "\10\44\1\u0240\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\5\44\1\u023c\21\44\1\0\3\44\1\u023c\6\44\5\0"+
+ "\5\44\1\u0241\21\44\1\0\3\44\1\u0241\6\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\7\44\1\u023d\17\44\1\0\5\44\1\u023d"+
+ "\10\44\27\0\7\44\1\u0242\17\44\1\0\5\44\1\u0242"+
"\4\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\27\44\1\0\11\44\1\u023e"+
+ "\1\44\1\0\10\44\27\0\27\44\1\0\11\44\1\u0243"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\2\44\1\u023f\10\44\1\u023f\13\44"+
+ "\1\0\10\44\27\0\2\44\1\u0244\10\44\1\u0244\13\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u0240\1\0\10\44\27\0\22\44\1\u0240\4\44"+
+ "\1\0\1\u0245\1\0\10\44\27\0\22\44\1\u0245\4\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\14\44\1\u0241\12\44"+
- "\1\0\1\44\1\u0241\10\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\14\44\1\u0246\12\44"+
+ "\1\0\1\44\1\u0246\10\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\27\44"+
- "\1\0\11\44\1\u0242\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\21\44\1\u0243"+
+ "\1\0\11\44\1\u0247\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\21\44\1\u0248"+
"\5\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\u0244\1\0\10\44\27\0\22\44\1\u0244"+
+ "\2\44\1\0\1\u0249\1\0\10\44\27\0\22\44\1\u0249"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0245"+
- "\17\44\1\0\5\44\1\u0245\4\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u024a"+
+ "\17\44\1\0\5\44\1\u024a\4\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\2\44\1\u0246\10\44\1\u0246\13\44\1\0\12\44\5\0"+
+ "\2\44\1\u024b\10\44\1\u024b\13\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\3\44\1\u0247\2\44\1\u0247\20\44\1\0"+
+ "\10\44\27\0\3\44\1\u024c\2\44\1\u024c\20\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\5\44\1\u0248\21\44\1\0"+
- "\3\44\1\u0248\6\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0249"+
- "\17\44\1\0\5\44\1\u0249\4\44\5\0\4\44\1\0"+
- "\3\44\50\0\1\u024a\10\0\1\u024a\122\0\1\u024b\24\0"+
- "\1\u024b\70\0\1\u024c\10\0\1\u024c\50\0\1\u024d\62\0"+
- "\1\u024d\113\0\1\u024e\24\0\1\u024e\70\0\1\u024f\10\0"+
- "\1\u024f\55\0\1\u0250\52\0\1\u0250\44\0\1\u0251\12\0"+
- "\1\u024e\47\0\1\u0251\4\0\1\u0252\102\0\1\u0253\25\0"+
- "\1\u0253\30\0\1\u024a\62\0\1\u024a\36\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\4\44\1\u0254\14\44\1\u0254"+
+ "\1\44\1\0\10\44\27\0\5\44\1\u024d\21\44\1\0"+
+ "\3\44\1\u024d\6\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u024e"+
+ "\17\44\1\0\5\44\1\u024e\4\44\5\0\4\44\1\0"+
+ "\3\44\50\0\1\u024f\10\0\1\u024f\122\0\1\u0250\24\0"+
+ "\1\u0250\70\0\1\u0251\10\0\1\u0251\50\0\1\u0252\62\0"+
+ "\1\u0252\113\0\1\u0253\24\0\1\u0253\70\0\1\u0254\10\0"+
+ "\1\u0254\55\0\1\u0255\52\0\1\u0255\44\0\1\u0256\12\0"+
+ "\1\u0253\47\0\1\u0256\4\0\1\u0257\102\0\1\u0258\25\0"+
+ "\1\u0258\30\0\1\u024f\62\0\1\u024f\36\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\4\44\1\u0259\14\44\1\u0259"+
"\5\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\u0255\1\0\10\44\27\0\22\44\1\u0255"+
+ "\2\44\1\0\1\u025a\1\0\10\44\27\0\22\44\1\u025a"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\1\0"+
- "\16\217\1\220\3\217\1\220\14\217\1\220\4\217\1\220"+
- "\1\217\1\u0256\13\217\1\u0256\42\217\1\0\2\u0138\1\0"+
- "\1\u0138\1\0\10\u0138\2\u0257\2\0\1\u0257\22\0\27\u0138"+
- "\1\0\12\u0138\5\0\4\u0138\1\u0258\3\u0138\2\0\2\u0138"+
- "\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139\22\0"+
- "\5\u0138\1\u0259\21\u0138\1\0\3\u0138\1\u0259\6\u0138\5\0"+
- "\4\u0138\1\u013a\3\u0138\2\0\2\u0138\1\0\1\u0138\1\0"+
- "\10\u0138\2\u0139\2\0\1\u0139\22\0\3\u0138\1\u025a\2\u0138"+
- "\1\u025a\20\u0138\1\0\12\u0138\5\0\4\u0138\1\u013a\3\u0138"+
- "\76\0\1\u025b\3\0\1\u025b\24\0\2\44\1\0\1\u025c"+
- "\1\0\10\44\27\0\22\44\1\u025c\4\44\1\0\12\44"+
+ "\16\220\1\221\3\220\1\221\14\220\1\221\4\220\1\221"+
+ "\1\220\1\u025b\13\220\1\u025b\42\220\1\0\2\u013a\1\0"+
+ "\1\u013a\1\0\10\u013a\2\u025c\2\0\1\u025c\22\0\27\u013a"+
+ "\1\0\12\u013a\5\0\4\u013a\1\u025d\3\u013a\2\0\2\u013a"+
+ "\1\0\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b\22\0"+
+ "\5\u013a\1\u025e\21\u013a\1\0\3\u013a\1\u025e\6\u013a\5\0"+
+ "\4\u013a\1\u013c\3\u013a\2\0\2\u013a\1\0\1\u013a\1\0"+
+ "\10\u013a\2\u013b\2\0\1\u013b\22\0\3\u013a\1\u025f\2\u013a"+
+ "\1\u025f\20\u013a\1\0\12\u013a\5\0\4\u013a\1\u013c\3\u013a"+
+ "\76\0\1\u0260\3\0\1\u0260\24\0\2\44\1\0\1\u0261"+
+ "\1\0\10\44\27\0\22\44\1\u0261\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\24\44\1\u025d\2\44\1\0\2\44"+
- "\1\u025d\7\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u025e\1\0\10\44\27\0\22\44\1\u025e\4\44"+
+ "\1\0\10\44\27\0\24\44\1\u0262\2\44\1\0\2\44"+
+ "\1\u0262\7\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\u0263\1\0\10\44\27\0\22\44\1\u0263\4\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\1\44"+
- "\1\u025f\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
+ "\1\u0264\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\5\44\1\u0260\21\44\1\0"+
- "\3\44\1\u0260\6\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\u0261\1\0\10\44\27\0\22\44\1\u0261"+
+ "\1\44\1\0\10\44\27\0\5\44\1\u0265\21\44\1\0"+
+ "\3\44\1\u0265\6\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\u0266\1\0\10\44\27\0\22\44\1\u0266"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\14\44\1\u0262"+
- "\12\44\1\0\1\44\1\u0262\10\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\14\44\1\u0267"+
+ "\12\44\1\0\1\44\1\u0267\10\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\27\44\1\0\11\44\1\u0263\5\0\4\44\1\0\3\44"+
+ "\27\44\1\0\11\44\1\u0268\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\7\44"+
- "\1\u0264\17\44\1\0\5\44\1\u0264\4\44\5\0\4\44"+
+ "\1\u0269\17\44\1\0\5\44\1\u0269\4\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\4\44\1\u0265\14\44\1\u0265\5\44\1\0\12\44"+
+ "\27\0\4\44\1\u026a\14\44\1\u026a\5\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\44\1\u0266\13\44\1\u0266\11\44"+
+ "\1\0\10\44\27\0\1\44\1\u026b\13\44\1\u026b\11\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\24\44\1\u0267\2\44"+
- "\1\0\2\44\1\u0267\7\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\24\44\1\u026c\2\44"+
+ "\1\0\2\44\1\u026c\7\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\5\44"+
- "\1\u0268\21\44\1\0\3\44\1\u0268\6\44\5\0\4\44"+
+ "\1\u026d\21\44\1\0\3\44\1\u026d\6\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\5\44\1\u0269\21\44\1\0\3\44\1\u0269\6\44"+
+ "\27\0\5\44\1\u026e\21\44\1\0\3\44\1\u026e\6\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\2\44\1\u026a\5\44\27\0\10\44\1\u026a\16\44"+
+ "\1\0\2\44\1\u026f\5\44\27\0\10\44\1\u026f\16\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\24\44\1\u026b\2\44"+
- "\1\0\2\44\1\u026b\7\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\24\44\1\u0270\2\44"+
+ "\1\0\2\44\1\u0270\7\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\11\44"+
- "\1\u026c\15\44\1\0\6\44\1\u026c\3\44\5\0\4\44"+
+ "\1\u0271\15\44\1\0\6\44\1\u0271\3\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\5\44\1\u026d\21\44\1\0\3\44\1\u026d\6\44"+
- "\5\0\4\44\1\0\3\44\17\0\1\u0221\107\0\2\u0223"+
- "\1\0\1\u0223\1\0\10\u0223\6\0\1\u026e\20\0\27\u0223"+
- "\1\0\12\u0223\5\0\4\u0223\1\0\3\u0223\2\0\2\u0224"+
- "\1\0\1\u0224\1\0\10\u0224\27\0\27\u0224\1\0\12\u0224"+
- "\1\u026f\4\0\4\u0224\1\0\3\u0224\53\0\1\u0270\25\0"+
- "\1\u0270\25\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\3\44\1\u0271\2\44\1\u0271\20\44\1\0\12\44\5\0"+
+ "\27\0\5\44\1\u0272\21\44\1\0\3\44\1\u0272\6\44"+
+ "\5\0\4\44\1\0\3\44\17\0\1\u0225\107\0\2\u0227"+
+ "\1\0\1\u0227\1\0\10\u0227\6\0\1\u0273\20\0\27\u0227"+
+ "\1\0\12\u0227\5\0\4\u0227\1\0\3\u0227\2\0\2\u0228"+
+ "\1\0\1\u0228\1\0\10\u0228\27\0\27\u0228\1\0\12\u0228"+
+ "\1\u0274\4\0\4\u0228\1\0\3\u0228\53\0\1\u0275\25\0"+
+ "\1\u0275\25\0\2\44\1\0\1\44\1\0\10\44\27\0"+
+ "\3\44\1\u0276\2\44\1\u0276\20\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\1\44\1\u0272\13\44\1\u0272\11\44\1\0"+
+ "\10\44\27\0\1\44\1\u0277\13\44\1\u0277\11\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\2\44\1\u0273\10\44\1\u0273"+
+ "\1\44\1\0\10\44\27\0\2\44\1\u0278\10\44\1\u0278"+
"\13\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
"\2\44\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
- "\1\u0274\3\44\1\u0274\5\44\5\0\4\44\1\0\3\44"+
+ "\1\u0279\3\44\1\u0279\5\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\11\44"+
- "\1\u0275\15\44\1\0\6\44\1\u0275\3\44\5\0\4\44"+
+ "\1\u027a\15\44\1\0\6\44\1\u027a\3\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\1\44\1\u0276\13\44\1\u0276\11\44\1\0\12\44"+
+ "\27\0\1\44\1\u027b\13\44\1\u027b\11\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\2\44\1\u0277\5\44\27\0\10\44\1\u0277\16\44"+
+ "\1\0\2\44\1\u027c\5\44\27\0\10\44\1\u027c\16\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\2\44\1\u0278\10\44"+
- "\1\u0278\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\2\44\1\u027d\10\44"+
+ "\1\u027d\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\3\44"+
- "\1\u0279\2\44\1\u0279\20\44\1\0\12\44\5\0\4\44"+
+ "\1\u027e\2\44\1\u027e\20\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\4\44\1\u027a\14\44\1\u027a\5\44\1\0\12\44"+
+ "\27\0\4\44\1\u027f\14\44\1\u027f\5\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\17\44\1\u027b\7\44\1\0\12\44"+
+ "\1\0\10\44\27\0\17\44\1\u0280\7\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\25\44\1\u027c\1\44\1\0\12\44"+
- "\5\0\1\44\1\u027c\2\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u027d\17\44"+
+ "\1\0\10\44\27\0\25\44\1\u0281\1\44\1\0\12\44"+
+ "\5\0\1\44\1\u0281\2\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\7\44\1\u0282\17\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\24\44\1\u027e\2\44"+
- "\1\0\2\44\1\u027e\7\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\24\44\1\u0283\2\44"+
+ "\1\0\2\44\1\u0283\7\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\16\44"+
- "\1\u027f\10\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\u0284\10\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\27\44"+
- "\1\0\11\44\1\u0280\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u0281"+
- "\15\44\1\0\6\44\1\u0281\3\44\5\0\4\44\1\0"+
+ "\1\0\11\44\1\u0285\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u0286"+
+ "\15\44\1\0\6\44\1\u0286\3\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\3\44\1\u0282\2\44\1\u0282\20\44\1\0\12\44\5\0"+
+ "\3\44\1\u0287\2\44\1\u0287\20\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\3\44\1\u0283\4\44\27\0\17\44\1\u0283\7\44\1\0"+
+ "\3\44\1\u0288\4\44\27\0\17\44\1\u0288\7\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\24\44\1\u0284\2\44\1\0"+
- "\2\44\1\u0284\7\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0285"+
- "\17\44\1\0\5\44\1\u0285\4\44\5\0\4\44\1\0"+
+ "\1\44\1\0\10\44\27\0\24\44\1\u0289\2\44\1\0"+
+ "\2\44\1\u0289\7\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u028a"+
+ "\17\44\1\0\5\44\1\u028a\4\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\7\44\1\u0286\17\44\1\0\5\44\1\u0286\4\44\5\0"+
+ "\7\44\1\u028b\17\44\1\0\5\44\1\u028b\4\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\24\44\1\u0287\2\44\1\0\2\44\1\u0287"+
- "\7\44\5\0\4\44\1\0\3\44\55\0\1\u024e\25\0"+
- "\1\u024e\26\0\1\u0288\12\0\1\u024e\47\0\1\u0288\4\0"+
- "\1\u0252\76\0\1\u024f\13\0\1\u024f\133\0\1\u024a\5\0"+
- "\1\u024a\44\0\1\u024e\54\0\1\u0252\144\0\1\u024e\66\0"+
- "\1\u0289\24\0\1\u0289\104\0\1\u028a\20\0\1\u028a\70\0"+
- "\1\u028b\2\0\1\u028b\52\0\2\44\1\0\1\44\1\0"+
- "\10\44\2\u028c\2\0\1\u028c\22\0\27\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\1\0\16\217\1\220\3\217"+
- "\1\220\14\217\1\220\4\217\1\220\5\217\1\u028d\25\217"+
- "\1\u028d\24\217\16\0\2\u0257\2\0\1\u0257\75\0\1\u0258"+
- "\124\0\1\u028e\5\0\2\u0138\1\0\1\u0138\1\0\10\u0138"+
- "\2\u0139\2\0\1\u0139\22\0\24\u0138\1\u0206\2\u0138\1\0"+
- "\2\u0138\1\u0206\7\u0138\5\0\4\u0138\1\u013a\3\u0138\2\0"+
- "\2\u0138\1\0\1\u0138\1\0\10\u0138\2\u0139\2\0\1\u0139"+
- "\22\0\7\u0138\1\u0206\17\u0138\1\0\5\u0138\1\u0206\4\u0138"+
- "\5\0\4\u0138\1\u013a\3\u0138\55\0\1\u028f\25\0\1\u028f"+
- "\23\0\1\44\1\u0290\1\0\1\44\1\0\10\44\27\0"+
+ "\10\44\27\0\24\44\1\u028c\2\44\1\0\2\44\1\u028c"+
+ "\7\44\5\0\4\44\1\0\3\44\55\0\1\u0253\25\0"+
+ "\1\u0253\26\0\1\u028d\12\0\1\u0253\47\0\1\u028d\4\0"+
+ "\1\u0257\76\0\1\u0254\13\0\1\u0254\133\0\1\u024f\5\0"+
+ "\1\u024f\44\0\1\u0253\54\0\1\u0257\144\0\1\u0253\66\0"+
+ "\1\u028e\24\0\1\u028e\104\0\1\u028f\20\0\1\u028f\70\0"+
+ "\1\u0290\2\0\1\u0290\52\0\2\44\1\0\1\44\1\0"+
+ "\10\44\2\u0291\2\0\1\u0291\22\0\27\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\1\0\16\220\1\221\3\220"+
+ "\1\221\14\220\1\221\4\220\1\221\5\220\1\u0292\25\220"+
+ "\1\u0292\24\220\16\0\2\u025c\2\0\1\u025c\75\0\1\u025d"+
+ "\124\0\1\u0293\5\0\2\u013a\1\0\1\u013a\1\0\10\u013a"+
+ "\2\u013b\2\0\1\u013b\22\0\24\u013a\1\u020a\2\u013a\1\0"+
+ "\2\u013a\1\u020a\7\u013a\5\0\4\u013a\1\u013c\3\u013a\2\0"+
+ "\2\u013a\1\0\1\u013a\1\0\10\u013a\2\u013b\2\0\1\u013b"+
+ "\22\0\7\u013a\1\u020a\17\u013a\1\0\5\u013a\1\u020a\4\u013a"+
+ "\5\0\4\u013a\1\u013c\3\u013a\55\0\1\u0294\25\0\1\u0294"+
+ "\23\0\1\44\1\u0295\1\0\1\44\1\0\10\44\27\0"+
"\27\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0291"+
- "\17\44\1\0\5\44\1\u0291\4\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u0296"+
+ "\17\44\1\0\5\44\1\u0296\4\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\14\44\1\u0292\12\44\1\0\1\44\1\u0292\10\44\5\0"+
- "\4\44\1\0\3\44\2\0\1\44\1\u0293\1\0\1\44"+
+ "\14\44\1\u0297\12\44\1\0\1\44\1\u0297\10\44\5\0"+
+ "\4\44\1\0\3\44\2\0\1\44\1\u0298\1\0\1\44"+
"\1\0\10\44\27\0\27\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\7\44\1\u0294\17\44\1\0\5\44\1\u0294\4\44"+
- "\5\0\4\44\1\0\3\44\2\0\1\44\1\u0295\1\0"+
+ "\27\0\7\44\1\u0299\17\44\1\0\5\44\1\u0299\4\44"+
+ "\5\0\4\44\1\0\3\44\2\0\1\44\1\u029a\1\0"+
"\1\44\1\0\10\44\27\0\27\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\14\44\1\u0296\12\44\1\0\1\44\1\u0296"+
+ "\10\44\27\0\14\44\1\u029b\12\44\1\0\1\44\1\u029b"+
"\10\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\u0297\11\44\1\u0297\14\44"+
+ "\1\44\1\0\10\44\27\0\1\u029c\11\44\1\u029c\14\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\1\44"+
- "\1\u0298\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
+ "\1\u029d\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\14\44\1\u0299\12\44\1\0"+
- "\1\44\1\u0299\10\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\u029a\1\0\10\44\27\0\22\44\1\u029a"+
+ "\1\44\1\0\10\44\27\0\14\44\1\u029e\12\44\1\0"+
+ "\1\44\1\u029e\10\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\u029f\1\0\10\44\27\0\22\44\1\u029f"+
"\4\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u029b"+
- "\15\44\1\0\6\44\1\u029b\3\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\11\44\1\u02a0"+
+ "\15\44\1\0\6\44\1\u02a0\3\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\7\44\1\u029c\17\44\1\0\5\44\1\u029c\4\44\5\0"+
+ "\7\44\1\u02a1\17\44\1\0\5\44\1\u02a1\4\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\11\44\1\u029d\15\44\1\0\6\44\1\u029d"+
+ "\10\44\27\0\11\44\1\u02a2\15\44\1\0\6\44\1\u02a2"+
"\3\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\27\44\1\0\11\44\1\u029e"+
+ "\1\44\1\0\10\44\27\0\27\44\1\0\11\44\1\u02a3"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\27\44\1\0\12\44\5\0\1\u029f"+
+ "\1\0\10\44\27\0\27\44\1\0\12\44\5\0\1\u02a4"+
"\3\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\1\u02a0\11\44\1\u02a0\14\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\17\0\1\u0221\3\0\1\u0222"+
- "\120\0\1\u02a1\3\0\1\u02a2\177\0\1\u02a3\3\0\1\u02a3"+
- "\24\0\2\44\1\0\1\u02a4\1\0\10\44\27\0\22\44"+
- "\1\u02a4\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\10\44\27\0\1\u02a5\11\44\1\u02a5\14\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\17\0\1\u0225\3\0\1\u0226"+
+ "\120\0\1\u02a6\3\0\1\u02a7\177\0\1\u02a8\3\0\1\u02a8"+
+ "\24\0\2\44\1\0\1\u02a9\1\0\10\44\27\0\22\44"+
+ "\1\u02a9\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\24\44"+
- "\1\u02a5\2\44\1\0\2\44\1\u02a5\7\44\5\0\4\44"+
+ "\1\u02aa\2\44\1\0\2\44\1\u02aa\7\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\2\44\1\u02a6\10\44\1\u02a6\13\44\1\0\12\44"+
+ "\27\0\2\44\1\u02ab\10\44\1\u02ab\13\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\7\44\1\u02a7\17\44\1\0\5\44"+
- "\1\u02a7\4\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\u02a8\1\0\10\44\27\0\22\44\1\u02a8\4\44"+
+ "\1\0\10\44\27\0\7\44\1\u02ac\17\44\1\0\5\44"+
+ "\1\u02ac\4\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\u02ad\1\0\10\44\27\0\22\44\1\u02ad\4\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\2\44\1\u02a9\10\44"+
- "\1\u02a9\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\0\1\44\1\0\10\44\27\0\2\44\1\u02ae\10\44"+
+ "\1\u02ae\13\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\4\44"+
- "\1\u02aa\14\44\1\u02aa\5\44\1\0\12\44\5\0\4\44"+
+ "\1\u02af\14\44\1\u02af\5\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\24\44\1\u02ab\2\44\1\0\2\44\1\u02ab\7\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u02ac"+
- "\1\0\10\44\27\0\22\44\1\u02ac\4\44\1\0\12\44"+
+ "\27\0\24\44\1\u02b0\2\44\1\0\2\44\1\u02b0\7\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u02b1"+
+ "\1\0\10\44\27\0\22\44\1\u02b1\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u02ad\15\44\1\0\12\44"+
- "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u02ae"+
- "\1\0\10\44\27\0\22\44\1\u02ae\4\44\1\0\12\44"+
+ "\1\0\10\44\27\0\11\44\1\u02b2\15\44\1\0\12\44"+
+ "\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\u02b3"+
+ "\1\0\10\44\27\0\22\44\1\u02b3\4\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\27\44\1\0\10\44\1\u02af\1\44"+
+ "\1\0\10\44\27\0\27\44\1\0\10\44\1\u02b4\1\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\11\44\1\u02b0\15\44\1\0\6\44"+
- "\1\u02b0\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\7\44\1\u02b1\17\44"+
- "\1\0\5\44\1\u02b1\4\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\u02b2\1\0\10\44\27\0\22\44"+
- "\1\u02b2\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
- "\50\0\1\u02b3\10\0\1\u02b3\50\0\1\u024e\62\0\1\u024e"+
- "\41\0\1\u02b4\62\0\1\u02b4\120\0\1\u024e\20\0\1\u024e"+
- "\30\0\1\u02b5\5\0\2\u028c\2\0\1\u028c\32\0\1\u02b5"+
- "\47\0\16\217\1\220\3\217\1\220\14\217\1\220\4\217"+
- "\1\220\30\217\1\u02b6\3\217\1\u02b6\23\217\16\0\2\u02b7"+
- "\2\0\1\u02b7\103\0\1\44\1\u02b8\1\0\1\44\1\0"+
+ "\1\0\10\44\27\0\11\44\1\u02b5\15\44\1\0\6\44"+
+ "\1\u02b5\3\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\7\44\1\u02b6\17\44"+
+ "\1\0\5\44\1\u02b6\4\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\u02b7\1\0\10\44\27\0\22\44"+
+ "\1\u02b7\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\50\0\1\u02b8\10\0\1\u02b8\50\0\1\u0253\62\0\1\u0253"+
+ "\41\0\1\u02b9\62\0\1\u02b9\120\0\1\u0253\20\0\1\u0253"+
+ "\30\0\1\u02ba\5\0\2\u0291\2\0\1\u0291\32\0\1\u02ba"+
+ "\47\0\16\220\1\221\3\220\1\221\14\220\1\221\4\220"+
+ "\1\221\30\220\1\u02bb\3\220\1\u02bb\23\220\16\0\2\u02bc"+
+ "\2\0\1\u02bc\103\0\1\44\1\u02bd\1\0\1\44\1\0"+
"\10\44\27\0\27\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\5\44\1\u02b9\21\44\1\0\3\44\1\u02b9\6\44\5\0"+
+ "\5\44\1\u02be\21\44\1\0\3\44\1\u02be\6\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\27\44\1\0\1\u02ba\3\44\1\u02ba\5\44"+
- "\5\0\4\44\1\0\3\44\2\0\1\44\1\u02bb\1\0"+
+ "\10\44\27\0\27\44\1\0\1\u02bf\3\44\1\u02bf\5\44"+
+ "\5\0\4\44\1\0\3\44\2\0\1\44\1\u02c0\1\0"+
"\1\44\1\0\10\44\27\0\27\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\2\0\1\44\1\u02bc\1\0\1\44"+
+ "\4\44\1\0\3\44\2\0\1\44\1\u02c1\1\0\1\44"+
"\1\0\10\44\27\0\27\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\1\44\1\u02bd\1\0\1\44\1\0"+
+ "\1\0\3\44\2\0\1\44\1\u02c2\1\0\1\44\1\0"+
"\10\44\27\0\27\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\4\44\1\u02be\14\44\1\u02be\5\44\1\0\12\44\5\0"+
+ "\4\44\1\u02c3\14\44\1\u02c3\5\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\24\44\1\u02bf\2\44\1\0\2\44\1\u02bf"+
+ "\10\44\27\0\24\44\1\u02c4\2\44\1\0\2\44\1\u02c4"+
"\7\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\2\44\1\u02c0\10\44\1\u02c0"+
+ "\1\44\1\0\10\44\27\0\2\44\1\u02c5\10\44\1\u02c5"+
"\13\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u02c1"+
- "\10\44\1\u02c1\13\44\1\0\12\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\2\44\1\u02c6"+
+ "\10\44\1\u02c6\13\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\24\44\1\u02c2\2\44\1\0\2\44\1\u02c2\7\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02c3\1\0"+
- "\10\44\27\0\22\44\1\u02c3\4\44\1\0\12\44\5\0"+
+ "\24\44\1\u02c7\2\44\1\0\2\44\1\u02c7\7\44\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02c8\1\0"+
+ "\10\44\27\0\22\44\1\u02c8\4\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\3\44\1\u02c4\2\44\1\u02c4\20\44\1\0"+
- "\12\44\5\0\4\44\1\0\3\44\17\0\1\u02a1\162\0"+
- "\1\u02c5\25\0\1\u02c5\23\0\1\44\1\u02c6\1\0\1\44"+
+ "\10\44\27\0\3\44\1\u02c9\2\44\1\u02c9\20\44\1\0"+
+ "\12\44\5\0\4\44\1\0\3\44\17\0\1\u02a6\162\0"+
+ "\1\u02ca\25\0\1\u02ca\23\0\1\44\1\u02cb\1\0\1\44"+
"\1\0\10\44\27\0\27\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\7\44\1\u02c7\17\44\1\0\5\44\1\u02c7\4\44"+
+ "\27\0\7\44\1\u02cc\17\44\1\0\5\44\1\u02cc\4\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\24\44\1\u02c8\2\44\1\0\2\44"+
- "\1\u02c8\7\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\24\44\1\u02c9\2\44"+
- "\1\0\2\44\1\u02c9\7\44\5\0\4\44\1\0\3\44"+
- "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u02ca"+
- "\11\44\1\u02ca\14\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\u02cb\1\0\10\44\27\0"+
- "\22\44\1\u02cb\4\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\1\44\1\u02cc\1\0\1\44\1\0\10\44"+
+ "\1\0\10\44\27\0\24\44\1\u02cd\2\44\1\0\2\44"+
+ "\1\u02cd\7\44\5\0\4\44\1\0\3\44\2\0\2\44"+
+ "\1\0\1\44\1\0\10\44\27\0\24\44\1\u02ce\2\44"+
+ "\1\0\2\44\1\u02ce\7\44\5\0\4\44\1\0\3\44"+
+ "\2\0\2\44\1\0\1\44\1\0\10\44\27\0\1\u02cf"+
+ "\11\44\1\u02cf\14\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\u02d0\1\0\10\44\27\0"+
+ "\22\44\1\u02d0\4\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\1\44\1\u02d1\1\0\1\44\1\0\10\44"+
"\27\0\27\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\22\44"+
- "\1\u02cd\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
+ "\1\u02d2\4\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\3\44"+
- "\1\u02ce\2\44\1\u02ce\20\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u02cf\1\0\10\44"+
- "\27\0\22\44\1\u02cf\4\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u02d0\1\0\10\44"+
- "\27\0\22\44\1\u02d0\4\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u02d1\1\0\10\44"+
- "\27\0\22\44\1\u02d1\4\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\51\0\1\u024e\2\0\1\u024e\117\0\1\u024e"+
- "\13\0\1\u024e\110\0\1\u02d2\13\0\1\u02d2\42\0\16\217"+
- "\1\220\3\217\1\220\14\217\1\220\4\217\1\220\7\217"+
- "\1\u02d3\25\217\1\u02d3\22\217\16\0\2\u02b7\2\0\1\u02b7"+
- "\33\0\1\u02d4\24\0\1\u02d4\22\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\u02d5\11\44\1\u02d5\14\44\1\0"+
+ "\1\u02d3\2\44\1\u02d3\20\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u02d4\1\0\10\44"+
+ "\27\0\22\44\1\u02d4\4\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u02d5\1\0\10\44"+
+ "\27\0\22\44\1\u02d5\4\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u02d6\1\0\10\44"+
+ "\27\0\22\44\1\u02d6\4\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\51\0\1\u0253\2\0\1\u0253\117\0\1\u0253"+
+ "\13\0\1\u0253\110\0\1\u02d7\13\0\1\u02d7\42\0\16\220"+
+ "\1\221\3\220\1\221\14\220\1\221\4\220\1\221\7\220"+
+ "\1\u02d8\25\220\1\u02d8\22\220\16\0\2\u02bc\2\0\1\u02bc"+
+ "\33\0\1\u02d9\24\0\1\u02d9\22\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\1\u02da\11\44\1\u02da\14\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\2\44\1\u02d6\10\44\1\u02d6"+
+ "\1\44\1\0\10\44\27\0\2\44\1\u02db\10\44\1\u02db"+
"\13\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\1\44\1\u02d7\1\0\1\44\1\0\10\44\27\0\27\44"+
+ "\1\44\1\u02dc\1\0\1\44\1\0\10\44\27\0\27\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\1\44"+
- "\1\u02d8\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
- "\12\44\5\0\4\44\1\0\3\44\2\0\1\44\1\u02d9"+
+ "\1\u02dd\1\0\1\44\1\0\10\44\27\0\27\44\1\0"+
+ "\12\44\5\0\4\44\1\0\3\44\2\0\1\44\1\u02de"+
"\1\0\1\44\1\0\10\44\27\0\27\44\1\0\12\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\1\u02da\11\44\1\u02da\14\44\1\0"+
+ "\1\0\10\44\27\0\1\u02df\11\44\1\u02df\14\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\24\44\1\u02db\2\44\1\0"+
- "\2\44\1\u02db\7\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\1\44\1\u02dc"+
- "\13\44\1\u02dc\11\44\1\0\12\44\5\0\4\44\1\0"+
+ "\1\44\1\0\10\44\27\0\24\44\1\u02e0\2\44\1\0"+
+ "\2\44\1\u02e0\7\44\5\0\4\44\1\0\3\44\2\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\1\44\1\u02e1"+
+ "\13\44\1\u02e1\11\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\27\44\1\0\11\44\1\u02dd\5\0\4\44\1\0\3\44"+
- "\32\0\1\u02de\74\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\1\u02df\11\44\1\u02df\14\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02e0\1\0"+
- "\10\44\27\0\22\44\1\u02e0\4\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02e1\1\0"+
- "\10\44\27\0\22\44\1\u02e1\4\44\1\0\12\44\5\0"+
+ "\27\44\1\0\11\44\1\u02e2\5\0\4\44\1\0\3\44"+
+ "\32\0\1\u02e3\74\0\2\44\1\0\1\44\1\0\10\44"+
+ "\27\0\1\u02e4\11\44\1\u02e4\14\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02e5\1\0"+
+ "\10\44\27\0\22\44\1\u02e5\4\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02e6\1\0"+
+ "\10\44\27\0\22\44\1\u02e6\4\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\2\44\1\u02e2\5\44\27\0\10\44\1\u02e2\16\44\1\0"+
+ "\2\44\1\u02e7\5\44\27\0\10\44\1\u02e7\16\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\u02e3\11\44\1\u02e3\14\44"+
+ "\1\44\1\0\10\44\27\0\1\u02e8\11\44\1\u02e8\14\44"+
"\1\0\12\44\5\0\4\44\1\0\3\44\2\0\2\44"+
- "\1\0\1\44\1\0\10\44\27\0\1\u02e4\11\44\1\u02e4"+
+ "\1\0\1\44\1\0\10\44\27\0\1\u02e9\11\44\1\u02e9"+
"\14\44\1\0\12\44\5\0\4\44\1\0\3\44\2\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u02e5"+
- "\17\44\1\0\5\44\1\u02e5\4\44\5\0\4\44\1\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\7\44\1\u02ea"+
+ "\17\44\1\0\5\44\1\u02ea\4\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\4\44\1\u02e6\14\44\1\u02e6\5\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\46\0\1\u02e7\11\0\1\u02e7\45\0"+
- "\16\217\1\220\3\217\1\220\6\217\1\u02e8\5\217\1\220"+
- "\4\217\1\220\60\217\47\0\1\u02e9\10\0\1\u02e9\45\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\3\44\1\u02ea"+
- "\2\44\1\u02ea\20\44\1\0\12\44\5\0\4\44\1\0"+
+ "\4\44\1\u02eb\14\44\1\u02eb\5\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\46\0\1\u02ec\11\0\1\u02ec\45\0"+
+ "\16\220\1\221\3\220\1\221\6\220\1\u02ed\5\220\1\221"+
+ "\4\220\1\221\60\220\47\0\1\u02ee\10\0\1\u02ee\45\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\3\44\1\u02ef"+
+ "\2\44\1\u02ef\20\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\24\44\1\u02eb\2\44\1\0\2\44\1\u02eb\7\44\5\0"+
- "\4\44\1\0\3\44\2\0\1\44\1\u02ec\1\0\1\44"+
+ "\24\44\1\u02f0\2\44\1\0\2\44\1\u02f0\7\44\5\0"+
+ "\4\44\1\0\3\44\2\0\1\44\1\u02f1\1\0\1\44"+
"\1\0\10\44\27\0\27\44\1\0\12\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\25\44\1\u02ed\1\44\1\0\12\44\5\0\1\44"+
- "\1\u02ed\2\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\27\44\1\0\11\44\1\u02ee\5\0"+
- "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02ef\1\0"+
- "\10\44\27\0\22\44\1\u02ef\4\44\1\0\12\44\5\0"+
- "\4\44\1\0\3\44\17\0\2\u02de\2\0\1\u02de\103\0"+
- "\2\44\1\0\1\44\1\0\10\44\27\0\3\44\1\u02f0"+
- "\2\44\1\u02f0\20\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\44\1\0\2\44\1\u02f1"+
- "\5\44\27\0\10\44\1\u02f1\16\44\1\0\12\44\5\0"+
+ "\27\0\25\44\1\u02f2\1\44\1\0\12\44\5\0\1\44"+
+ "\1\u02f2\2\44\1\0\3\44\2\0\2\44\1\0\1\44"+
+ "\1\0\10\44\27\0\27\44\1\0\11\44\1\u02f3\5\0"+
+ "\4\44\1\0\3\44\2\0\2\44\1\0\1\u02f4\1\0"+
+ "\10\44\27\0\22\44\1\u02f4\4\44\1\0\12\44\5\0"+
+ "\4\44\1\0\3\44\17\0\2\u02e3\2\0\1\u02e3\103\0"+
+ "\2\44\1\0\1\44\1\0\10\44\27\0\3\44\1\u02f5"+
+ "\2\44\1\u02f5\20\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\44\1\0\2\44\1\u02f6"+
+ "\5\44\27\0\10\44\1\u02f6\16\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\3\44\1\u02f2\2\44\1\u02f2\20\44\1\0"+
+ "\10\44\27\0\3\44\1\u02f7\2\44\1\u02f7\20\44\1\0"+
"\12\44\5\0\4\44\1\0\3\44\2\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\14\44\1\u02f3\12\44\1\0"+
- "\1\44\1\u02f3\10\44\5\0\4\44\1\0\3\44\73\0"+
- "\1\u02f4\22\0\1\u02f4\7\0\16\217\1\u02f5\1\u02e8\2\217"+
- "\1\u02f5\14\217\1\220\4\217\1\220\60\217\50\0\1\u02f6"+
- "\2\0\1\u02f6\52\0\1\44\1\u02f7\1\0\1\44\1\0"+
+ "\1\44\1\0\10\44\27\0\14\44\1\u02f8\12\44\1\0"+
+ "\1\44\1\u02f8\10\44\5\0\4\44\1\0\3\44\73\0"+
+ "\1\u02f9\22\0\1\u02f9\7\0\16\220\1\u02fa\1\u02ed\2\220"+
+ "\1\u02fa\14\220\1\221\4\220\1\221\60\220\50\0\1\u02fb"+
+ "\2\0\1\u02fb\52\0\1\44\1\u02fc\1\0\1\44\1\0"+
"\10\44\27\0\27\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\2\44\1\0\1\u02f8\1\0\10\44\27\0"+
- "\22\44\1\u02f8\4\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\2\0\2\44\1\0\1\u02fd\1\0\10\44\27\0"+
+ "\22\44\1\u02fd\4\44\1\0\12\44\5\0\4\44\1\0"+
"\3\44\2\0\2\44\1\0\1\44\1\0\10\44\27\0"+
- "\27\44\1\0\1\u02f9\3\44\1\u02f9\5\44\5\0\4\44"+
+ "\27\44\1\0\1\u02fe\3\44\1\u02fe\5\44\5\0\4\44"+
"\1\0\3\44\2\0\2\44\1\0\1\44\1\0\10\44"+
- "\27\0\24\44\1\u02fa\2\44\1\0\2\44\1\u02fa\7\44"+
+ "\27\0\24\44\1\u02ff\2\44\1\0\2\44\1\u02ff\7\44"+
"\5\0\4\44\1\0\3\44\2\0\2\44\1\0\1\44"+
- "\1\0\10\44\27\0\24\44\1\u02fb\2\44\1\0\2\44"+
- "\1\u02fb\7\44\5\0\4\44\1\0\3\44\64\0\1\u02fc"+
- "\20\0\1\u02fc\21\0\1\44\1\u02fd\1\0\1\44\1\0"+
+ "\1\0\10\44\27\0\24\44\1\u0300\2\44\1\0\2\44"+
+ "\1\u0300\7\44\5\0\4\44\1\0\3\44\64\0\1\u0301"+
+ "\20\0\1\u0301\21\0\1\44\1\u0302\1\0\1\44\1\0"+
"\10\44\27\0\27\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\2\0\1\44\1\u02fe\1\0\1\44\1\0\10\44"+
+ "\3\44\2\0\1\44\1\u0303\1\0\1\44\1\0\10\44"+
"\27\0\27\44\1\0\12\44\5\0\4\44\1\0\3\44"+
"\2\0\2\44\1\0\1\44\1\0\10\44\27\0\5\44"+
- "\1\u02ff\21\44\1\0\3\44\1\u02ff\6\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u0300\1\0\10\44"+
- "\27\0\22\44\1\u0300\4\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\2\0\2\44\1\0\1\u0301\1\0\10\44"+
- "\27\0\22\44\1\u0301\4\44\1\0\12\44\5\0\4\44"+
- "\1\0\3\44\106\0\1\u0302\20\0\1\44\1\u0303\1\0"+
+ "\1\u0304\21\44\1\0\3\44\1\u0304\6\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u0305\1\0\10\44"+
+ "\27\0\22\44\1\u0305\4\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\2\0\2\44\1\0\1\u0306\1\0\10\44"+
+ "\27\0\22\44\1\u0306\4\44\1\0\12\44\5\0\4\44"+
+ "\1\0\3\44\106\0\1\u0307\20\0\1\44\1\u0308\1\0"+
"\1\44\1\0\10\44\27\0\27\44\1\0\12\44\5\0"+
"\4\44\1\0\3\44\2\0\2\44\1\0\1\44\1\0"+
- "\10\44\27\0\11\44\1\u0304\15\44\1\0\6\44\1\u0304"+
- "\3\44\5\0\4\44\1\0\3\44\50\0\1\u0305\10\0"+
- "\1\u0305\45\0\2\44\1\0\1\u0306\1\0\10\44\27\0"+
- "\22\44\1\u0306\4\44\1\0\12\44\5\0\4\44\1\0"+
- "\3\44\64\0\1\u0307\20\0\1\u0307\21\0\2\44\1\0"+
- "\1\44\1\0\10\44\27\0\1\44\1\u0308\13\44\1\u0308"+
+ "\10\44\27\0\11\44\1\u0309\15\44\1\0\6\44\1\u0309"+
+ "\3\44\5\0\4\44\1\0\3\44\50\0\1\u030a\10\0"+
+ "\1\u030a\45\0\2\44\1\0\1\u030b\1\0\10\44\27\0"+
+ "\22\44\1\u030b\4\44\1\0\12\44\5\0\4\44\1\0"+
+ "\3\44\64\0\1\u030c\20\0\1\u030c\21\0\2\44\1\0"+
+ "\1\44\1\0\10\44\27\0\1\44\1\u030d\13\44\1\u030d"+
"\11\44\1\0\12\44\5\0\4\44\1\0\3\44\5\0"+
- "\1\u0309\62\0\1\u0309\53\0\2\u0309\2\0\1\u0309\5\0"+
- "\1\u030a\112\0\2\u030a\2\0\1\u030a\1\0\1\u030b\50\0"+
- "\1\u030c\3\0\1\u030c\5\0\1\u030d\112\0\1\u030e\3\0"+
- "\1\u030e\131\0\1\u030f\113\0\1\u0310\3\0\1\u0310\131\0"+
- "\1\u0311\113\0\1\u0312\3\0\1\u0312\131\0\1\u0313\113\0"+
- "\1\u0314\3\0\1\u0314\41\0\2\u0312\2\0\1\u0312\6\0"+
- "\1\u0315\170\0\1\u0316\3\0\1\u0316\47\0\1\u0312\207\0"+
- "\1\u0312\15\0";
+ "\1\u030e\62\0\1\u030e\53\0\2\u030e\2\0\1\u030e\5\0"+
+ "\1\u030f\112\0\2\u030f\2\0\1\u030f\1\0\1\u0310\50\0"+
+ "\1\u0311\3\0\1\u0311\5\0\1\u0312\112\0\1\u0313\3\0"+
+ "\1\u0313\131\0\1\u0314\113\0\1\u0315\3\0\1\u0315\131\0"+
+ "\1\u0316\113\0\1\u0317\3\0\1\u0317\131\0\1\u0318\113\0"+
+ "\1\u0319\3\0\1\u0319\41\0\2\u0317\2\0\1\u0317\6\0"+
+ "\1\u031a\170\0\1\u031b\3\0\1\u031b\47\0\1\u0317\207\0"+
+ "\1\u0317\15\0";
private static int [] zzUnpackTrans() {
- int [] result = new int[52955];
+ int [] result = new int[53295];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -1502,23 +1512,23 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\27\0\2\1\1\11\13\1\2\11\2\1\3\11\13\1"+
- "\1\11\27\1\1\11\6\1\1\11\2\1\1\11\6\1"+
+ "\1\11\30\1\1\11\6\1\1\11\2\1\1\11\6\1"+
"\1\11\13\1\1\11\10\1\1\11\3\1\1\0\2\1"+
"\1\11\3\1\2\11\2\1\1\11\1\1\2\11\1\1"+
"\1\11\4\0\1\1\1\11\4\1\1\11\2\1\1\11"+
"\6\1\1\0\2\1\2\0\1\1\1\0\2\1\1\0"+
"\6\1\1\11\2\0\5\1\1\0\1\1\1\0\1\1"+
"\2\0\1\11\2\0\2\1\1\0\1\1\1\11\1\1"+
- "\1\0\53\1\13\0\1\11\2\1\1\11\3\0\3\1"+
+ "\1\0\54\1\13\0\1\11\2\1\1\11\3\0\3\1"+
"\3\11\1\1\3\0\3\1\1\11\1\0\1\11\3\0"+
"\1\1\1\0\1\11\1\0\1\11\3\0\1\1\1\0"+
"\2\1\1\11\1\0\1\11\1\0\1\11\3\0\1\11"+
"\1\0\1\1\1\0\1\11\1\0\2\11\2\1\5\0"+
"\1\11\3\0\1\11\2\0\10\1\1\0\15\1\1\0"+
- "\1\1\3\0\1\11\57\1\12\0\2\1\1\11\2\1"+
+ "\1\1\3\0\1\11\60\1\12\0\2\1\1\11\2\1"+
"\1\11\1\1\1\0\1\11\1\0\5\11\1\1\10\0"+
- "\31\1\4\0\54\1\12\0\2\1\1\11\1\1\1\11"+
- "\3\0\1\11\1\0\26\1\1\11\1\1\3\0\44\1"+
+ "\31\1\4\0\55\1\12\0\2\1\1\11\1\1\1\11"+
+ "\3\0\1\11\1\0\26\1\1\11\1\1\3\0\45\1"+
"\10\0\1\11\1\0\3\1\1\0\1\1\3\0\22\1"+
"\3\0\27\1\5\0\1\1\1\11\22\1\1\11\1\1"+
"\1\0\17\1\3\0\1\1\1\0\15\1\1\0\14\1"+
@@ -1527,7 +1537,7 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) {
"\1\0\1\1\1\0\1\1\14\0\1\11\1\0";
private static int [] zzUnpackAttribute() {
- int [] result = new int[790];
+ int [] result = new int[795];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -2060,16 +2070,16 @@ public PHPTokenId nextToken() throws java.io.IOException {
{ //the difference from the original rules comes from the fact that we took ';' out out of tokens
return PHPTokenId.UNKNOWN_TOKEN;
}
- case 173: break;
+ case 174: break;
case 105:
{ return PHPTokenId.PHP_FALSE;
}
- case 174: break;
+ case 175: break;
case 26:
{ yypushback(1);
yybegin(ST_PHP_NOWDOC);
}
- case 175: break;
+ case 176: break;
case 36:
{ String yytext = yytext();
switch (yytext.charAt(yytext.length() - 1)) {
@@ -2082,33 +2092,33 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_LINE_COMMENT;
}
- case 176: break;
+ case 177: break;
case 84:
{ yypushback(2);
return PHPTokenId.PHP_ENCAPSED_AND_WHITESPACE;
}
- case 177: break;
- case 119:
+ case 178: break;
+ case 120:
{ return PHPTokenId.PHP_TYPE_MIXED;
}
- case 178: break;
+ case 179: break;
case 68:
{ popState();
return PHPTokenId.PHPDOC_COMMENT_END;
}
- case 179: break;
- case 144:
+ case 180: break;
+ case 145:
{ return PHPTokenId.PHP_INCLUDE;
}
- case 180: break;
- case 163:
+ case 181: break;
+ case 164:
{ return PHPTokenId.PHP_ENDDECLARE;
}
- case 181: break;
+ case 182: break;
case 38:
{ return PHPTokenId.UNKNOWN_TOKEN;
}
- case 182: break;
+ case 183: break;
case 63:
{ /* {NEWLINE}{TABS_AND_SPACES}{LABEL}";"?[^\n\r]*[\r\n]? */
if (isEndNowdoc()) {
@@ -2126,20 +2136,20 @@ public PHPTokenId nextToken() throws java.io.IOException {
yypushback(1); // [\r\n] length
}
}
- case 183: break;
- case 132:
+ case 184: break;
+ case 133:
{ return PHPTokenId.PHP_GLOBAL;
}
- case 184: break;
- case 167:
+ case 185: break;
+ case 168:
{ return PHPTokenId.PHP__FUNCTION__;
}
- case 185: break;
+ case 186: break;
case 18:
{ popState();
return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 186: break;
+ case 187: break;
case 43:
{ if (shortTagsAllowed ) {
//yybegin(ST_PHP_IN_SCRIPTING);
@@ -2151,38 +2161,38 @@ public PHPTokenId nextToken() throws java.io.IOException {
return PHPTokenId.T_INLINE_HTML;
}
}
- case 187: break;
+ case 188: break;
case 59:
{ yypushback(1);
pushState(ST_PHP_IN_SCRIPTING);
return PHPTokenId.PHP_CURLY_OPEN;
}
- case 188: break;
- case 128:
+ case 189: break;
+ case 129:
{ return PHPTokenId.PHP_TYPE_OBJECT;
}
- case 189: break;
+ case 190: break;
case 95:
{ return PHPTokenId.PHP_LIST;
}
- case 190: break;
+ case 191: break;
case 104:
{ return PHPTokenId.PHP_EMPTY;
}
- case 191: break;
+ case 192: break;
case 14:
{ pushState(ST_PHP_LINE_COMMENT);
return PHPTokenId.PHP_LINE_COMMENT;
}
- case 192: break;
+ case 193: break;
case 100:
{ return PHPTokenId.PHP_CASE;
}
- case 193: break;
+ case 194: break;
case 46:
{ return PHPTokenId.PHP_VARIABLE;
}
- case 194: break;
+ case 195: break;
case 49:
{ //popState();
yybegin(YYINITIAL);
@@ -2192,7 +2202,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
stack.clear();
return PHPTokenId.PHP_CLOSETAG;
}
- case 195: break;
+ case 196: break;
case 23:
{ int trailingNewLineLength = 1;
int label_len = yylength() - trailingNewLineLength;
@@ -2213,7 +2223,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
yybegin(ST_PHP_HEREDOC);
}
}
- case 196: break;
+ case 197: break;
case 8:
{ if(isInConst) {
isInConst = false;
@@ -2222,7 +2232,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_SEMICOLON;
}
- case 197: break;
+ case 198: break;
case 48:
{ if (aspTagsAllowed) {
yybegin(YYINITIAL);
@@ -2231,35 +2241,35 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.UNKNOWN_TOKEN;
}
- case 198: break;
+ case 199: break;
case 37:
{ return PHPTokenId.PHP_LINE_COMMENT;
}
- case 199: break;
+ case 200: break;
case 92:
{ pushState(ST_PHP_DOC_COMMENT);
yypushback(yylength()-3);
return PHPTokenId.PHPDOC_COMMENT_START;
}
- case 200: break;
- case 146:
+ case 201: break;
+ case 147:
{ return PHPTokenId.PHP__FILE__;
}
- case 201: break;
+ case 202: break;
case 110:
{ return PHPTokenId.PHP_ISSET;
}
- case 202: break;
+ case 203: break;
case 53:
{ return PHPTokenId.PHP_IF;
}
- case 203: break;
+ case 204: break;
case 60:
{ popState();
pushState(ST_PHP_LOOKING_FOR_PROPERTY);
return PHPTokenId.PHP_OBJECT_OPERATOR;
}
- case 204: break;
+ case 205: break;
case 70:
{ if (aspTagsAllowed) {
yybegin(YYINITIAL);
@@ -2272,11 +2282,11 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_LINE_COMMENT;
}
- case 205: break;
+ case 206: break;
case 51:
{ return PHPTokenId.PHP_AS;
}
- case 206: break;
+ case 207: break;
case 24:
{ heredoc=null;
hereocLength=0;
@@ -2289,46 +2299,46 @@ public PHPTokenId nextToken() throws java.io.IOException {
yypushback(back);
return PHPTokenId.PHP_HEREDOC_TAG_END;
}
- case 207: break;
- case 171:
+ case 208: break;
+ case 172:
{ pushState(ST_HALTED_COMPILER);
return PHPTokenId.PHP_HALT_COMPILER;
}
- case 208: break;
+ case 209: break;
case 80:
{ return PHPTokenId.PHP_USE;
}
- case 209: break;
- case 113:
+ case 210: break;
+ case 114:
{ return PHPTokenId.PHP_TYPE_FLOAT;
}
- case 210: break;
- case 170:
+ case 211: break;
+ case 171:
{ return PHPTokenId.PHP__NAMESPACE__;
}
- case 211: break;
+ case 212: break;
case 69:
{ popState();
return PHPTokenId.PHP_LINE_COMMENT;
}
- case 212: break;
- case 169:
+ case 213: break;
+ case 170:
{ return PHPTokenId.PHP_INCLUDE_ONCE;
}
- case 213: break;
- case 157:
+ case 214: break;
+ case 158:
{ return PHPTokenId.PHP_NAMESPACE;
}
- case 214: break;
+ case 215: break;
case 67:
{ popState();
return PHPTokenId.PHP_COMMENT_END;
}
- case 215: break;
- case 151:
+ case 216: break;
+ case 152:
{ return PHPTokenId.PHP_ITERABLE;
}
- case 216: break;
+ case 217: break;
case 108:
{ int bprefix = (yytext().charAt(0) != '<') ? 1 : 0;
int startString=3+bprefix;
@@ -2346,7 +2356,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
yybegin(ST_PHP_START_HEREDOC);
return PHPTokenId.PHP_HEREDOC_TAG_START;
}
- case 217: break;
+ case 218: break;
case 66:
{ // const keyword is also used within group uses. so check "=", otherwise it matches the following:
// use A\{const CONSTANTA, function myFunction,...}
@@ -2361,127 +2371,127 @@ public PHPTokenId nextToken() throws java.io.IOException {
yypushback(back);
return PHPTokenId.PHP_STRING;
}
- case 218: break;
+ case 219: break;
case 40:
{ popState();
return PHPTokenId.T_INLINE_HTML;
}
- case 219: break;
+ case 220: break;
case 30:
{ popState();
parenBalanceInScripting++; // [NETBEANS-4443] PHP 8.0 Named Arguments
return PHPTokenId.PHP_TOKEN;
}
- case 220: break;
+ case 221: break;
case 6:
{ return PHPTokenId.PHP_OPERATOR;
}
- case 221: break;
+ case 222: break;
case 11:
{ pushState(ST_PHP_BACKQUOTE);
return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 222: break;
+ case 223: break;
case 56:
{ pushState(ST_PHP_QUOTES_AFTER_VARIABLE);
return PHPTokenId.PHP_VARIABLE;
}
- case 223: break;
+ case 224: break;
case 3:
{ return PHPTokenId.PHP_NUMBER;
}
- case 224: break;
+ case 225: break;
case 81:
{ yypushback(1);
pushState(ST_PHP_VAR_OFFSET);
return PHPTokenId.PHP_VARIABLE;
}
- case 225: break;
- case 141:
+ case 226: break;
+ case 142:
{ return PHPTokenId.PHP_REQUIRE;
}
- case 226: break;
- case 143:
+ case 227: break;
+ case 144:
{ return PHPTokenId.PHP_DECLARE;
}
- case 227: break;
- case 116:
+ case 228: break;
+ case 117:
{ return PHPTokenId.PHP_CLONE;
}
- case 228: break;
- case 111:
+ case 229: break;
+ case 112:
{ return PHPTokenId.PHP_TRAIT;
}
- case 229: break;
+ case 230: break;
case 58:
{ pushState(ST_PHP_IN_SCRIPTING);
return PHPTokenId.PHP_TOKEN;
}
- case 230: break;
+ case 231: break;
case 75:
{ return PHPTokenId.PHP_NEW;
}
- case 231: break;
+ case 232: break;
case 86:
{ yypushback(2);
return PHPTokenId.PHP_COMMENT;
}
- case 232: break;
+ case 233: break;
case 65:
{ return PHPTokenId.PHP_OBJECT_OPERATOR;
}
- case 233: break;
+ case 234: break;
case 19:
{ yypushback(1);
popState();
}
- case 234: break;
- case 137:
+ case 235: break;
+ case 138:
{ return PHPTokenId.PHP_EXTENDS;
}
- case 235: break;
+ case 236: break;
case 93:
{ return PHPTokenId.PHP_NULL;
}
- case 236: break;
+ case 237: break;
case 102:
{ pushState(ST_PHP_IN_SCRIPTING);
//yybegin(ST_PHP_IN_SCRIPTING);
return PHPTokenId.PHP_OPENTAG;
//return createSymbol(ASTSymbol.T_OPEN_TAG);
}
- case 237: break;
- case 124:
+ case 238: break;
+ case 125:
{ return PHPTokenId.PHP_WHILE;
}
- case 238: break;
- case 156:
+ case 239: break;
+ case 157:
{ return PHPTokenId.PHP_ENDSWITCH;
}
- case 239: break;
- case 145:
+ case 240: break;
+ case 146:
{ return PHPTokenId.PHP_PRIVATE;
}
- case 240: break;
+ case 241: break;
case 1:
{ return PHPTokenId.T_INLINE_HTML;
}
- case 241: break;
- case 166:
+ case 242: break;
+ case 167:
{ return PHPTokenId.PHP_YIELD_FROM;
}
- case 242: break;
+ case 243: break;
case 103:
{ return PHPTokenId.PHP_ENDIF;
}
- case 243: break;
+ case 244: break;
case 33:
{ yypushback(1);
popState();
if (yylength() > 0)
return PHPTokenId.PHP_ENCAPSED_AND_WHITESPACE;
}
- case 244: break;
+ case 245: break;
case 101:
{ popState();
String yytext = yytext();
@@ -2495,24 +2505,24 @@ public PHPTokenId nextToken() throws java.io.IOException {
assert false : "expected \"true\", \"false\", or \"null\" but " + "\"" + yytext + "\""; // NOI18N
yypushback(yylength());
}
- case 245: break;
- case 129:
+ case 246: break;
+ case 130:
{ return PHPTokenId.PHP_STATIC;
}
- case 246: break;
- case 142:
+ case 247: break;
+ case 143:
{ return PHPTokenId.PHP_DEFAULT;
}
- case 247: break;
+ case 248: break;
case 17:
{ return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 248: break;
+ case 249: break;
case 34:
{ popState();
return PHPTokenId.PHP_TOKEN;
}
- case 249: break;
+ case 250: break;
case 71:
{ // [NETBEANS-4443] PHP 8.0 Named Arguments
// we can use keywords as parameter names
@@ -2526,20 +2536,20 @@ public PHPTokenId nextToken() throws java.io.IOException {
popState();
return PHPTokenId.PHP_STRING;
}
- case 250: break;
- case 147:
+ case 251: break;
+ case 148:
{ return PHPTokenId.PHP__LINE__;
}
- case 251: break;
+ case 252: break;
case 44:
{ pushState(ST_PHP_LOOKING_FOR_PROPERTY);
return PHPTokenId.PHP_OBJECT_OPERATOR;
}
- case 252: break;
+ case 253: break;
case 88:
{ return PHPTokenId.PHP_EXIT;
}
- case 253: break;
+ case 254: break;
case 42:
{ if (aspTagsAllowed) {
//yybegin(ST_PHP_IN_SCRIPTING);
@@ -2551,16 +2561,16 @@ public PHPTokenId nextToken() throws java.io.IOException {
return PHPTokenId.T_INLINE_HTML;
}
}
- case 254: break;
+ case 255: break;
case 47:
{ pushState(ST_PHP_COMMENT);
return PHPTokenId.PHP_COMMENT_START;
}
- case 255: break;
+ case 256: break;
case 107:
{ return PHPTokenId.PHP_BREAK;
}
- case 256: break;
+ case 257: break;
case 31:
{ if(parenBalanceInConst == 0 && bracketBalanceInConst == 0) {
isInConst = false;
@@ -2568,29 +2578,29 @@ public PHPTokenId nextToken() throws java.io.IOException {
yypushback(1);
popState();
}
- case 257: break;
+ case 258: break;
case 22:
{ yypushback(1);
yybegin(ST_PHP_HEREDOC);
}
- case 258: break;
- case 159:
+ case 259: break;
+ case 160:
{ return PHPTokenId.PHP_INSTEADOF;
}
- case 259: break;
- case 118:
+ case 260: break;
+ case 119:
{ return PHPTokenId.PHP_MATCH;
}
- case 260: break;
+ case 261: break;
case 25:
{ /* {NOWDOC_CHARS}|{NEWLINE} */
// retrun PHPTokenId when the closing marker is found
}
- case 261: break;
- case 160:
+ case 262: break;
+ case 161:
{ return PHPTokenId.PHP_PROTECTED;
}
- case 262: break;
+ case 263: break;
case 72:
{ String text = yytext();
if ((text.charAt(1)=='%' && aspTagsAllowed)
@@ -2604,25 +2614,25 @@ public PHPTokenId nextToken() throws java.io.IOException {
return PHPTokenId.T_INLINE_HTML;
}
}
- case 263: break;
+ case 264: break;
case 41:
{ popState();
yypushback(1);
}
- case 264: break;
- case 120:
+ case 265: break;
+ case 121:
{ return PHPTokenId.PHP_PRINT;
}
- case 265: break;
+ case 266: break;
case 79:
{ return PHPTokenId.PHP_VAR;
}
- case 266: break;
- case 172:
+ case 267: break;
+ case 173:
{ pushState(ST_PHP_IN_SCRIPTING);
return PHPTokenId.T_INLINE_HTML;
}
- case 267: break;
+ case 268: break;
case 13:
{ if (isInConst) {
pushState(ST_PHP_LOOKING_FOR_CONSTANT_NAME);
@@ -2633,86 +2643,86 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_TOKEN;
}
- case 268: break;
- case 112:
+ case 269: break;
+ case 113:
{ return PHPTokenId.PHP_THROW;
}
- case 269: break;
- case 133:
+ case 270: break;
+ case 134:
{ return PHPTokenId.PHP_PARENT;
}
- case 270: break;
- case 131:
+ case 271: break;
+ case 132:
{ return PHPTokenId.PHP_SWITCH;
}
- case 271: break;
+ case 272: break;
case 87:
{ yypushback(2); // go back to mark end of comment in the next token
return PHPTokenId.PHPDOC_COMMENT;
}
- case 272: break;
+ case 273: break;
case 77:
{ return PHPTokenId.PHP_TYPE_INT;
}
- case 273: break;
- case 122:
+ case 274: break;
+ case 123:
{ return PHPTokenId.PHP_CASTING;
}
- case 274: break;
+ case 275: break;
case 50:
{ return PHPTokenId.PHP_TEXTUAL_OPERATOR;
}
- case 275: break;
+ case 276: break;
case 39:
{ popState();return PHPTokenId.WHITESPACE;
}
- case 276: break;
+ case 277: break;
case 76:
{ return PHPTokenId.PHP_DIE;
}
- case 277: break;
- case 155:
+ case 278: break;
+ case 156:
{ return PHPTokenId.PHP__CLASS__;
}
- case 278: break;
+ case 279: break;
case 2:
{ yypushback(1);
pushState(ST_PHP_HIGHLIGHTING_ERROR);
}
- case 279: break;
- case 117:
+ case 280: break;
+ case 118:
{ return PHPTokenId.PHP_CLASS;
}
- case 280: break;
- case 139:
+ case 281: break;
+ case 140:
{ return PHPTokenId.PHP_FINALLY;
}
- case 281: break;
- case 158:
+ case 282: break;
+ case 159:
{ return PHPTokenId.PHP_INTERFACE;
}
- case 282: break;
- case 154:
+ case 283: break;
+ case 155:
{ return PHPTokenId.PHP__TRAIT__;
}
- case 283: break;
- case 121:
+ case 284: break;
+ case 122:
{ return PHPTokenId.PHP_UNSET;
}
- case 284: break;
+ case 285: break;
case 12:
{ return PHPTokenId.PHP_CURLY_OPEN;
}
- case 285: break;
+ case 286: break;
case 28:
{ yypushback(1);
popState();
}
- case 286: break;
- case 134:
+ case 287: break;
+ case 135:
{ return PHPTokenId.PHP_PUBLIC;
}
- case 287: break;
+ case 288: break;
case 21:
{ int indexOfNewline = yytext().indexOf("\r");
if (indexOfNewline == -1) {
@@ -2724,60 +2734,60 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 288: break;
- case 168:
+ case 289: break;
+ case 169:
{ return PHPTokenId.PHP_REQUIRE_ONCE;
}
- case 289: break;
- case 162:
+ case 290: break;
+ case 163:
{ return PHPTokenId.PHP_ENDFOREACH;
}
- case 290: break;
+ case 291: break;
case 45:
{ // PHP 7.4 Arrow Functions 2.0
// https://wiki.php.net/rfc/arrow_functions_v2
return PHPTokenId.PHP_FN;
}
- case 291: break;
+ case 292: break;
case 85:
{ return PHPTokenId.PHP_NULLSAFE_OBJECT_OPERATOR;
}
- case 292: break;
- case 130:
+ case 293: break;
+ case 131:
{ return PHPTokenId.PHP_TYPE_STRING;
}
- case 293: break;
+ case 294: break;
case 90:
{ return PHPTokenId.PHP_EVAL;
}
- case 294: break;
+ case 295: break;
case 82:
{ popState();
pushState(ST_PHP_LOOKING_FOR_PROPERTY);
return PHPTokenId.PHP_NULLSAFE_OBJECT_OPERATOR;
}
- case 295: break;
+ case 296: break;
case 97:
{ return PHPTokenId.PHP_GOTO;
}
- case 296: break;
- case 114:
+ case 297: break;
+ case 115:
{ isInConst = true;
parenBalanceInConst = 0;
bracketBalanceInConst = 0;
pushState(ST_PHP_LOOKING_FOR_CONSTANT_NAME);
return PHPTokenId.PHP_CONST;
}
- case 297: break;
+ case 298: break;
case 20:
{ popState();
return PHPTokenId.PHP_STRING;
}
- case 298: break;
- case 150:
+ case 299: break;
+ case 151:
{ return PHPTokenId.PHP_ABSTRACT;
}
- case 299: break;
+ case 300: break;
case 27:
{ heredoc=null; hereocLength=0;
yybegin(ST_PHP_IN_SCRIPTING);
@@ -2789,7 +2799,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
yypushback(back);
return PHPTokenId.PHP_NOWDOC_TAG_END;
}
- case 300: break;
+ case 301: break;
case 5:
{ if ("?".equals(yytext())) { // NOI18N
// [NETBEANS-4443] PHP 8.0 Named Arguments
@@ -2834,12 +2844,12 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_TOKEN;
}
- case 301: break;
+ case 302: break;
case 9:
{ pushState(ST_PHP_DOUBLE_QUOTES);
return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 302: break;
+ case 303: break;
case 64:
{ /* {TABS_AND_SPACES}{LABEL}";"?[^\n\r]*[\r\n]? */
// there is no [\r\n] if it is the last line
@@ -2857,44 +2867,44 @@ public PHPTokenId nextToken() throws java.io.IOException {
yybegin(ST_PHP_NOWDOC);
}
}
- case 303: break;
+ case 304: break;
case 91:
{ return PHPTokenId.PHP_ECHO;
}
- case 304: break;
+ case 305: break;
case 106:
{ return PHPTokenId.PHP_FINAL;
}
- case 305: break;
- case 161:
+ case 306: break;
+ case 162:
{ return PHPTokenId.PHP__METHOD__;
}
- case 306: break;
+ case 307: break;
case 10:
{ return PHPTokenId.PHP_NS_SEPARATOR;
}
- case 307: break;
- case 123:
+ case 308: break;
+ case 124:
{ return PHPTokenId.PHP_YIELD;
}
- case 308: break;
- case 149:
+ case 309: break;
+ case 150:
{ pushState(ST_PHP_LOOKING_FOR_FUNCTION_NAME);
return PHPTokenId.PHP_FUNCTION;
}
- case 309: break;
- case 136:
+ case 310: break;
+ case 137:
{ return PHPTokenId.PHP__DIR__;
}
- case 310: break;
+ case 311: break;
case 4:
{ return PHPTokenId.PHP_STRING;
}
- case 311: break;
- case 152:
+ case 312: break;
+ case 153:
{ return PHPTokenId.PHP_CONTINUE;
}
- case 312: break;
+ case 313: break;
case 62:
{ /* {NEWLINE}{TABS_AND_SPACES}{LABEL}";"?[^\n\r]*[\n\r]? */
int trailingNewLineLength = 1;
@@ -2930,12 +2940,12 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_CONSTANT_ENCAPSED_STRING;
}
- case 313: break;
- case 165:
+ case 314: break;
+ case 166:
{ return PHPTokenId.PHP_IMPLEMENTS;
}
- case 314: break;
- case 135:
+ case 315: break;
+ case 136:
{ // [NETBEANS-4443] PHP 8.0: Named Arguments
int index = firstWhitespaceIndexOf(yytext());
if (index == -1) {
@@ -2955,60 +2965,64 @@ public PHPTokenId nextToken() throws java.io.IOException {
assert false : "expected \"parent\", \"self\", or \"static\" but " + "\"" + yytext() + "\""; // NOI18N
yypushback(yylength());
}
- case 315: break;
+ case 316: break;
case 74:
{ pushState(ST_PHP_LOOKING_FOR_PROPERTY);
return PHPTokenId.PHP_NULLSAFE_OBJECT_OPERATOR;
}
- case 316: break;
+ case 317: break;
case 78:
{ return PHPTokenId.PHP_TRY;
}
- case 317: break;
+ case 318: break;
case 109:
{ return PHPTokenId.PHP_ARRAY;
}
- case 318: break;
+ case 319: break;
case 7:
{ return PHPTokenId.WHITESPACE;
}
- case 319: break;
- case 127:
+ case 320: break;
+ case 128:
{ return PHPTokenId.PHP_RETURN;
}
- case 320: break;
+ case 321: break;
case 35:
{ return PHPTokenId.PHP_TOKEN;
}
- case 321: break;
+ case 322: break;
+ case 111:
+ { return PHPTokenId.PHP_TYPE_NEVER;
+ }
+ case 323: break;
case 16:
{ return PHPTokenId.PHP_ENCAPSED_AND_WHITESPACE;
}
- case 322: break;
- case 115:
+ case 324: break;
+ case 116:
{ return PHPTokenId.PHP_CATCH;
}
- case 323: break;
- case 153:
+ case 325: break;
+ case 154:
{ return PHPTokenId.PHP_CALLABLE;
}
- case 324: break;
+ case 326: break;
case 83:
{ String text = yytext();
int lastIndexOfDollar = text.lastIndexOf('$');
yypushback(text.length() - lastIndexOfDollar);
return PHPTokenId.PHP_ENCAPSED_AND_WHITESPACE;
}
- case 325: break;
+ case 327: break;
case 61:
{ return PHPTokenId.PHP_PAAMAYIM_NEKUDOTAYIM;
}
- case 326: break;
- case 164:
+ case 328: break;
+ case 165:
{ return PHPTokenId.PHP_INSTANCEOF;
}
- case 327: break;
- case 140:
+ case 329: break;
+ case 141:
{ int bprefix = (yytext().charAt(0) != '<') ? 1 : 0;
int startString=3+bprefix;
/* 3 is <<<, 2 is quotes, 1 is newline */
@@ -3023,46 +3037,46 @@ public PHPTokenId nextToken() throws java.io.IOException {
yybegin(ST_PHP_START_NOWDOC);
return PHPTokenId.PHP_NOWDOC_TAG_START;
}
- case 328: break;
+ case 330: break;
case 98:
{ return PHPTokenId.PHP_TYPE_BOOL;
}
- case 329: break;
- case 125:
+ case 331: break;
+ case 126:
{ return PHPTokenId.PHP_ENDFOR;
}
- case 330: break;
+ case 332: break;
case 73:
{ return PHPTokenId.PHP_FOR;
}
- case 331: break;
- case 138:
+ case 333: break;
+ case 139:
{ return PHPTokenId.PHP_FOREACH;
}
- case 332: break;
+ case 334: break;
case 55:
{ pushState(ST_PHP_LOOKING_FOR_STATIC_PROPERTY);
return PHPTokenId.PHP_PAAMAYIM_NEKUDOTAYIM;
}
- case 333: break;
+ case 335: break;
case 29:
{ popState();
return PHPTokenId.PHP_STRING;
}
- case 334: break;
+ case 336: break;
case 89:
{ return PHPTokenId.PHP_ELSE;
}
- case 335: break;
+ case 337: break;
case 96:
{ return PHPTokenId.PHP_SELF;
}
- case 336: break;
+ case 338: break;
case 57:
{ yypushback(1);
return PHPTokenId.PHP_ENCAPSED_AND_WHITESPACE;
}
- case 337: break;
+ case 339: break;
case 15:
{ int lastState = stack.peek();
if (lastState != ST_PHP_IN_SCRIPTING && lastState != YYINITIAL) {
@@ -3071,31 +3085,31 @@ public PHPTokenId nextToken() throws java.io.IOException {
}
return PHPTokenId.PHP_CURLY_CLOSE;
}
- case 338: break;
+ case 340: break;
case 52:
{ return PHPTokenId.PHP_DO;
}
- case 339: break;
+ case 341: break;
case 99:
{ return PHPTokenId.PHP_TYPE_VOID;
}
- case 340: break;
- case 148:
+ case 342: break;
+ case 149:
{ return PHPTokenId.PHP_ENDWHILE;
}
- case 341: break;
- case 126:
+ case 343: break;
+ case 127:
{ return PHPTokenId.PHP_ELSEIF;
}
- case 342: break;
+ case 344: break;
case 94:
{ return PHPTokenId.PHP_TRUE;
}
- case 343: break;
+ case 345: break;
case 54:
{ return PHPTokenId.PHP_ATTRIBUTE;
}
- case 344: break;
+ case 346: break;
default:
if (zzInput == YYEOF)
//zzAtEOF = true;
@@ -3109,7 +3123,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
return null;
}
}
- case 791: break;
+ case 796: break;
case ST_PHP_DOC_COMMENT: {
if (input.readLength() > 0) {
input.backup(1); // backup eof
@@ -3119,7 +3133,7 @@ public PHPTokenId nextToken() throws java.io.IOException {
return null;
}
}
- case 792: break;
+ case 797: break;
default:
{ if(input.readLength() > 0) {
// backup eof
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHPTokenId.java b/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHPTokenId.java
index 1d1d81d46d83..1657d35533fe 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHPTokenId.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/lexer/PHPTokenId.java
@@ -60,6 +60,7 @@ public enum PHPTokenId implements TokenId {
PHP_TYPE_VOID("void", "keyword"), //NOI18N
PHP_TYPE_OBJECT("object", "keyword"), //NOI18N
PHP_TYPE_MIXED("mixed", "keyword"), //NOI18N
+ PHP_TYPE_NEVER("never", "keyword"), //NOI18N NETBEANS-5599 PHP 8.1
PHP_FINAL(null, "keyword"), //NOI18N
PHP_PAAMAYIM_NEKUDOTAYIM(null, "operator"), //NOI18N
PHP_EXTENDS(null, "keyword"), //NOI18N
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java
index 6bdab41a03e1..4daad94ba932 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java
@@ -56,9 +56,10 @@ private Type() {
public static final String SELF = "self"; //NOI18N
public static final String PARENT = "parent"; //NOI18N
public static final String STATIC = "static"; //NOI18N NETBEANS-4443 PHP 8.0
+ public static final String NEVER = "never"; //NOI18N NETBEANS-5599 PHP 8.1
private static final List TYPES_FOR_EDITOR = Arrays.asList(ARRAY, CALLABLE, ITERABLE, BOOL, FLOAT, INT, STRING, OBJECT, NULL, FALSE, MIXED);
- private static final List TYPES_FOR_RETURN_TYPE = Arrays.asList(ARRAY, CALLABLE, ITERABLE, BOOL, FLOAT, INT, STRING, VOID, OBJECT, NULL, FALSE, MIXED);
+ private static final List TYPES_FOR_RETURN_TYPE = Arrays.asList(ARRAY, CALLABLE, ITERABLE, BOOL, FLOAT, INT, STRING, VOID, OBJECT, NULL, FALSE, MIXED, NEVER);
private static final List TYPES_FOR_FIELD_TYPE = Arrays.asList(ARRAY, ITERABLE, BOOL, FLOAT, INT, STRING, OBJECT, SELF, PARENT, NULL, FALSE, MIXED); // PHP 7.4 Typed Properties 2.0
private static final List SPECIAL_TYPES_FOR_TYPE = Arrays.asList(SELF, PARENT);
private static final List TYPES_FOR_PHP_DOC = Arrays.asList(STRING, INTEGER, INT, BOOLEAN, BOOL, FLOAT, DOUBLE, OBJECT, MIXED, ARRAY,
@@ -74,7 +75,7 @@ public static boolean isPrimitive(String typeName) {
|| NUMBER.equals(typeName) || CALLBACK.equals(typeName) || RESOURCE.equals(typeName)
|| DOUBLE.equals(typeName) || STRING.equals(typeName) || NULL.equals(typeName)
|| VOID.equals(typeName) || CALLABLE.equals(typeName) || ITERABLE.equals(typeName)
- || FALSE.equals(typeName) || STATIC.equals(typeName)) {
+ || FALSE.equals(typeName) || STATIC.equals(typeName) || NEVER.equals(typeName)) {
retval = true;
}
return retval;
@@ -97,7 +98,8 @@ public static boolean isArray(String typeName) {
public static boolean isInvalidPropertyType(String typeName) {
return VOID.equals(typeName)
|| NULL.equals(typeName)
- || STATIC.equals(typeName);
+ || STATIC.equals(typeName)
+ || NEVER.equals(typeName);
}
/**
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml b/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
index 3ff40bb5708c..829bba0de14a 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
@@ -442,7 +442,7 @@
-
+
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/verification/PHP81UnhandledError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/PHP81UnhandledError.java
index 39d8b5f938d0..8b3c60d429b3 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/verification/PHP81UnhandledError.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/PHP81UnhandledError.java
@@ -37,6 +37,10 @@
import org.openide.filesystems.FileObject;
import org.openide.util.NbBundle;
+/**
+ * Don't check "never" type because it may be used in older versions as a class
+ * name.
+ */
public final class PHP81UnhandledError extends UnhandledErrorRule {
@NbBundle.Messages("PHP81UnhandledError.displayName=Language feature not compatible with PHP version indicated in project settings")
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/verification/ReturnTypeHintError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/ReturnTypeHintError.java
index 39fd7394419b..2db790433563 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/verification/ReturnTypeHintError.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/ReturnTypeHintError.java
@@ -48,7 +48,7 @@
import org.openide.util.NbBundle;
/**
- * Check "void" return type.
+ * Check "void" and "never" return type.
*
*/
public class ReturnTypeHintError extends HintErrorRule {
@@ -91,7 +91,7 @@ private boolean appliesTo(FileObject file) {
return getPhpVersion(file).compareTo(PhpVersion.PHP_71) >= 0;
}
- // support only "void"
+ // support only "void" and "never"
// XXX support types?
private void checkReturnType(Map> returnStatements, List hints) {
for (Entry> entry : returnStatements.entrySet()) {
@@ -115,13 +115,13 @@ private void checkReturnType(Map> returnStatements
if (returnType instanceof NamespaceName) {
NamespaceName namespaceName = (NamespaceName) returnType;
String name = CodeUtils.extractUnqualifiedName(namespaceName);
- checkVoidReturnStatements(statements, name, hints);
+ checkVoidAndNeverReturnStatements(statements, name, hints);
} else if (returnType instanceof NullableType) {
Expression type = ((NullableType) returnType).getType();
if (type instanceof NamespaceName) {
NamespaceName namespaceName = (NamespaceName) type;
String name = CodeUtils.extractUnqualifiedName(namespaceName);
- checkInvalidVoidReturnType(type, name, hints);
+ checkInvalidVoidAndNeverReturnType(type, name, hints);
}
}
@@ -129,32 +129,40 @@ private void checkReturnType(Map> returnStatements
}
@NbBundle.Messages({
- "ReturnTypeHintErrorVoidDesc=\"void\" cannot return anything"
+ "# {0} - type",
+ "ReturnTypeHintErrorVoidDesc=\"{0}\" cannot return anything"
})
- private void checkVoidReturnStatements(Set statements, String name, List hints) {
- if (Type.VOID.equals(name)) {
+ private void checkVoidAndNeverReturnStatements(Set statements, String name, List hints) {
+ if (Type.VOID.equals(name) || isNeverType(name)) {
// check empty return statement
statements.forEach((statement) -> {
if (CancelSupport.getDefault().isCancelled()) {
return;
}
Expression expression = statement.getExpression();
- if (expression != null) {
- addHint(statement, Bundle.ReturnTypeHintErrorVoidDesc(), hints);
+ if (expression != null || isNeverType(name)) {
+ addHint(statement, Bundle.ReturnTypeHintErrorVoidDesc(name), hints);
}
});
}
}
@NbBundle.Messages({
- "ReturnTypeHintErrorInvalidVoidDesc=\"void\" cannot be used with \"?\""
+ "# {0} - type",
+ "ReturnTypeHintErrorInvalidVoidDesc=\"{0}\" cannot be used with \"?\""
})
- private void checkInvalidVoidReturnType(Expression returnType, String name, List hints) {
- if (Type.VOID.equals(name)) {
- addHint(returnType, Bundle.ReturnTypeHintErrorInvalidVoidDesc(), hints);
+ private void checkInvalidVoidAndNeverReturnType(Expression returnType, String name, List hints) {
+ if (Type.VOID.equals(name)
+ || isNeverType(name)) {
+ addHint(returnType, Bundle.ReturnTypeHintErrorInvalidVoidDesc(name), hints);
}
}
+ private boolean isNeverType(String name) {
+ return getPhpVersion(fileObject).hasNeverType()
+ && Type.NEVER.equals(name);
+ }
+
private void addHint(ASTNode node, String description, List hints) {
hints.add(new Hint(this,
description,
@@ -213,15 +221,11 @@ private void addReturnStatement(ASTNode node, ReturnStatement returnStatement) {
if (node != null) {
Set returns = returnStatements.get(node);
if (returns == null) {
- HashSet statements = new HashSet<>();
- if (returnStatement != null) {
- statements.add(returnStatement);
- }
- returnStatements.put(node, statements);
- } else {
- if (returnStatement != null) {
- returns.add(returnStatement);
- }
+ returns = new HashSet<>();
+ returnStatements.put(node, returns);
+ }
+ if (returnStatement != null) {
+ returns.add(returnStatement);
}
}
}
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesUnhandledError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java
similarity index 78%
rename from php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesUnhandledError.java
rename to php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java
index 398e1c1d868d..e056e41dd553 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesUnhandledError.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java
@@ -25,7 +25,9 @@
import java.util.List;
import java.util.Locale;
import org.netbeans.api.annotations.common.NullAllowed;
-import org.netbeans.modules.csl.api.Error;
+import org.netbeans.modules.csl.api.Hint;
+import org.netbeans.modules.csl.api.OffsetRange;
+import org.netbeans.modules.csl.api.Rule;
import org.netbeans.modules.csl.spi.support.CancelSupport;
import org.netbeans.modules.php.api.PhpVersion;
import org.netbeans.modules.php.editor.CodeUtils;
@@ -58,7 +60,7 @@
* file).
*
*/
-public class UnusableTypesUnhandledError extends UnhandledErrorRule {
+public class UnusableTypesHintError extends HintErrorRule {
private static final String TRAVERSABLE_TYPE = "Traversable"; // NOI18N
private static final List VALID_TYPES_WITH_OBJECT_TYPE = Arrays.asList(
@@ -67,20 +69,20 @@ public class UnusableTypesUnhandledError extends UnhandledErrorRule {
);
@Override
- @NbBundle.Messages("UnusableTypesUnhandledError.displayName=Unusable types.")
+ @NbBundle.Messages("UnusableTypesHintError.displayName=Unusable types.")
public String getDisplayName() {
- return Bundle.UnusableTypesUnhandledError_displayName();
+ return Bundle.UnusableTypesHintError_displayName();
}
@Override
- public void invoke(PHPRuleContext context, List result) {
+ public void invoke(PHPRuleContext context, List result) {
PHPParseResult phpParseResult = (PHPParseResult) context.parserResult;
if (phpParseResult.getProgram() != null) {
FileObject fileObject = phpParseResult.getSnapshot().getSource().getFileObject();
if (fileObject != null) {
- CheckVisitor checkVisitor = new CheckVisitor(fileObject, phpParseResult.getModel(), CodeUtils.getPhpVersion(fileObject));
+ CheckVisitor checkVisitor = new CheckVisitor(this, fileObject, phpParseResult.getModel(), CodeUtils.getPhpVersion(fileObject));
phpParseResult.getProgram().accept(checkVisitor);
- result.addAll(checkVisitor.getErrors());
+ result.addAll(checkVisitor.getHints());
}
}
}
@@ -88,7 +90,8 @@ public void invoke(PHPRuleContext context, List result) {
//~ Inner classes
private static final class CheckVisitor extends DefaultVisitor {
- private final List errors = new ArrayList<>();
+ private final UnusableTypesHintError rule;
+ private final List hints = new ArrayList<>();
private final FileObject fileObject;
private final Model model;
private final PhpVersion phpVersion;
@@ -96,15 +99,16 @@ private static final class CheckVisitor extends DefaultVisitor {
private boolean isInLambdaFunction;
private boolean isInMethodBody;
- private CheckVisitor(FileObject fileObject, Model model, PhpVersion phpVersion) {
+ private CheckVisitor(UnusableTypesHintError rule, FileObject fileObject, Model model, PhpVersion phpVersion) {
assert fileObject != null;
+ this.rule = rule;
this.fileObject = fileObject;
this.model = model;
this.phpVersion = phpVersion;
}
- private List getErrors() {
- return Collections.unmodifiableList(errors);
+ private List getHints() {
+ return Collections.unmodifiableList(hints);
}
@Override
@@ -230,6 +234,8 @@ private void checkFieldType(@NullAllowed Expression fieldType, boolean isInUnion
} else if (type instanceof NamespaceName) {
if (isVoidType((NamespaceName) type)) {
createError(type, Type.VOID, UnusableType.Context.Property);
+ } else if (isNeverType((NamespaceName) type)) {
+ createError(type, Type.NEVER, UnusableType.Context.Property);
}
if (!isInUnionType) {
checkFalseAndNullTypes((NamespaceName) type);
@@ -240,10 +246,12 @@ private void checkFieldType(@NullAllowed Expression fieldType, boolean isInUnion
}
private void checkParameterType(Expression parameterType, boolean isInUnionType) {
- // unusable type: void
+ // unusable type: void, never
if (parameterType instanceof NamespaceName) {
if (isVoidType((NamespaceName) parameterType)) {
createError(parameterType, Type.VOID, UnusableType.Context.Parameter);
+ } else if (isNeverType((NamespaceName) parameterType)) {
+ createError(parameterType, Type.NEVER, UnusableType.Context.Parameter);
}
if (!isInUnionType) {
checkFalseAndNullTypes((NamespaceName) parameterType);
@@ -254,10 +262,12 @@ private void checkParameterType(Expression parameterType, boolean isInUnionType)
}
private void checkArrowFunctionReturnType(Expression returnType, boolean isInUnionType) {
- // unusable type: void
+ // unusable type: void, never
if (returnType instanceof NamespaceName) {
if (isVoidType((NamespaceName) returnType)) {
- createError(returnType, Type.VOID, UnusableType.Context.Return);
+ createError(returnType, Type.VOID, UnusableType.Context.ArrowFunctionReturn);
+ } else if (isNeverType((NamespaceName) returnType)) {
+ createError(returnType, Type.NEVER, UnusableType.Context.ArrowFunctionReturn);
}
if (!isInUnionType) {
checkFalseAndNullTypes((NamespaceName) returnType);
@@ -283,6 +293,8 @@ private void checkReturnType(@NullAllowed Expression returnType, boolean isInUni
// "void" can't be part of a union type
if (isVoidType((NamespaceName) type)) {
createError(type, Type.VOID, UnusableType.Context.Union);
+ } else if (isNeverType((NamespaceName) type)) {
+ createError(type, Type.NEVER, UnusableType.Context.Union);
}
}
} else if (type instanceof UnionType) {
@@ -417,19 +429,19 @@ private void createError(ASTNode node, String type, UnusableType.Context context
}
private void createError(int startOffset, int endOffset, String type, UnusableType.Context context) {
- errors.add(new UnusableType(fileObject, startOffset, endOffset, type, context));
+ hints.add(new UnusableType(rule, fileObject, startOffset, endOffset, type, context));
}
private void createDuplicateTypeError(ASTNode node, String type) {
- errors.add(new DuplicateType(fileObject, node.getStartOffset(), node.getEndOffset(), type));
+ hints.add(new DuplicateType(rule, fileObject, node.getStartOffset(), node.getEndOffset(), type));
}
private void createRedundantTypeCombinationError(ASTNode node, UnionType unionType, String type, String redundantType) {
- errors.add(new RedundantTypeCombination(fileObject, node.getStartOffset(), node.getEndOffset(), unionType, Pair.of(type, redundantType)));
+ hints.add(new RedundantTypeCombination(rule, fileObject, node.getStartOffset(), node.getEndOffset(), unionType, Pair.of(type, redundantType)));
}
private void createIterableRedundantTypeCombinationError(UnionType unionType, IterableRedundantTypeCombination.RedundantType redundantType) {
- errors.add(new IterableRedundantTypeCombination(fileObject, unionType.getStartOffset(), unionType.getEndOffset(), unionType, redundantType));
+ hints.add(new IterableRedundantTypeCombination(rule, fileObject, unionType.getStartOffset(), unionType.getEndOffset(), unionType, redundantType));
}
private static boolean isArrayType(Identifier identifier) {
@@ -446,6 +458,10 @@ private static boolean isVoidType(NamespaceName namespaceName) {
return Type.VOID.equals(CodeUtils.extractUnqualifiedName(namespaceName));
}
+ private static boolean isNeverType(NamespaceName namespaceName) {
+ return Type.NEVER.equals(CodeUtils.extractUnqualifiedName(namespaceName));
+ }
+
private static boolean isFalseType(NamespaceName namespaceName) {
return Type.FALSE.equals(CodeUtils.extractUnqualifiedName(namespaceName));
}
@@ -473,18 +489,23 @@ private static boolean isTraversableType(NamespaceName namespaceName) {
}
@NbBundle.Messages({
- "UnusableType.Context.parameter=parameter",
- "UnusableType.Context.return=return",
- "UnusableType.Context.property=property",
- "UnusableType.Context.standalone=standalone",
- "UnusableType.Context.union=union",
- "UnusableType.Context.nullable=nullable",
+ "UnusableType.Context.parameter=a parameter",
+ "UnusableType.Context.return=a return",
+ "UnusableType.Context.arrowFunctionReturn=an arrow function return",
+ "UnusableType.Context.property=a property",
+ "UnusableType.Context.standalone=a standalone",
+ "UnusableType.Context.union=a union",
+ "UnusableType.Context.nullable=a nullable",
+ "# {0} - type",
+ "# {1} - context",
+ "UnusableType.description=\"{0}\" cannot be used as {1} type.",
})
- private static final class UnusableType extends VerificationError {
+ private static final class UnusableType extends Hint {
enum Context {
Parameter(Bundle.UnusableType_Context_parameter()),
Return(Bundle.UnusableType_Context_return()),
+ ArrowFunctionReturn(Bundle.UnusableType_Context_arrowFunctionReturn()),
Property(Bundle.UnusableType_Context_property()),
Standalone(Bundle.UnusableType_Context_standalone()),
Union(Bundle.UnusableType_Context_union()),
@@ -501,115 +522,32 @@ public String getContext() {
}
}
- private static final String KEY = "Php.Unusable.Type"; // NOI18N
- private final String type;
- private final String context;
-
- private UnusableType(FileObject fileObject, int startOffset, int endOffset, String type, Context context) {
- super(fileObject, startOffset, endOffset);
- this.type = type;
- this.context = context.getContext();
- }
-
- @NbBundle.Messages({
- "# {0} - type",
- "# {1} - context",
- "UnusableType.displayName=Unusable type: \"{0}\" cannot be used as {1} type."
- })
- @Override
- public String getDisplayName() {
- return Bundle.UnusableType_displayName(type, context);
+ private UnusableType(Rule rule, FileObject fileObject, int startOffset, int endOffset, String type, Context context) {
+ super(rule, Bundle.UnusableType_description(type, context.getContext()), fileObject, new OffsetRange(startOffset, endOffset), Collections.emptyList(), 500);
}
-
- @NbBundle.Messages({
- "# {0} - type",
- "# {1} - context",
- "UnusableType.description=\"{0}\" cannot be used as {1} type."
- })
- @Override
- public String getDescription() {
- return Bundle.UnusableType_description(type, context);
- }
-
- @Override
- public String getKey() {
- return KEY;
- }
-
}
- private static final class DuplicateType extends VerificationError {
-
- private static final String KEY = "Php.Duplicate.Type"; // NOI18N
- private final String type;
-
- private DuplicateType(FileObject fileObject, int startOffset, int endOffset, String type) {
- super(fileObject, startOffset, endOffset);
- this.type = type;
- }
-
- @NbBundle.Messages({
- "# {0} - type",
- "DuplicateType.displayName=Duplicate type: \"{0}\" is redundant."
- })
- @Override
- public String getDisplayName() {
- return Bundle.DuplicateType_displayName(type);
- }
-
- @NbBundle.Messages({
- "# {0} - type",
- "DuplicateType.description=Type \"{0}\" is duplicated."
- })
- @Override
- public String getDescription() {
- return Bundle.DuplicateType_description(type);
- }
+ @NbBundle.Messages({
+ "# {0} - type",
+ "DuplicateType.description=Type \"{0}\" is duplicated.",
+ })
+ private static final class DuplicateType extends Hint {
- @Override
- public String getKey() {
- return KEY;
+ private DuplicateType(Rule rule, FileObject fileObject, int startOffset, int endOffset, String type) {
+ super(rule, Bundle.DuplicateType_description(type), fileObject, new OffsetRange(startOffset, endOffset), Collections.emptyList(), 500);
}
-
}
- private static class RedundantTypeCombination extends VerificationError {
-
- private static final String KEY = "Php.Redundant.Type.Combination"; // NOI18N
- private final UnionType unionType;
- private final Pair types;
-
- public RedundantTypeCombination(FileObject fileObject, int startOffset, int endOffset, UnionType unionType, Pair types) {
- super(fileObject, startOffset, endOffset);
- this.unionType = unionType;
- this.types = types;
- }
-
- @NbBundle.Messages({
- "# {0} - union type",
- "# {1} - type",
- "# {2} - redundant type",
- "RedundantTypeCombination.displayName=Redundant combination: \"{0}\" contains both \"{1}\" and \"{2}\"."
- })
- @Override
- public String getDisplayName() {
- return Bundle.RedundantTypeCombination_displayName(VariousUtils.getUnionType(unionType), types.first(), types.second());
- }
-
- @NbBundle.Messages({
- "# {0} - union type",
- "# {1} - type",
- "# {2} - redundant type",
- "RedundantTypeCombination.description=\"{0}\" contains both \"{1}\" and \"{2}\"."
- })
- @Override
- public String getDescription() {
- return Bundle.RedundantTypeCombination_description(VariousUtils.getUnionType(unionType), types.first(), types.second());
- }
+ @NbBundle.Messages({
+ "# {0} - union type",
+ "# {1} - type",
+ "# {2} - redundant type",
+ "RedundantTypeCombination.description=Redundant combination: \"{0}\" contains both \"{1}\" and \"{2}\".",
+ })
+ private static class RedundantTypeCombination extends Hint {
- @Override
- public String getKey() {
- return KEY;
+ public RedundantTypeCombination(Rule rule, FileObject fileObject, int startOffset, int endOffset, UnionType unionType, Pair types) {
+ super(rule, Bundle.RedundantTypeCombination_description(VariousUtils.getUnionType(unionType), types.first(), types.second()), fileObject, new OffsetRange(startOffset, endOffset), Collections.emptyList(), 500);
}
}
@@ -637,8 +575,8 @@ public String getType() {
}
}
- public IterableRedundantTypeCombination(FileObject fileObject, int startOffset, int endOffset, UnionType unionType, RedundantType redundantType) {
- super(fileObject, startOffset, endOffset, unionType, Pair.of(Type.ITERABLE, redundantType.getType()));
+ public IterableRedundantTypeCombination(Rule rule, FileObject fileObject, int startOffset, int endOffset, UnionType unionType, RedundantType redundantType) {
+ super(rule, fileObject, startOffset, endOffset, unionType, Pair.of(Type.ITERABLE, redundantType.getType()));
}
}
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest/lexer/php81/neverType_01.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest/lexer/php81/neverType_01.pass
new file mode 100644
index 000000000000..34828ffbf3c5
--- /dev/null
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest/lexer/php81/neverType_01.pass
@@ -0,0 +1,122 @@
+token #0 PHP_OPENTAG
+token #98 WHITESPACE
+token #99 PHP_NUMBER 1
+token #100 PHP_SEMICOLON ;
+token #101 WHITESPACE
+token #102 PHP_LINE_COMMENT //
+token #103 PHP_LINE_COMMENT incorrect return type\n
+token #104 WHITESPACE \n
+token #105 PHP_FUNCTION function
+token #106 WHITESPACE
+token #107 PHP_STRING test
+token #108 PHP_TOKEN (
+token #109 PHP_TOKEN )
+token #110 PHP_TOKEN :
+token #111 WHITESPACE
+token #112 PHP_TYPE_MIXED mixed
+token #113 PHP_OPERATOR |
+token #114 PHP_TYPE_NEVER never
+token #115 WHITESPACE
+token #116 PHP_CURLY_OPEN {
+token #117 WHITESPACE
+token #118 PHP_LINE_COMMENT //
+token #119 PHP_LINE_COMMENT incorrect return type\n
+token #120 PHP_CURLY_CLOSE }
+token #121 WHITESPACE \n
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType01.completion
index 31a8eb9436b7..99193b49ded1 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType01.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType01.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType03.completion
index f2c21cd10bb0..89afcd7704b6 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType03.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType03.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType05.completion
index 710ae9997413..7e7d457b7244 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType05.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType05.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType07.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType07.completion
index 87a52e3d1f17..46de26eccb2c 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType07.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType07.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType12.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType12.completion
index 645e75b68e80..e544aa44ac5c 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType12.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType12.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType13.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType13.completion
index 86816d256453..5b007f383f49 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType13.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType13.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType14.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType14.completion
index 2f87824ec617..9ebc1c3ddcdc 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType14.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypes.php.testReturnType14.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping01.php.testReturnTypesTyping01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping01.php.testReturnTypesTyping01.completion
index fa999b41d028..ba3500f01f35 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping01.php.testReturnTypesTyping01.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping01.php.testReturnTypesTyping01.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping02.php.testReturnTypesTyping02.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping02.php.testReturnTypesTyping02.completion
index 21a44274f397..d8b590bcf83e 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping02.php.testReturnTypesTyping02.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping02.php.testReturnTypesTyping02.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping03.php.testReturnTypesTyping03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping03.php.testReturnTypesTyping03.completion
index ab84537048c7..40d0dc5c366f 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping03.php.testReturnTypesTyping03.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping03.php.testReturnTypesTyping03.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04a.completion
index 145d43bb39e3..121c98f9ed5e 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04a.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04a.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04b.completion
index af88ad987791..dcb51aecf005 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04b.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping04.php.testReturnTypesTyping04b.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping05.php.testReturnTypesTyping05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping05.php.testReturnTypesTyping05.completion
index d6f073efc9a1..5e650ad5a059 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping05.php.testReturnTypesTyping05.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping05.php.testReturnTypesTyping05.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping06.php.testReturnTypesTyping06.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping06.php.testReturnTypesTyping06.completion
index 0af28d9aa93c..19f558f4c8b0 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping06.php.testReturnTypesTyping06.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping06.php.testReturnTypesTyping06.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping07.php.testReturnTypesTyping07.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping07.php.testReturnTypesTyping07.completion
index 6595a0c85ebe..1ddddddb0b4a 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping07.php.testReturnTypesTyping07.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping07.php.testReturnTypesTyping07.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08a.completion
index 5199a7a13d0d..c15f604b8114 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08a.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08a.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08b.completion
index d345af27f94d..fc0e87b8d441 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08b.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping08.php.testReturnTypesTyping08b.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping09.php.testReturnTypesTyping09.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping09.php.testReturnTypesTyping09.completion
index 9879d6f262e7..99e13c402fc3 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping09.php.testReturnTypesTyping09.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping09.php.testReturnTypesTyping09.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping10.php.testReturnTypesTyping10.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping10.php.testReturnTypesTyping10.completion
index efeabf0cc923..f082ecfcc28f 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping10.php.testReturnTypesTyping10.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping10.php.testReturnTypesTyping10.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping11.php.testReturnTypesTyping11.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping11.php.testReturnTypesTyping11.completion
index 2348601439d8..bda5b6a77170 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping11.php.testReturnTypesTyping11.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping11.php.testReturnTypesTyping11.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12a.completion
index 0e39f580a1e8..b0b5c6e1353b 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12a.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12a.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12b.completion
index 5888017aad84..b003504c3444 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12b.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php70/base/returnTypesTyping12.php.testReturnTypesTyping12b.completion
@@ -55,6 +55,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Class01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Class01.completion
index a74e944ef20d..108ece1bea8e 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Class01.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Class01.completion
@@ -12,6 +12,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Function01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Function01.completion
index 0bc229125315..01b812adf132 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Function01.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Function01.completion
@@ -12,6 +12,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Interface01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Interface01.completion
index dba10891c5f7..be3bbb242d3f 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Interface01.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php71/testVoidReturnType/voidReturnType.php.testVoidReturnType_Interface01.completion
@@ -12,6 +12,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php72/testObjectTypeHint/objectTypeHint.php.testObjectTypeHint_ReturnType02.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php72/testObjectTypeHint/objectTypeHint.php.testObjectTypeHint_ReturnType02.completion
index 85b7c692ee20..497e24c02183 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php72/testObjectTypeHint/objectTypeHint.php.testObjectTypeHint_ReturnType02.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php72/testObjectTypeHint/objectTypeHint.php.testObjectTypeHint_ReturnType02.completion
@@ -11,6 +11,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php74/testArrowFunctions/arrowFunctions.php.testArrowFunctions_05a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php74/testArrowFunctions/arrowFunctions.php.testArrowFunctions_05a.completion
index ed175d774afc..eee41183ad43 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php74/testArrowFunctions/arrowFunctions.php.testArrowFunctions_05a.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php74/testArrowFunctions/arrowFunctions.php.testArrowFunctions_05a.completion
@@ -11,6 +11,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testMixedType/mixedType.php.testMixedType_05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testMixedType/mixedType.php.testMixedType_05.completion
index 53733bdf6748..d0db2f86c245 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testMixedType/mixedType.php.testMixedType_05.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testMixedType/mixedType.php.testMixedType_05.completion
@@ -11,6 +11,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_04.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_04.completion
index 440ec2f69741..6dcc6901c311 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_04.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_04.completion
@@ -13,6 +13,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_09.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_09.completion
index bc358a74e493..e1e21f5a4957 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_09.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_09.completion
@@ -13,6 +13,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_15.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_15.completion
index b1f040768b3c..e682e49c4ced 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_15.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesFunctions/unionTypesFunctions.php.testUnionTypesFunctions_15.completion
@@ -13,6 +13,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD string null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesMethods/unionTypesMethods.php.testUnionTypesMethods_07.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesMethods/unionTypesMethods.php.testUnionTypesMethods_07.completion
index 91d8fbb4b5ff..f7666d4e646e 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesMethods/unionTypesMethods.php.testUnionTypesMethods_07.completion
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testUnionTypesMethods/unionTypesMethods.php.testUnionTypesMethods_07.completion
@@ -18,6 +18,7 @@ KEYWORD float null
KEYWORD int null
KEYWORD iterable null
KEYWORD mixed null
+KEYWORD never null
KEYWORD null null
KEYWORD object null
KEYWORD parent null
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php
new file mode 100644
index 000000000000..f70cf8358a4c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php
@@ -0,0 +1,47 @@
+ 1; // incorrect return type
+
+function test(): mixed|never { // incorrect return type
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php b/php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php
new file mode 100644
index 000000000000..a0a9fd2be8bc
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php
@@ -0,0 +1,152 @@
+ $y;
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php.testArrowFunctionReturnTypes_01.hints b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php.testArrowFunctionReturnTypes_01.hints
new file mode 100644
index 000000000000..55effe8504ae
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php.testArrowFunctionReturnTypes_01.hints
@@ -0,0 +1,3 @@
+$af = fn(): void => $y;
+ ----
+HINT:"void" cannot be used as an arrow function return type.
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testFieldTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testFieldTypes_01.php
new file mode 100644
index 000000000000..efea2a0ffebe
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testFieldTypes_01.php
@@ -0,0 +1,60 @@
+ 1; // incorrect return type
+
+function test(): mixed|never { // incorrect return type
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php.testNeverTypes_01.hints b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php.testNeverTypes_01.hints
new file mode 100644
index 000000000000..43ffe53fd77d
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php.testNeverTypes_01.hints
@@ -0,0 +1,13 @@
+ private never $never; // incorrect field type
+ -----
+HINT:"never" cannot be used as a property type.
+ public function incorrectParameterType(never $param): never { // incorrect param type
+ -----
+HINT:"never" cannot be used as a parameter type.
+$af = fn(): never => 1; // incorrect return type
+ -----
+HINT:"never" cannot be used as an arrow function return type.
+function test(): mixed|never { // incorrect return type
+ -----
+HINT:"mixed" cannot be used as a union type.
+HINT:"never" cannot be used as a union type.
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php
new file mode 100644
index 000000000000..e3d32880f533
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php
@@ -0,0 +1,46 @@
+ new static;
+ }
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php.testStaticReturnTypes_01.hints b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php.testStaticReturnTypes_01.hints
new file mode 100644
index 000000000000..6e5098f282ac
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php.testStaticReturnTypes_01.hints
@@ -0,0 +1,15 @@
+function test(): static {
+ ------
+HINT:"static" cannot be used as a return type.
+ public function testStatic(): object|int|string|array|callable|null|bool|float|static {
+ ------
+HINT:Redundant combination: "object|int|string|array|callable|null|bool|float|static" contains both "object" and "static".
+ public function testSelf(): object|int|string|array|callable|null|bool|float|self {
+ ----
+HINT:Redundant combination: "object|int|string|array|callable|null|bool|float|self" contains both "object" and "self".
+ public function testParent(): object|int|string|array|callable|null|bool|float|parent {
+ ------
+HINT:Redundant combination: "object|int|string|array|callable|null|bool|float|parent" contains both "object" and "parent".
+ public function testNamespaceName(): object|int|string|array|callable|null|bool|float|\Foo\Bar {
+ --------
+HINT:Redundant combination: "object|int|string|array|callable|null|bool|float|\Foo\Bar" contains both "object" and "\Foo\Bar".
diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testUnionTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testUnionTypes_01.php
new file mode 100644
index 000000000000..28cd098f1859
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testUnionTypes_01.php
@@ -0,0 +1,71 @@
+ createClassPathsForTest() {
+ return Collections.singletonMap(
+ PhpSourcePath.SOURCE_CP,
+ ClassPathSupport.createClassPath(new FileObject[]{
+ FileUtil.toFileObject(new File(getDataDir(), "/testfiles/completion/lib/php81/" + getTestDirName()))
+ })
+ );
+ }
+
+ private String getTestDirName() {
+ String name = getName();
+ int indexOf = name.indexOf("_");
+ if (indexOf != -1) {
+ name = name.substring(0, indexOf);
+ }
+ return name;
+ }
+
+ private String getTestPath(String fileName) {
+ return String.format("testfiles/completion/lib/php81/%s/%s.php", getTestDirName(), fileName);
+ }
+
+ private void checkCompletion(String fileName, String caretPosition) throws Exception {
+ checkCompletion(getTestPath(fileName), caretPosition, false);
+ }
+
+ public void testNeverReturnType_Function01() throws Exception {
+ checkCompletion("neverReturnType", "function returnType(): ^never { // func");
+ }
+
+ public void testNeverReturnType_Function02() throws Exception {
+ checkCompletion("neverReturnType", "function returnType(): ne^ver { // func");
+ }
+
+ public void testNeverReturnType_Function03() throws Exception {
+ checkCompletion("neverReturnType", "function invalidInParameter(ne^ver $never): never { // func");
+ }
+
+ public void testNeverReturnType_Class01() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): ^never { // class");
+ }
+
+ public void testNeverReturnType_Class02() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): neve^r { // class");
+ }
+
+ public void testNeverReturnType_Class03() throws Exception {
+ checkCompletion("neverReturnType", "public function invalidInParameter(ne^ver $never): never { // class");
+ }
+
+ public void testNeverReturnType_Trait01() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): ^never { // trait");
+ }
+
+ public void testNeverReturnType_Trait02() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): neve^r { // trait");
+ }
+
+ public void testNeverReturnType_Trait03() throws Exception {
+ checkCompletion("neverReturnType", "public function invalidInParameter(ne^ver $never): never { // trait");
+ }
+
+ public void testNeverReturnType_Interface01() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): ^never; // interface");
+ }
+
+ public void testNeverReturnType_Interface02() throws Exception {
+ checkCompletion("neverReturnType", "public function returnType(): ne^ver; // interface");
+ }
+
+ public void testNeverReturnType_Interface03() throws Exception {
+ checkCompletion("neverReturnType", "public function invalidInParameter(ne^ver $never): never; // interface");
+ }
+
+}
diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest.java
new file mode 100644
index 000000000000..567cf69185b1
--- /dev/null
+++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.php.editor.lexer;
+
+public class PHP81FeaturesTest extends PHPLexerTestBase {
+
+ public PHP81FeaturesTest(String testName) {
+ super(testName);
+ }
+
+ public void testNeverType_01() throws Exception {
+ performTest("lexer/php81/neverType_01");
+ }
+
+}
diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/HintsTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/HintsTest.java
index aee9fdf02c44..5633c55df23d 100644
--- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/HintsTest.java
+++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/HintsTest.java
@@ -482,14 +482,6 @@ public void testConstantModifiersCheckFix_02() throws Exception {
applyHint(new ModifiersCheckHintError(), "testConstantModifiersCheckFix.php", "protected const P^ROTECTED_INTERFACE_CONST = 3;", "Remove modifier");
}
- public void testVoidReturnTypeHint_01() throws Exception {
- checkHints(new ReturnTypeHintErrorStub(PhpVersion.PHP_70), "testVoidReturnTypeHint.php");
- }
-
- public void testVoidReturnTypeHint_02() throws Exception {
- checkHints(new ReturnTypeHintErrorStub(PhpVersion.PHP_71), "testVoidReturnTypeHint.php");
- }
-
public void testDeclareStrictTypes_01a() throws Exception {
checkHints(new DeclareStrictTypesSuggestionStub(PhpVersion.PHP_70), "testDeclareStrictTypesSuggestion_01.php", "^{PHP_TYPE_NEVER} {
+ return PHPTokenId.PHP_TYPE_NEVER;
+}
+
"->" {
pushState(ST_PHP_LOOKING_FOR_PROPERTY);
return PHPTokenId.PHP_OBJECT_OPERATOR;