From 0846356b3d7a9827f8ef38e95ed286cebea8632b Mon Sep 17 00:00:00 2001 From: Junichi Yamamoto Date: Thu, 25 Nov 2021 22:53:59 +0900 Subject: [PATCH 1/3] Convert from UnusableTypesUnhandledError to UnusableTypesHintError - Use `HintErrorRule` instead of `UnhandledError` - Add unit tests --- .../modules/php/editor/resources/layer.xml | 2 +- ...Error.java => UnusableTypesHintError.java} | 174 +++++------------- .../testArrowFunctionReturnTypes_01.php | 21 +++ ....php.testArrowFunctionReturnTypes_01.hints | 3 + .../testFieldTypes_01.php | 60 ++++++ ...tFieldTypes_01.php.testFieldTypes_01.hints | 12 ++ .../testMixedTypes_01.php | 37 ++++ ...tMixedTypes_01.php.testMixedTypes_01.hints | 13 ++ .../testStaticReturnTypes_01.php | 46 +++++ ...ypes_01.php.testStaticReturnTypes_01.hints | 15 ++ .../testUnionTypes_01.php | 71 +++++++ ...tUnionTypes_01.php.testUnionTypes_01.hints | 49 +++++ .../UnusableTypesHintErrorTest.java | 52 ++++++ 13 files changed, 429 insertions(+), 126 deletions(-) rename php/php.editor/src/org/netbeans/modules/php/editor/verification/{UnusableTypesUnhandledError.java => UnusableTypesHintError.java} (79%) create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php.testArrowFunctionReturnTypes_01.hints create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testFieldTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testFieldTypes_01.php.testFieldTypes_01.hints create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testMixedTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testMixedTypes_01.php.testMixedTypes_01.hints create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testStaticReturnTypes_01.php.testStaticReturnTypes_01.hints create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testUnionTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testUnionTypes_01.php.testUnionTypes_01.hints create mode 100644 php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintErrorTest.java 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/UnusableTypesUnhandledError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java similarity index 79% 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..b37f586e9130 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 @@ -417,19 +421,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) { @@ -473,14 +477,17 @@ 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.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()), @@ -501,115 +508,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); - } - - @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 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); } - } - 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 +561,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/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php new file mode 100644 index 000000000000..d8ca7c7d076f --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testArrowFunctionReturnTypes_01.php @@ -0,0 +1,21 @@ + $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..2d2623248079 --- /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 a 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 @@ + 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 @@ + Date: Fri, 26 Nov 2021 07:39:42 +0900 Subject: [PATCH 2/3] [NETBEANS-5599] PHP 8.1 Support: Never type (Part 1) https://issues.apache.org/jira/browse/NETBEANS-5599 RFC: https://wiki.php.net/rfc/noreturn_type - Add `hasNeverType()` to `PhpVersion` - Fix the lexer - Mark as an error if something is returned when the return type is `never` - Mark as an error if `never` is used at incorrect places (e.g. private never $propertyType) - Add unit tests for the lexer and hints --- php/php.api.phpmodule/manifest.mf | 2 +- .../netbeans/modules/php/api/PhpVersion.java | 11 + php/php.editor/nbproject/project.properties | 2 +- php/php.editor/nbproject/project.xml | 2 +- .../php/editor/lexer/PHP5ColoringLexer.java | 2380 +++++++++-------- .../modules/php/editor/lexer/PHPTokenId.java | 1 + .../modules/php/editor/model/impl/Type.java | 8 +- .../verification/PHP81UnhandledError.java | 4 + .../verification/ReturnTypeHintError.java | 48 +- .../verification/UnusableTypesHintError.java | 20 +- .../lexer/php81/neverType_01.pass | 122 + .../testfiles/lexer/php81/neverType_01.php | 40 + .../testNeverReturnTypeHint.php | 152 ++ ...eHint.php.testNeverReturnTypeHint_01.hints | 1 + ...eHint.php.testNeverReturnTypeHint_02.hints | 66 + .../testVoidReturnTypeHint.php | 18 + ...peHint.php.testVoidReturnTypeHint_01.hints | 0 ...peHint.php.testVoidReturnTypeHint_02.hints | 0 ....php.testArrowFunctionReturnTypes_01.hints | 2 +- .../testNeverTypes_01.php | 40 + ...tNeverTypes_01.php.testNeverTypes_01.hints | 13 + .../php/editor/lexer/PHP81FeaturesTest.java | 31 + .../php/editor/verification/HintsTest.java | 23 - .../verification/ReturnTypeHintErrorTest.java | 66 + .../UnusableTypesHintErrorTest.java | 4 + php/php.editor/tools/Php5ColoringScanner.flex | 6 + 26 files changed, 1824 insertions(+), 1238 deletions(-) create mode 100644 php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest/lexer/php81/neverType_01.pass create mode 100644 php/php.editor/test/unit/data/testfiles/lexer/php81/neverType_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php.testNeverReturnTypeHint_01.hints create mode 100644 php/php.editor/test/unit/data/testfiles/verification/ReturnTypeHintError/testNeverReturnTypeHint.php.testNeverReturnTypeHint_02.hints rename php/php.editor/test/unit/data/testfiles/verification/{ => ReturnTypeHintError}/testVoidReturnTypeHint.php (78%) rename php/php.editor/test/unit/data/testfiles/verification/{ => ReturnTypeHintError}/testVoidReturnTypeHint.php.testVoidReturnTypeHint_01.hints (100%) rename php/php.editor/test/unit/data/testfiles/verification/{ => ReturnTypeHintError}/testVoidReturnTypeHint.php.testVoidReturnTypeHint_02.hints (100%) create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php create mode 100644 php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php.testNeverTypes_01.hints create mode 100644 php/php.editor/test/unit/src/org/netbeans/modules/php/editor/lexer/PHP81FeaturesTest.java create mode 100644 php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/ReturnTypeHintErrorTest.java 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/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/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/UnusableTypesHintError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java index b37f586e9130..e056e41dd553 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java @@ -234,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); @@ -244,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); @@ -258,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); @@ -287,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) { @@ -450,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)); } @@ -479,6 +491,7 @@ private static boolean isTraversableType(NamespaceName namespaceName) { @NbBundle.Messages({ "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", @@ -492,6 +505,7 @@ 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()), 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/lexer/php81/neverType_01.php b/php/php.editor/test/unit/data/testfiles/lexer/php81/neverType_01.php new file mode 100644 index 000000000000..a6a927e13478 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/lexer/php81/neverType_01.php @@ -0,0 +1,40 @@ + 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; ---- -HINT:"void" cannot be used as a return type. +HINT:"void" cannot be used as an arrow function return type. diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php new file mode 100644 index 000000000000..a6a927e13478 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testNeverTypes_01.php @@ -0,0 +1,40 @@ + 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/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; From 419c0ed1365212b878a47df73b197c375475f5a7 Mon Sep 17 00:00:00 2001 From: Junichi Yamamoto Date: Fri, 26 Nov 2021 11:36:33 +0900 Subject: [PATCH 3/3] [NETBEANS-5599] PHP 8.1 Support: Never type (Part 2) https://issues.apache.org/jira/browse/NETBEANS-5599 RFC: https://wiki.php.net/rfc/noreturn_type - Fix the code completion - Add and fix unit tests for the code completion --- .../completion/CompletionContextFinder.java | 1 + .../editor/completion/PHPCodeCompletion.java | 2 + ...eturnTypes.php.testReturnType01.completion | 1 + ...eturnTypes.php.testReturnType03.completion | 1 + ...eturnTypes.php.testReturnType05.completion | 1 + ...eturnTypes.php.testReturnType07.completion | 1 + ...eturnTypes.php.testReturnType12.completion | 1 + ...eturnTypes.php.testReturnType13.completion | 1 + ...eturnTypes.php.testReturnType14.completion | 1 + ...g01.php.testReturnTypesTyping01.completion | 1 + ...g02.php.testReturnTypesTyping02.completion | 1 + ...g03.php.testReturnTypesTyping03.completion | 1 + ...04.php.testReturnTypesTyping04a.completion | 1 + ...04.php.testReturnTypesTyping04b.completion | 1 + ...g05.php.testReturnTypesTyping05.completion | 1 + ...g06.php.testReturnTypesTyping06.completion | 1 + ...g07.php.testReturnTypesTyping07.completion | 1 + ...08.php.testReturnTypesTyping08a.completion | 1 + ...08.php.testReturnTypesTyping08b.completion | 1 + ...g09.php.testReturnTypesTyping09.completion | 1 + ...g10.php.testReturnTypesTyping10.completion | 1 + ...g11.php.testReturnTypesTyping11.completion | 1 + ...12.php.testReturnTypesTyping12a.completion | 1 + ...12.php.testReturnTypesTyping12b.completion | 1 + ....php.testVoidReturnType_Class01.completion | 1 + ...p.testVoidReturnType_Function01.completion | 1 + ....testVoidReturnType_Interface01.completion | 1 + ...testObjectTypeHint_ReturnType02.completion | 1 + ...ions.php.testArrowFunctions_05a.completion | 1 + .../mixedType.php.testMixedType_05.completion | 1 + ....php.testUnionTypesFunctions_04.completion | 1 + ....php.testUnionTypesFunctions_09.completion | 1 + ....php.testUnionTypesFunctions_15.completion | 1 + ...ds.php.testUnionTypesMethods_07.completion | 1 + .../testNeverReturnType/neverReturnType.php | 47 ++++++++ ...php.testNeverReturnType_Class01.completion | 22 ++++ ...php.testNeverReturnType_Class02.completion | 5 + ...php.testNeverReturnType_Class03.completion | 3 + ....testNeverReturnType_Function01.completion | 19 +++ ....testNeverReturnType_Function02.completion | 5 + ....testNeverReturnType_Function03.completion | 3 + ...testNeverReturnType_Interface01.completion | 22 ++++ ...testNeverReturnType_Interface02.completion | 5 + ...testNeverReturnType_Interface03.completion | 3 + ...php.testNeverReturnType_Trait01.completion | 22 ++++ ...php.testNeverReturnType_Trait02.completion | 5 + ...php.testNeverReturnType_Trait03.completion | 3 + .../completion/PHP81CodeCompletionTest.java | 111 ++++++++++++++++++ 48 files changed, 310 insertions(+) create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Class01.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Class02.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Class03.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Function01.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Function02.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Function03.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Interface01.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Interface02.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Interface03.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Trait01.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Trait02.completion create mode 100644 php/php.editor/test/unit/data/testfiles/completion/lib/php81/testNeverReturnType/neverReturnType.php.testNeverReturnType_Trait03.completion create mode 100644 php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP81CodeCompletionTest.java 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/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 @@ + 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"); + } + +}