From ac70faebc10189a85f3b163765898a3c800a2799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Fri, 9 May 2014 10:31:23 +0200 Subject: [PATCH] AS1/2 direct edit - global functions improvements AS1/2 gotoAndPlay decompilation --- .../action/model/DirectValueActionItem.java | 11 + .../action/model/FSCommandActionItem.java | 27 +- .../action/model/GotoFrame2ActionItem.java | 10 +- .../action/model/LoadMovieNumActionItem.java | 8 +- .../model/LoadVariablesNumActionItem.java | 8 +- .../model/PrintAsBitmapNumActionItem.java | 9 +- .../action/model/PrintNumActionItem.java | 8 +- .../model/UnLoadMovieNumActionItem.java | 8 +- .../model/clauses/TellTargetActionItem.java | 10 +- .../parser/script/ActionScriptLexer.java | 4457 ++++++++--------- .../parser/script/ActionScriptParser.java | 17 +- .../action/parser/script/SymbolType.java | 3 +- .../action/parser/script/actionscript.flex | 1 + .../flash/action/swf3/ActionGetURL.java | 2 +- .../flash/action/swf3/ActionPlay.java | 10 +- .../decompiler/flash/ActionScript2Test.java | 3 +- 16 files changed, 2233 insertions(+), 2359 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java index f4542b700..025a97536 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java @@ -243,4 +243,15 @@ public class DirectValueActionItem extends ActionItem { public boolean hasReturnValue() { return true; } + + public boolean isString(){ + return (value instanceof String)||(value instanceof ConstantIndex); + } + + public String getAsString(){ + if(!isString()){ + return null; + } + return (String)getResult(); + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java index 440633667..31a14ffc4 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java @@ -17,14 +17,21 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf3.ActionGetURL; +import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; +import com.jpexs.decompiler.graph.GraphTargetItem; +import static com.jpexs.decompiler.graph.GraphTargetItem.toSourceMerge; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.LocalData; import com.jpexs.helpers.Helper; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; /** * @@ -32,9 +39,9 @@ import java.util.List; */ public class FSCommandActionItem extends ActionItem { - private final String command; + private final GraphTargetItem command; - public FSCommandActionItem(GraphSourceItem instruction, String command) { + public FSCommandActionItem(GraphSourceItem instruction, GraphTargetItem command) { super(instruction, PRECEDENCE_PRIMARY); this.command = command; } @@ -43,14 +50,22 @@ public class FSCommandActionItem extends ActionItem { public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) { writer.append("fscommand"); writer.spaceBeforeCallParenthesies(1); - writer.append("(\""); - writer.append(Helper.escapeString(command)); - return writer.append("\")"); + writer.append("("); + try { + command.appendTo(writer, localData); + } catch (InterruptedException ex) { + Logger.getLogger(FSCommandActionItem.class.getName()).log(Level.SEVERE, null, ex); + } + return writer.append(")"); } @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { - return toSourceMerge(localData, generator, new ActionGetURL("FSCommand:" + command, "")); + ActionSourceGenerator asg=(ActionSourceGenerator)generator; + if((command instanceof DirectValueActionItem)&&((DirectValueActionItem)command).isString()){ + return toSourceMerge(localData, generator, new ActionGetURL("FSCommand:" + ((DirectValueActionItem)command).getAsString(), "")); + } + return toSourceMerge(localData, generator, new AddActionItem(null, asg.pushConstTargetItem("FSCommand:"), command, true), asg.pushConstTargetItem(""), new ActionGetURL2(1/*GET*/, false, false)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java index 407d3536a..5891fe28c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/GotoFrame2ActionItem.java @@ -17,6 +17,8 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.action.swf3.ActionGotoFrame; +import com.jpexs.decompiler.flash.action.swf3.ActionPlay; import com.jpexs.decompiler.flash.action.swf4.ActionGotoFrame2; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.CompilationException; @@ -72,8 +74,12 @@ public class GotoFrame2ActionItem extends ActionItem { } @Override - public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { - return toSourceMerge(localData, generator, frame, new ActionGotoFrame2(playFlag, sceneBiasFlag, sceneBias)); + public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { + if(!sceneBiasFlag && (frame instanceof DirectValueActionItem) && (((DirectValueActionItem)frame).value instanceof Long)){ + return toSourceMerge(localData, generator, frame, new ActionGotoFrame((int)((long)(Long)((DirectValueActionItem)frame).value)-1),playFlag?new ActionPlay():null); + }else{ + return toSourceMerge(localData, generator, frame, new ActionGotoFrame2(playFlag, sceneBiasFlag, sceneBias)); + } } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java index a032fcdd9..e1e5c1bb0 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java @@ -75,7 +75,13 @@ public class LoadMovieNumActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - return toSourceMerge(localData, generator, urlString, new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(method, false, false)); + Object lev = null; + if((num instanceof DirectValueActionItem)&&(((DirectValueActionItem)num).value instanceof Long)){ + lev = asGenerator.pushConstTargetItem("_level"+((DirectValueActionItem)num).value); + }else{ + lev = new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true); + } + return toSourceMerge(localData, generator, urlString, lev, new ActionGetURL2(method, false, false)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java index b3e7f5683..c5d95afc1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java @@ -75,7 +75,13 @@ public class LoadVariablesNumActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - return toSourceMerge(localData, generator, urlString, new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(method, true, false)); + Object lev = null; + if((num instanceof DirectValueActionItem)&&(((DirectValueActionItem)num).value instanceof Long)){ + lev = asGenerator.pushConstTargetItem("_level"+((DirectValueActionItem)num).value); + }else{ + lev = new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true); + } + return toSourceMerge(localData, generator, urlString, lev, new ActionGetURL2(method, true, false)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java index f29d0fb0d..ee0064f64 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java @@ -66,8 +66,13 @@ public class PrintAsBitmapNumActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - - return toSourceMerge(localData, generator, new AddActionItem(src, asGenerator.pushConstTargetItem("printasbitmap:#"), boundingBox, true), new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(0, false, false)); + Object lev = null; + if((num instanceof DirectValueActionItem)&&(((DirectValueActionItem)num).value instanceof Long)){ + lev = asGenerator.pushConstTargetItem("_level"+((DirectValueActionItem)num).value); + }else{ + lev = new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true); + } + return toSourceMerge(localData, generator, new AddActionItem(src, asGenerator.pushConstTargetItem("printasbitmap:#"), boundingBox, true), lev, new ActionGetURL2(0, false, false)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java index 32073e7d2..4ef022070 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java @@ -66,7 +66,13 @@ public class PrintNumActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - return toSourceMerge(localData, generator, new AddActionItem(src, asGenerator.pushConstTargetItem("print:#"), boundingBox, true), new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(0, false, false)); + Object lev = null; + if((num instanceof DirectValueActionItem)&&(((DirectValueActionItem)num).value instanceof Long)){ + lev = asGenerator.pushConstTargetItem("_level"+((DirectValueActionItem)num).value); + }else{ + lev = new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true); + } + return toSourceMerge(localData, generator, new AddActionItem(src, asGenerator.pushConstTargetItem("print:#"), boundingBox, true), lev, new ActionGetURL2(0, false, false)); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java index c7ffd9954..8c43a871a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; +import com.jpexs.decompiler.flash.action.swf3.ActionGetURL; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; @@ -62,7 +63,12 @@ public class UnLoadMovieNumActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; - return toSourceMerge(localData, generator, new ActionPush(""), new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(0, false, true)); + if((num instanceof DirectValueActionItem)&&(((DirectValueActionItem)num).value instanceof Long)){ + return toSourceMerge(localData, generator, new ActionGetURL("","_level"+((DirectValueActionItem)num).value )); + }else{ + return toSourceMerge(localData, generator, new ActionPush(""), new AddActionItem(src, asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(0, false, true)); + } + } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java index 2f7eacb5f..e2d4c2be6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/clauses/TellTargetActionItem.java @@ -18,8 +18,10 @@ package com.jpexs.decompiler.flash.action.model.clauses; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.ActionItem; +import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.swf3.ActionSetTarget; import com.jpexs.decompiler.flash.action.swf4.ActionSetTarget2; +import com.jpexs.decompiler.flash.action.swf4.ConstantIndex; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; @@ -67,8 +69,12 @@ public class TellTargetActionItem extends ActionItem { @Override public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { List ret = new ArrayList<>(); - ret.addAll(target.toSource(localData, generator)); - ret.add(new ActionSetTarget2()); + if((target instanceof DirectValueActionItem)&&((((DirectValueActionItem)target).value instanceof String) || (((DirectValueActionItem)target).value instanceof ConstantIndex))){ + ret.add(new ActionSetTarget((String)target.getResult())); + }else{ + ret.addAll(target.toSource(localData, generator)); + ret.add(new ActionSetTarget2()); + } ret.addAll(generator.generate(localData, commands)); ret.add(new ActionSetTarget("")); return ret; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index 08333a10e..196be05cd 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -17,1203 +17,1171 @@ * along with this program. If not, see . */ package com.jpexs.decompiler.flash.action.parser.script; - import com.jpexs.decompiler.flash.action.parser.ParseException; -import java.util.ArrayList; -import java.util.List; import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + /** - * This class is a scanner generated by - * JFlex 1.5.0-SNAPSHOT from the - * specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex + * This class is a scanner generated by + * JFlex 1.5.0-SNAPSHOT + * from the specification file D:/Dropbox/Programovani/JavaSE/FFDec/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex */ public final class ActionScriptLexer { - /** - * This character denotes the end of file - */ - public static final int YYEOF = -1; + /** This character denotes the end of file */ + public static final int YYEOF = -1; - /** - * initial size of the lookahead buffer - */ - private static final int ZZ_BUFFERSIZE = 16384; + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; - /** - * lexical states - */ - public static final int YYINITIAL = 0; - public static final int STRING = 2; - public static final int CHARLITERAL = 4; - public static final int XMLSTARTTAG = 6; - public static final int XML = 8; + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int STRING = 2; + public static final int CHARLITERAL = 4; + public static final int XMLSTARTTAG = 6; + public static final int XML = 8; - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2, 3, 3, 4, 4 - }; + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\7\1\3\1\2\1\120\1\121\1\1\16\7\4\0\1\14\1\107" - + "\1\16\1\0\1\6\1\116\1\112\1\30\1\77\1\100\1\5\1\114" - + "\1\106\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\105" - + "\1\12\1\15\1\13\1\111\1\117\1\61\1\22\1\71\1\72\1\25" - + "\1\63\1\6\1\65\1\76\2\6\1\67\1\70\1\75\1\6\1\74" - + "\1\66\1\6\1\62\1\64\1\60\1\73\1\6\1\21\2\6\1\103" - + "\1\27\1\104\1\115\1\6\1\0\1\34\1\31\1\36\1\45\1\33" - + "\1\46\1\57\1\51\1\43\1\6\1\35\1\47\1\54\1\41\1\40" - + "\1\52\1\6\1\32\1\37\1\42\1\44\1\55\1\50\1\56\1\53" - + "\1\6\1\101\1\113\1\102\1\110\6\7\1\122\32\7\2\0\4\6" - + "\4\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6\5\0\27\6" - + "\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6\7\0\1\6" - + "\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0\4\6\10\0" - + "\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0\123\6\1\0" - + "\213\6\1\0\5\7\2\0\236\6\11\0\46\6\2\0\1\6\7\0" - + "\47\6\11\0\55\7\1\0\1\7\1\0\2\7\1\0\2\7\1\0" - + "\1\7\10\0\33\6\5\0\3\6\15\0\4\7\7\0\1\6\4\0" - + "\13\7\5\0\53\6\37\7\4\0\2\6\1\7\143\6\1\0\1\6" - + "\10\7\1\0\6\7\2\6\2\7\1\0\4\7\2\6\12\7\3\6" - + "\2\0\1\6\17\0\1\7\1\6\1\7\36\6\33\7\2\0\131\6" - + "\13\7\1\6\16\0\12\7\41\6\11\7\2\6\4\0\1\6\5\0" - + "\26\6\4\7\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6" - + "\3\7\244\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6" - + "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\3\7\1\0" - + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0" - + "\4\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\1\6" - + "\10\0\1\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\4\6" - + "\7\0\1\6\5\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6" - + "\1\0\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7" - + "\1\0\5\7\4\0\2\7\2\0\3\7\3\0\1\7\7\0\4\6" - + "\1\0\1\6\7\0\14\7\3\6\1\7\13\0\3\7\1\0\11\6" - + "\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6" - + "\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7\2\0\1\6" - + "\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0" - + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0" - + "\5\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\10\0" - + "\2\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\1\0\1\6" - + "\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0" - + "\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0" - + "\14\6\4\0\5\7\3\0\3\7\1\0\4\7\2\0\1\6\6\0" - + "\1\7\16\0\12\7\11\0\1\6\7\0\3\7\1\0\10\6\1\0" - + "\3\6\1\0\27\6\1\0\12\6\1\0\5\6\3\0\1\6\7\7" - + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6" - + "\2\7\2\0\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0" - + "\27\6\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0" - + "\3\7\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7" - + "\2\0\12\7\1\0\2\6\17\0\2\7\1\0\10\6\1\0\3\6" - + "\1\0\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6" - + "\10\0\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0" - + "\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0" - + "\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0" - + "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7\1\0" - + "\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6\2\0" - + "\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6\1\0" - + "\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0\2\7" - + "\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7\2\0" - + "\2\6\42\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7\1\0" - + "\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0\24\7" - + "\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0\53\6" - + "\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6\3\7" - + "\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0\46\6" - + "\12\0\53\6\1\0\1\6\3\0\u0149\6\1\0\4\6\2\0\7\6" - + "\1\0\1\6\1\0\4\6\2\0\51\6\1\0\4\6\2\0\41\6" - + "\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\17\6" - + "\1\0\71\6\1\0\4\6\2\0\103\6\2\0\3\7\40\0\20\6" - + "\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0\32\6\5\0\113\6" - + "\3\0\3\6\17\0\15\6\1\0\4\6\3\7\13\0\22\6\3\7" - + "\13\0\22\6\2\7\14\0\15\6\1\0\3\6\1\0\2\7\14\0" - + "\64\6\40\7\3\0\1\6\3\0\2\6\1\7\2\0\12\7\41\0" - + "\3\7\2\0\12\7\6\0\130\6\10\0\51\6\1\7\1\6\5\0" - + "\106\6\12\0\35\6\3\0\14\7\4\0\14\7\12\0\12\7\36\6" - + "\2\0\5\6\13\0\54\6\4\0\21\7\7\6\2\7\6\0\12\7" - + "\46\0\27\6\5\7\4\0\65\6\12\7\1\0\35\7\2\0\13\7" - + "\6\0\12\7\15\0\1\6\130\0\5\7\57\6\21\7\7\6\4\0" - + "\12\7\21\0\11\7\14\0\3\7\36\6\12\7\3\0\2\6\12\7" - + "\6\0\46\6\16\7\14\0\44\6\24\7\10\0\12\7\3\0\3\6" - + "\12\7\44\6\122\0\3\7\1\0\25\7\4\6\1\7\4\6\1\7" - + "\15\0\300\6\47\7\25\0\4\7\u0116\6\2\0\6\6\2\0\46\6" - + "\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6" - + "\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6" - + "\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6" - + "\1\0\7\6\16\0\5\7\30\0\1\120\1\120\5\7\20\0\2\6" - + "\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0\1\6" - + "\20\0\15\6\3\0\32\6\26\0\15\7\4\0\1\7\3\0\14\7" - + "\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0\5\6" - + "\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0\13\6" - + "\2\0\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0\57\6" - + "\1\0\57\6\1\0\205\6\6\0\4\6\3\7\16\0\46\6\12\0" - + "\66\6\11\0\1\6\17\0\1\7\27\6\11\0\7\6\1\0\7\6" - + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6" - + "\1\0\7\6\1\0\40\7\57\0\1\6\u01d5\0\3\6\31\0\11\6" - + "\6\7\1\0\5\6\2\0\5\6\4\0\126\6\2\0\2\7\2\0" - + "\3\6\1\0\132\6\1\0\4\6\5\0\51\6\3\0\136\6\21\0" - + "\33\6\65\0\20\6\u0200\0\u19b6\6\112\0\u51cc\6\64\0\u048d\6\103\0" - + "\56\6\2\0\u010d\6\3\0\20\6\12\7\2\6\24\0\57\6\1\7" - + "\14\0\2\7\1\0\31\6\10\0\120\6\2\7\45\0\11\6\2\0" - + "\147\6\2\0\4\6\1\0\2\6\16\0\12\6\120\0\10\6\1\7" - + "\3\6\1\7\4\6\1\7\27\6\5\7\20\0\1\6\7\0\64\6" - + "\14\0\2\7\62\6\21\7\13\0\12\7\6\0\22\7\6\6\3\0" - + "\1\6\4\0\12\7\34\6\10\7\2\0\27\6\15\7\14\0\35\6" - + "\3\0\4\7\57\6\16\7\16\0\1\6\12\7\46\0\51\6\16\7" - + "\11\0\3\6\1\7\10\6\2\7\2\0\12\7\6\0\27\6\3\0" - + "\1\6\1\7\4\0\60\6\1\7\1\6\3\7\2\6\2\7\5\6" - + "\2\7\1\6\1\7\1\6\30\0\3\6\43\0\6\6\2\0\6\6" - + "\2\0\6\6\11\0\7\6\1\0\7\6\221\0\43\6\10\7\1\0" - + "\2\7\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\u2104\0" - + "\u012e\6\2\0\76\6\2\0\152\6\46\0\7\6\14\0\5\6\5\0" - + "\1\6\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0" - + "\2\6\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0" - + "\66\6\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6\30\0" - + "\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7\4\0" - + "\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6\13\0" - + "\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6\3\0" - + "\2\6\3\0\2\6\22\0\3\7\4\0"; + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\120\1\121\1\1\16\7\4\0\1\14\1\107"+ + "\1\16\1\0\1\6\1\116\1\112\1\30\1\77\1\100\1\5\1\114"+ + "\1\106\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\105"+ + "\1\12\1\15\1\13\1\111\1\117\1\61\1\22\1\71\1\72\1\25"+ + "\1\63\1\6\1\65\1\76\2\6\1\67\1\70\1\75\1\6\1\74"+ + "\1\66\1\6\1\62\1\64\1\60\1\73\1\6\1\21\2\6\1\103"+ + "\1\27\1\104\1\115\1\6\1\0\1\34\1\31\1\36\1\45\1\33"+ + "\1\46\1\57\1\51\1\43\1\6\1\35\1\47\1\54\1\41\1\40"+ + "\1\52\1\6\1\32\1\37\1\42\1\44\1\55\1\50\1\56\1\53"+ + "\1\6\1\101\1\113\1\102\1\110\6\7\1\122\32\7\2\0\4\6"+ + "\4\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6\5\0\27\6"+ + "\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6\7\0\1\6"+ + "\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0\4\6\10\0"+ + "\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0\123\6\1\0"+ + "\213\6\1\0\5\7\2\0\236\6\11\0\46\6\2\0\1\6\7\0"+ + "\47\6\11\0\55\7\1\0\1\7\1\0\2\7\1\0\2\7\1\0"+ + "\1\7\10\0\33\6\5\0\3\6\15\0\4\7\7\0\1\6\4\0"+ + "\13\7\5\0\53\6\37\7\4\0\2\6\1\7\143\6\1\0\1\6"+ + "\10\7\1\0\6\7\2\6\2\7\1\0\4\7\2\6\12\7\3\6"+ + "\2\0\1\6\17\0\1\7\1\6\1\7\36\6\33\7\2\0\131\6"+ + "\13\7\1\6\16\0\12\7\41\6\11\7\2\6\4\0\1\6\5\0"+ + "\26\6\4\7\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6"+ + "\3\7\244\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6"+ + "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\3\7\1\0"+ + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0"+ + "\4\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\1\6"+ + "\10\0\1\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\4\6"+ + "\7\0\1\6\5\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6"+ + "\1\0\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7"+ + "\1\0\5\7\4\0\2\7\2\0\3\7\3\0\1\7\7\0\4\6"+ + "\1\0\1\6\7\0\14\7\3\6\1\7\13\0\3\7\1\0\11\6"+ + "\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6"+ + "\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7\2\0\1\6"+ + "\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0"+ + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0"+ + "\5\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\10\0"+ + "\2\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\1\0\1\6"+ + "\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0"+ + "\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0"+ + "\14\6\4\0\5\7\3\0\3\7\1\0\4\7\2\0\1\6\6\0"+ + "\1\7\16\0\12\7\11\0\1\6\7\0\3\7\1\0\10\6\1\0"+ + "\3\6\1\0\27\6\1\0\12\6\1\0\5\6\3\0\1\6\7\7"+ + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6"+ + "\2\7\2\0\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0"+ + "\27\6\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0"+ + "\3\7\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7"+ + "\2\0\12\7\1\0\2\6\17\0\2\7\1\0\10\6\1\0\3\6"+ + "\1\0\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6"+ + "\10\0\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0"+ + "\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0"+ + "\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0"+ + "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7\1\0"+ + "\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6\2\0"+ + "\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6\1\0"+ + "\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0\2\7"+ + "\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7\2\0"+ + "\2\6\42\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7\1\0"+ + "\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0\24\7"+ + "\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0\53\6"+ + "\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6\3\7"+ + "\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0\46\6"+ + "\12\0\53\6\1\0\1\6\3\0\u0149\6\1\0\4\6\2\0\7\6"+ + "\1\0\1\6\1\0\4\6\2\0\51\6\1\0\4\6\2\0\41\6"+ + "\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\17\6"+ + "\1\0\71\6\1\0\4\6\2\0\103\6\2\0\3\7\40\0\20\6"+ + "\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0\32\6\5\0\113\6"+ + "\3\0\3\6\17\0\15\6\1\0\4\6\3\7\13\0\22\6\3\7"+ + "\13\0\22\6\2\7\14\0\15\6\1\0\3\6\1\0\2\7\14\0"+ + "\64\6\40\7\3\0\1\6\3\0\2\6\1\7\2\0\12\7\41\0"+ + "\3\7\2\0\12\7\6\0\130\6\10\0\51\6\1\7\1\6\5\0"+ + "\106\6\12\0\35\6\3\0\14\7\4\0\14\7\12\0\12\7\36\6"+ + "\2\0\5\6\13\0\54\6\4\0\21\7\7\6\2\7\6\0\12\7"+ + "\46\0\27\6\5\7\4\0\65\6\12\7\1\0\35\7\2\0\13\7"+ + "\6\0\12\7\15\0\1\6\130\0\5\7\57\6\21\7\7\6\4\0"+ + "\12\7\21\0\11\7\14\0\3\7\36\6\12\7\3\0\2\6\12\7"+ + "\6\0\46\6\16\7\14\0\44\6\24\7\10\0\12\7\3\0\3\6"+ + "\12\7\44\6\122\0\3\7\1\0\25\7\4\6\1\7\4\6\1\7"+ + "\15\0\300\6\47\7\25\0\4\7\u0116\6\2\0\6\6\2\0\46\6"+ + "\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6"+ + "\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6"+ + "\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6"+ + "\1\0\7\6\16\0\5\7\30\0\1\120\1\120\5\7\20\0\2\6"+ + "\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0\1\6"+ + "\20\0\15\6\3\0\32\6\26\0\15\7\4\0\1\7\3\0\14\7"+ + "\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0\5\6"+ + "\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0\13\6"+ + "\2\0\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0\57\6"+ + "\1\0\57\6\1\0\205\6\6\0\4\6\3\7\16\0\46\6\12\0"+ + "\66\6\11\0\1\6\17\0\1\7\27\6\11\0\7\6\1\0\7\6"+ + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6"+ + "\1\0\7\6\1\0\40\7\57\0\1\6\u01d5\0\3\6\31\0\11\6"+ + "\6\7\1\0\5\6\2\0\5\6\4\0\126\6\2\0\2\7\2\0"+ + "\3\6\1\0\132\6\1\0\4\6\5\0\51\6\3\0\136\6\21\0"+ + "\33\6\65\0\20\6\u0200\0\u19b6\6\112\0\u51cc\6\64\0\u048d\6\103\0"+ + "\56\6\2\0\u010d\6\3\0\20\6\12\7\2\6\24\0\57\6\1\7"+ + "\14\0\2\7\1\0\31\6\10\0\120\6\2\7\45\0\11\6\2\0"+ + "\147\6\2\0\4\6\1\0\2\6\16\0\12\6\120\0\10\6\1\7"+ + "\3\6\1\7\4\6\1\7\27\6\5\7\20\0\1\6\7\0\64\6"+ + "\14\0\2\7\62\6\21\7\13\0\12\7\6\0\22\7\6\6\3\0"+ + "\1\6\4\0\12\7\34\6\10\7\2\0\27\6\15\7\14\0\35\6"+ + "\3\0\4\7\57\6\16\7\16\0\1\6\12\7\46\0\51\6\16\7"+ + "\11\0\3\6\1\7\10\6\2\7\2\0\12\7\6\0\27\6\3\0"+ + "\1\6\1\7\4\0\60\6\1\7\1\6\3\7\2\6\2\7\5\6"+ + "\2\7\1\6\1\7\1\6\30\0\3\6\43\0\6\6\2\0\6\6"+ + "\2\0\6\6\11\0\7\6\1\0\7\6\221\0\43\6\10\7\1\0"+ + "\2\7\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\u2104\0"+ + "\u012e\6\2\0\76\6\2\0\152\6\46\0\7\6\14\0\5\6\5\0"+ + "\1\6\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0"+ + "\2\6\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0"+ + "\66\6\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6\30\0"+ + "\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7\4\0"+ + "\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6\13\0"+ + "\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6\3\0"+ + "\2\6\3\0\2\6\22\0\3\7\4\0"; - /** - * Translates characters to character classes - */ - private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + /** + * Translates characters to character classes + */ + private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - /** - * Translates DFA states to action switch labels. - */ - private static final int[] ZZ_ACTION = zzUnpackAction(); + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - private static final String ZZ_ACTION_PACKED_0 - = "\5\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7" - + "\1\10\1\11\1\12\1\13\1\14\2\15\1\16\1\17" - + "\26\6\1\20\1\21\1\22\1\23\1\24\1\25\1\26" - + "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36" - + "\1\37\1\40\1\41\2\42\1\43\1\1\1\41\2\44" - + "\1\41\1\1\1\45\3\41\1\3\1\0\1\46\1\47" - + "\1\50\2\0\1\51\1\0\1\52\1\53\1\54\1\55" - + "\1\56\1\57\1\51\1\0\2\57\1\0\1\60\1\61" - + "\7\6\1\62\23\6\1\63\1\64\1\65\4\6\1\66" - + "\27\6\1\67\1\70\1\71\1\72\1\73\1\74\1\75" - + "\1\76\1\77\1\100\1\101\2\102\1\103\1\104\1\105" - + "\1\106\1\107\1\110\1\111\6\0\2\3\2\0\1\112" - + "\3\0\1\113\1\0\1\114\1\115\1\116\1\117\2\120" - + "\1\57\1\51\1\0\15\6\1\121\1\122\5\6\1\123" - + "\1\6\1\124\5\6\1\125\7\6\1\126\2\6\1\127" - + "\7\6\1\130\20\6\1\131\1\6\1\132\2\6\1\133" - + "\2\6\1\134\1\102\7\0\1\135\5\0\1\136\1\120" - + "\1\57\4\6\1\137\1\140\1\141\1\6\1\142\1\6" - + "\1\143\5\6\1\144\7\6\1\145\1\6\1\146\4\6" - + "\1\147\21\6\1\150\7\6\1\151\4\6\1\152\7\6" - + "\1\41\1\0\1\153\12\0\1\120\1\57\1\154\4\6" - + "\1\155\1\156\1\6\1\157\5\6\1\160\5\6\1\161" - + "\3\6\1\162\14\6\1\163\5\6\1\164\2\6\1\165" - + "\3\6\1\166\1\6\1\167\10\6\10\0\1\120\1\57" - + "\1\170\1\6\1\171\3\6\1\172\2\6\1\173\1\174" - + "\7\6\1\175\4\6\1\176\4\6\1\177\4\6\1\200" - + "\10\6\1\201\2\6\1\202\3\6\1\203\1\204\1\6" - + "\2\0\1\113\1\120\1\57\1\6\1\205\5\6\1\206" - + "\14\6\1\207\1\6\1\210\1\211\7\6\1\212\1\213" - + "\6\6\1\41\1\120\1\57\1\6\1\214\2\6\1\215" - + "\1\216\6\6\1\217\6\6\1\220\5\6\1\221\1\6" - + "\1\222\1\223\3\6\1\224\1\120\1\57\1\6\1\225" - + "\1\6\1\226\1\227\4\6\1\230\2\6\1\231\2\6" - + "\1\232\1\6\1\233\1\234\5\6\1\120\1\57\2\6" - + "\1\235\1\236\1\6\1\237\1\6\1\240\6\6\1\241" - + "\2\6\1\57\4\6\1\242\4\6\1\243\1\244\1\245" - + "\1\57\6\6\1\246\2\6\1\57\1\6\1\247\1\6" - + "\1\250\2\6\1\251\1\252\1\57\2\6\1\253\3\6" - + "\1\57\1\254\4\6\1\57\2\6\1\255\1\256\1\257" - + "\1\6\1\260"; + private static final String ZZ_ACTION_PACKED_0 = + "\5\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+ + "\1\10\1\11\1\12\1\13\1\14\2\15\1\16\1\17"+ + "\26\6\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ + "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ + "\1\37\1\40\1\41\2\42\1\43\1\1\1\41\2\44"+ + "\1\41\1\1\1\45\3\41\1\3\1\0\1\46\1\47"+ + "\1\50\2\0\1\51\1\0\1\52\1\53\1\54\1\55"+ + "\1\56\1\57\1\51\1\0\2\57\1\0\1\60\1\61"+ + "\7\6\1\62\23\6\1\63\1\64\1\65\4\6\1\66"+ + "\30\6\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+ + "\1\76\1\77\1\100\1\101\2\102\1\103\1\104\1\105"+ + "\1\106\1\107\1\110\1\111\6\0\2\3\2\0\1\112"+ + "\3\0\1\113\1\0\1\114\1\115\1\116\1\117\2\120"+ + "\1\57\1\51\1\0\15\6\1\121\1\122\5\6\1\123"+ + "\1\6\1\124\5\6\1\125\7\6\1\126\2\6\1\127"+ + "\10\6\1\130\20\6\1\131\1\6\1\132\2\6\1\133"+ + "\2\6\1\134\1\102\7\0\1\135\5\0\1\136\1\120"+ + "\1\57\4\6\1\137\1\140\1\141\1\6\1\142\1\6"+ + "\1\143\5\6\1\144\7\6\1\145\1\6\1\146\4\6"+ + "\1\147\22\6\1\150\7\6\1\151\4\6\1\152\7\6"+ + "\1\41\1\0\1\153\12\0\1\120\1\57\1\154\4\6"+ + "\1\155\1\156\1\6\1\157\5\6\1\160\5\6\1\161"+ + "\3\6\1\162\14\6\1\163\6\6\1\164\2\6\1\165"+ + "\3\6\1\166\1\6\1\167\10\6\10\0\1\120\1\57"+ + "\1\170\1\6\1\171\3\6\1\172\2\6\1\173\1\174"+ + "\7\6\1\175\4\6\1\176\4\6\1\177\5\6\1\200"+ + "\10\6\1\201\2\6\1\202\3\6\1\203\1\204\1\6"+ + "\2\0\1\113\1\120\1\57\1\6\1\205\5\6\1\206"+ + "\14\6\1\207\1\6\1\210\1\6\1\211\7\6\1\212"+ + "\1\213\6\6\1\41\1\120\1\57\1\6\1\214\2\6"+ + "\1\215\1\216\6\6\1\217\7\6\1\220\5\6\1\221"+ + "\1\6\1\222\1\223\3\6\1\224\1\120\1\57\1\6"+ + "\1\225\1\6\1\226\1\227\4\6\1\230\2\6\1\231"+ + "\2\6\1\232\1\233\1\6\1\234\1\235\5\6\1\120"+ + "\1\57\2\6\1\236\1\237\1\6\1\240\1\6\1\241"+ + "\6\6\1\242\2\6\1\57\4\6\1\243\4\6\1\244"+ + "\1\245\1\246\1\57\6\6\1\247\2\6\1\57\1\6"+ + "\1\250\1\6\1\251\2\6\1\252\1\253\1\57\2\6"+ + "\1\254\3\6\1\57\1\255\4\6\1\57\2\6\1\256"+ + "\1\257\1\260\1\6\1\261"; - private static int[] zzUnpackAction() { - int[] result = new int[676]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; + private static int [] zzUnpackAction() { + int [] result = new int[684]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u019f"+ + "\0\u0245\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a"+ + "\0\u04dd\0\u019f\0\u0530\0\u0583\0\u05d6\0\u019f\0\u0629\0\u067c"+ + "\0\u06cf\0\u0722\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u0914"+ + "\0\u0967\0\u09ba\0\u0a0d\0\u0a60\0\u0ab3\0\u0b06\0\u0b59\0\u0bac"+ + "\0\u0bff\0\u0c52\0\u0ca5\0\u0cf8\0\u019f\0\u019f\0\u019f\0\u019f"+ + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u0d4b\0\u019f\0\u019f\0\u0d9e"+ + "\0\u0df1\0\u0e44\0\u0e97\0\u0eea\0\u019f\0\u0f3d\0\u0f90\0\u019f"+ + "\0\u019f\0\u0fe3\0\u1036\0\u1089\0\u019f\0\u10dc\0\u112f\0\u019f"+ + "\0\u1182\0\u019f\0\u11d5\0\u1228\0\u127b\0\u019f\0\u019f\0\u019f"+ + "\0\u12ce\0\u1321\0\u1374\0\u13c7\0\u141a\0\u019f\0\u146d\0\u019f"+ + "\0\u14c0\0\u1513\0\u1566\0\u15b9\0\u160c\0\u165f\0\u16b2\0\u019f"+ + "\0\u019f\0\u1705\0\u1758\0\u17ab\0\u17fe\0\u1851\0\u18a4\0\u18f7"+ + "\0\u033e\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96\0\u1ae9\0\u1b3c"+ + "\0\u1b8f\0\u1be2\0\u1c35\0\u1c88\0\u1cdb\0\u1d2e\0\u1d81\0\u1dd4"+ + "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u033e\0\u1f73\0\u1fc6\0\u2019"+ + "\0\u206c\0\u20bf\0\u2112\0\u033e\0\u2165\0\u21b8\0\u220b\0\u225e"+ + "\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450\0\u24a3\0\u24f6"+ + "\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8\0\u273b\0\u278e"+ + "\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u019f\0\u019f\0\u019f"+ + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u2980"+ + "\0\u29d3\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f"+ + "\0\u112f\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u019f"+ + "\0\u2c18\0\u2c6b\0\u019f\0\u2cbe\0\u2d11\0\u2d64\0\u019f\0\u2db7"+ + "\0\u019f\0\u2e0a\0\u019f\0\u019f\0\u15b9\0\u2e5d\0\u2eb0\0\u2f03"+ + "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148"+ + "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u333a\0\u033e\0\u033e"+ + "\0\u338d\0\u33e0\0\u3433\0\u3486\0\u34d9\0\u033e\0\u352c\0\u357f"+ + "\0\u35d2\0\u3625\0\u3678\0\u36cb\0\u371e\0\u033e\0\u3771\0\u37c4"+ + "\0\u3817\0\u386a\0\u38bd\0\u3910\0\u3963\0\u39b6\0\u3a09\0\u3a5c"+ + "\0\u033e\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e\0\u3ca1"+ + "\0\u3cf4\0\u033e\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93\0\u3ee6"+ + "\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b\0\u417e"+ + "\0\u41d1\0\u4224\0\u033e\0\u4277\0\u42ca\0\u431d\0\u4370\0\u033e"+ + "\0\u43c3\0\u4416\0\u019f\0\u019f\0\u4469\0\u44bc\0\u450f\0\u4562"+ + "\0\u45b5\0\u4608\0\u465b\0\u019f\0\u46ae\0\u4701\0\u4754\0\u47a7"+ + "\0\u47fa\0\u019f\0\u484d\0\u48a0\0\u48f3\0\u4946\0\u4999\0\u49ec"+ + "\0\u033e\0\u033e\0\u033e\0\u4a3f\0\u033e\0\u4a92\0\u033e\0\u4ae5"+ + "\0\u4b38\0\u4b8b\0\u4bde\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d"+ + "\0\u4dd0\0\u4e23\0\u4e76\0\u4ec9\0\u033e\0\u4f1c\0\u033e\0\u4f6f"+ + "\0\u4fc2\0\u5015\0\u5068\0\u033e\0\u50bb\0\u510e\0\u5161\0\u51b4"+ + "\0\u5207\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c"+ + "\0\u549f\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u033e\0\u5691"+ + "\0\u56e4\0\u5737\0\u578a\0\u57dd\0\u5830\0\u5883\0\u033e\0\u58d6"+ + "\0\u5929\0\u597c\0\u59cf\0\u033e\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b"+ + "\0\u5b6e\0\u5bc1\0\u5c14\0\u5c67\0\u5cba\0\u019f\0\u5d0d\0\u5d60"+ + "\0\u5db3\0\u5e06\0\u5e59\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8"+ + "\0\u604b\0\u609e\0\u033e\0\u60f1\0\u6144\0\u6197\0\u61ea\0\u033e"+ + "\0\u033e\0\u623d\0\u033e\0\u6290\0\u62e3\0\u6336\0\u6389\0\u63dc"+ + "\0\u033e\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u033e\0\u65ce"+ + "\0\u6621\0\u6674\0\u033e\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813"+ + "\0\u6866\0\u68b9\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u033e"+ + "\0\u6aab\0\u6afe\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u033e\0\u6c9d"+ + "\0\u6cf0\0\u6d43\0\u6d96\0\u6de9\0\u6e3c\0\u033e\0\u6e8f\0\u033e"+ + "\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e\0\u7081\0\u70d4\0\u7127"+ + "\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6\0\u7319\0\u736c\0\u73bf"+ + "\0\u7412\0\u7465\0\u033e\0\u74b8\0\u033e\0\u750b\0\u755e\0\u75b1"+ + "\0\u033e\0\u7604\0\u7657\0\u033e\0\u033e\0\u76aa\0\u76fd\0\u7750"+ + "\0\u77a3\0\u77f6\0\u7849\0\u789c\0\u033e\0\u78ef\0\u7942\0\u7995"+ + "\0\u79e8\0\u033e\0\u7a3b\0\u7a8e\0\u7ae1\0\u7b34\0\u033e\0\u7b87"+ + "\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3\0\u033e\0\u7d26\0\u7d79\0\u7dcc"+ + "\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b\0\u033e\0\u7fbe\0\u8011"+ + "\0\u033e\0\u8064\0\u80b7\0\u810a\0\u033e\0\u033e\0\u815d\0\u81b0"+ + "\0\u8203\0\u5eff\0\u8256\0\u82a9\0\u82fc\0\u033e\0\u834f\0\u83a2"+ + "\0\u83f5\0\u8448\0\u849b\0\u033e\0\u84ee\0\u8541\0\u8594\0\u85e7"+ + "\0\u863a\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9\0\u882c\0\u887f"+ + "\0\u033e\0\u88d2\0\u033e\0\u8925\0\u033e\0\u8978\0\u89cb\0\u8a1e"+ + "\0\u8a71\0\u8ac4\0\u8b17\0\u8b6a\0\u033e\0\u033e\0\u8bbd\0\u8c10"+ + "\0\u8c63\0\u8cb6\0\u8d09\0\u8d5c\0\u7220\0\u8daf\0\u8e02\0\u8e55"+ + "\0\u033e\0\u8ea8\0\u8efb\0\u033e\0\u033e\0\u8f4e\0\u8fa1\0\u8ff4"+ + "\0\u9047\0\u909a\0\u90ed\0\u033e\0\u9140\0\u9193\0\u91e6\0\u9239"+ + "\0\u928c\0\u92df\0\u9332\0\u033e\0\u9385\0\u93d8\0\u942b\0\u947e"+ + "\0\u94d1\0\u033e\0\u9524\0\u033e\0\u033e\0\u9577\0\u95ca\0\u961d"+ + "\0\u033e\0\u9670\0\u96c3\0\u9716\0\u033e\0\u9769\0\u033e\0\u033e"+ + "\0\u97bc\0\u980f\0\u9862\0\u98b5\0\u033e\0\u9908\0\u995b\0\u033e"+ + "\0\u99ae\0\u9a01\0\u033e\0\u9a54\0\u9aa7\0\u033e\0\u033e\0\u9afa"+ + "\0\u9b4d\0\u9ba0\0\u9bf3\0\u9c46\0\u019f\0\u9c99\0\u9cec\0\u9d3f"+ + "\0\u033e\0\u033e\0\u9d92\0\u033e\0\u9de5\0\u033e\0\u9e38\0\u9e8b"+ + "\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\u033e\0\ua02a\0\ua07d\0\ua0d0"+ + "\0\ua123\0\ua176\0\ua1c9\0\ua21c\0\ua26f\0\ua2c2\0\ua315\0\ua368"+ + "\0\ua3bb\0\u033e\0\u033e\0\u033e\0\ua40e\0\ua461\0\ua4b4\0\ua507"+ + "\0\ua55a\0\ua5ad\0\ua600\0\u033e\0\ua653\0\ua6a6\0\ua6f9\0\ua74c"+ + "\0\u033e\0\ua79f\0\u033e\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e"+ + "\0\ua991\0\ua9e4\0\u033e\0\uaa37\0\uaa8a\0\uaadd\0\uab30\0\u033e"+ + "\0\uab83\0\uabd6\0\uac29\0\uac7c\0\u1566\0\uaccf\0\uad22\0\u033e"+ + "\0\u033e\0\u033e\0\uad75\0\u033e"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[684]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); } + return j; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u019f" - + "\0\u0245\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a" - + "\0\u04dd\0\u019f\0\u0530\0\u0583\0\u05d6\0\u019f\0\u0629\0\u067c" - + "\0\u06cf\0\u0722\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u0914" - + "\0\u0967\0\u09ba\0\u0a0d\0\u0a60\0\u0ab3\0\u0b06\0\u0b59\0\u0bac" - + "\0\u0bff\0\u0c52\0\u0ca5\0\u0cf8\0\u019f\0\u019f\0\u019f\0\u019f" - + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u0d4b\0\u019f\0\u019f\0\u0d9e" - + "\0\u0df1\0\u0e44\0\u0e97\0\u0eea\0\u019f\0\u0f3d\0\u0f90\0\u019f" - + "\0\u019f\0\u0fe3\0\u1036\0\u1089\0\u019f\0\u10dc\0\u112f\0\u019f" - + "\0\u1182\0\u019f\0\u11d5\0\u1228\0\u127b\0\u019f\0\u019f\0\u019f" - + "\0\u12ce\0\u1321\0\u1374\0\u13c7\0\u141a\0\u019f\0\u146d\0\u019f" - + "\0\u14c0\0\u1513\0\u1566\0\u15b9\0\u160c\0\u165f\0\u16b2\0\u019f" - + "\0\u019f\0\u1705\0\u1758\0\u17ab\0\u17fe\0\u1851\0\u18a4\0\u18f7" - + "\0\u033e\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96\0\u1ae9\0\u1b3c" - + "\0\u1b8f\0\u1be2\0\u1c35\0\u1c88\0\u1cdb\0\u1d2e\0\u1d81\0\u1dd4" - + "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u033e\0\u1f73\0\u1fc6\0\u2019" - + "\0\u206c\0\u20bf\0\u2112\0\u033e\0\u2165\0\u21b8\0\u220b\0\u225e" - + "\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450\0\u24a3\0\u24f6" - + "\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8\0\u273b\0\u278e" - + "\0\u27e1\0\u2834\0\u2887\0\u28da\0\u019f\0\u019f\0\u019f\0\u019f" - + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u292d\0\u2980" - + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u112f" - + "\0\u29d3\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u019f\0\u2bc5" - + "\0\u2c18\0\u019f\0\u2c6b\0\u2cbe\0\u2d11\0\u019f\0\u2d64\0\u019f" - + "\0\u2db7\0\u019f\0\u019f\0\u15b9\0\u2e0a\0\u2e5d\0\u2eb0\0\u2eb0" - + "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148" - + "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u033e\0\u033e\0\u333a" - + "\0\u338d\0\u33e0\0\u3433\0\u3486\0\u033e\0\u34d9\0\u352c\0\u357f" - + "\0\u35d2\0\u3625\0\u3678\0\u36cb\0\u033e\0\u371e\0\u3771\0\u37c4" - + "\0\u3817\0\u386a\0\u38bd\0\u3910\0\u3963\0\u39b6\0\u3a09\0\u033e" - + "\0\u3a5c\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e\0\u033e" - + "\0\u3ca1\0\u3cf4\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93\0\u3ee6" - + "\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b\0\u417e" - + "\0\u033e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u033e\0\u431d\0\u4370" - + "\0\u019f\0\u019f\0\u43c3\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562" - + "\0\u45b5\0\u019f\0\u4608\0\u465b\0\u46ae\0\u4701\0\u4754\0\u019f" - + "\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3\0\u4946\0\u033e\0\u033e" - + "\0\u033e\0\u4999\0\u033e\0\u49ec\0\u033e\0\u4a3f\0\u4a92\0\u4ae5" - + "\0\u4b38\0\u4b8b\0\u4bde\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d" - + "\0\u4dd0\0\u4e23\0\u033e\0\u4e76\0\u033e\0\u4ec9\0\u4f1c\0\u4f6f" - + "\0\u4fc2\0\u033e\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4" - + "\0\u5207\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c" - + "\0\u549f\0\u54f2\0\u5545\0\u033e\0\u5598\0\u55eb\0\u563e\0\u5691" - + "\0\u56e4\0\u5737\0\u578a\0\u033e\0\u57dd\0\u5830\0\u5883\0\u58d6" - + "\0\u033e\0\u5929\0\u597c\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b" - + "\0\u5b6e\0\u5bc1\0\u019f\0\u5c14\0\u5c67\0\u5cba\0\u5d0d\0\u5d60" - + "\0\u5db3\0\u5e06\0\u5e59\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u033e" - + "\0\u5ff8\0\u604b\0\u609e\0\u60f1\0\u033e\0\u033e\0\u6144\0\u033e" - + "\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u033e\0\u6336\0\u6389" - + "\0\u63dc\0\u642f\0\u6482\0\u033e\0\u64d5\0\u6528\0\u657b\0\u033e" - + "\0\u65ce\0\u6621\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813" - + "\0\u6866\0\u68b9\0\u690c\0\u695f\0\u033e\0\u69b2\0\u6a05\0\u6a58" - + "\0\u6aab\0\u6afe\0\u033e\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d" - + "\0\u6cf0\0\u033e\0\u6d43\0\u033e\0\u6d96\0\u6de9\0\u6e3c\0\u6e8f" - + "\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e\0\u7081\0\u70d4\0\u7127" - + "\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6\0\u7319\0\u033e\0\u736c" - + "\0\u033e\0\u73bf\0\u7412\0\u7465\0\u033e\0\u74b8\0\u750b\0\u033e" - + "\0\u033e\0\u755e\0\u75b1\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750" - + "\0\u033e\0\u77a3\0\u77f6\0\u7849\0\u789c\0\u033e\0\u78ef\0\u7942" - + "\0\u7995\0\u79e8\0\u033e\0\u7a3b\0\u7a8e\0\u7ae1\0\u7b34\0\u033e" - + "\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3\0\u7d26\0\u7d79\0\u7dcc" - + "\0\u033e\0\u7e1f\0\u7e72\0\u033e\0\u7ec5\0\u7f18\0\u7f6b\0\u033e" - + "\0\u033e\0\u7fbe\0\u8011\0\u8064\0\u5e06\0\u80b7\0\u810a\0\u815d" - + "\0\u033e\0\u81b0\0\u8203\0\u8256\0\u82a9\0\u82fc\0\u033e\0\u834f" - + "\0\u83a2\0\u83f5\0\u8448\0\u849b\0\u84ee\0\u8541\0\u8594\0\u85e7" - + "\0\u863a\0\u868d\0\u86e0\0\u033e\0\u8733\0\u033e\0\u033e\0\u8786" - + "\0\u87d9\0\u882c\0\u887f\0\u88d2\0\u8925\0\u8978\0\u033e\0\u033e" - + "\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u8b17\0\u8b6a\0\u70d4\0\u8bbd" - + "\0\u8c10\0\u8c63\0\u033e\0\u8cb6\0\u8d09\0\u033e\0\u033e\0\u8d5c" - + "\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u033e\0\u8f4e\0\u8fa1" - + "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u033e\0\u9140\0\u9193\0\u91e6" - + "\0\u9239\0\u928c\0\u033e\0\u92df\0\u033e\0\u033e\0\u9332\0\u9385" - + "\0\u93d8\0\u033e\0\u942b\0\u947e\0\u94d1\0\u033e\0\u9524\0\u033e" - + "\0\u033e\0\u9577\0\u95ca\0\u961d\0\u9670\0\u033e\0\u96c3\0\u9716" - + "\0\u033e\0\u9769\0\u97bc\0\u980f\0\u9862\0\u033e\0\u033e\0\u98b5" - + "\0\u9908\0\u995b\0\u99ae\0\u9a01\0\u019f\0\u9a54\0\u9aa7\0\u9afa" - + "\0\u033e\0\u033e\0\u9b4d\0\u033e\0\u9ba0\0\u033e\0\u9bf3\0\u9c46" - + "\0\u9c99\0\u9cec\0\u9d3f\0\u9d92\0\u033e\0\u9de5\0\u9e38\0\u9e8b" - + "\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a\0\ua07d\0\ua0d0\0\ua123" - + "\0\ua176\0\u033e\0\u033e\0\u033e\0\ua1c9\0\ua21c\0\ua26f\0\ua2c2" - + "\0\ua315\0\ua368\0\ua3bb\0\u033e\0\ua40e\0\ua461\0\ua4b4\0\ua507" - + "\0\u033e\0\ua55a\0\u033e\0\ua5ad\0\ua600\0\ua653\0\ua6a6\0\ua6f9" - + "\0\ua74c\0\ua79f\0\u033e\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\u033e" - + "\0\ua93e\0\ua991\0\ua9e4\0\uaa37\0\u1566\0\uaa8a\0\uaadd\0\u033e" - + "\0\u033e\0\u033e\0\uab30\0\u033e"; + private static final String ZZ_TRANS_PACKED_0 = + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\6"+ + "\1\15\1\16\1\17\1\20\1\11\1\21\1\22\1\23"+ + "\1\24\2\14\2\24\1\14\1\25\1\6\1\26\1\27"+ + "\1\30\1\31\1\32\1\14\1\33\1\34\1\35\1\36"+ + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\14"+ + "\1\46\1\14\1\47\1\50\1\14\1\51\2\14\1\52"+ + "\12\14\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\0\1\11\1\0\1\76"+ + "\1\77\1\100\13\76\1\101\10\76\1\102\73\76\1\103"+ + "\1\77\1\100\24\103\1\102\1\101\72\103\1\6\1\104"+ + "\1\105\1\106\2\6\1\107\4\6\1\110\1\111\4\6"+ + "\2\107\2\6\1\107\3\6\46\107\21\6\1\0\1\106"+ + "\1\0\1\112\1\104\1\105\7\112\1\113\105\112\130\0"+ + "\1\10\123\0\1\11\10\0\1\11\104\0\1\11\5\0"+ + "\1\114\1\115\7\0\1\116\122\0\1\117\113\0\2\14"+ + "\7\0\7\14\3\0\46\14\23\0\1\14\10\0\1\120"+ + "\123\0\1\121\1\122\4\0\2\123\2\0\2\123\104\0"+ + "\1\124\3\0\1\125\2\0\1\126\3\0\2\124\2\0"+ + "\1\124\3\0\46\124\37\0\1\127\1\0\1\130\122\0"+ + "\1\131\116\0\1\123\5\0\1\132\1\133\1\134\1\0"+ + "\1\135\1\136\1\137\5\0\1\137\22\0\1\134\55\0"+ + "\1\123\5\0\2\24\2\0\2\24\1\137\5\0\1\137"+ + "\104\0\1\140\10\0\1\141\102\0\2\14\7\0\7\14"+ + "\3\0\1\14\1\142\44\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\143\1\144\42\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\145"+ + "\12\14\1\146\5\14\1\147\1\150\20\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\6\14\1\151\37\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\152\3\14\1\153\6\14\1\154\1\14\1\155\25\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\156\6\14\1\157\1\14\1\160\3\14\1\161\26\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14"+ + "\1\162\22\14\1\163\21\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\164\1\165\7\14\1\166"+ + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\167\1\170\1\171\3\14\1\172\10\14\1\173"+ + "\1\14\1\174\23\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\6\14\1\175\1\14\1\176\4\14\1\177"+ + "\5\14\1\200\22\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\6\14\1\201\1\14\1\202\35\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\203"+ + "\4\14\1\204\3\14\1\205\6\14\1\206\23\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\207"+ + "\2\14\1\210\1\211\2\14\1\212\1\213\32\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\214"+ + "\4\14\1\215\36\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\216\5\14\1\217\25\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\220"+ + "\1\14\1\221\7\14\1\222\2\14\1\223\27\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\1\224\45\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\225\3\14\1\226\36\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\227\4\14\1\230\36\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14"+ + "\1\231\34\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\232\7\14\1\233\32\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\10\14\1\234\35\14"+ + "\23\0\1\14\15\0\1\235\122\0\1\236\74\0\1\237"+ + "\25\0\1\240\75\0\1\241\24\0\1\242\76\0\1\243"+ + "\23\0\1\244\122\0\1\245\105\0\1\76\2\0\13\76"+ + "\1\0\10\76\1\0\73\76\2\0\1\100\120\0\1\246"+ + "\2\0\13\246\1\247\1\250\3\246\1\250\1\251\2\246"+ + "\1\252\1\253\1\254\1\255\6\246\1\256\1\257\3\246"+ + "\1\260\51\246\3\0\1\103\2\0\24\103\2\0\72\103"+ + "\2\0\1\105\123\0\1\106\10\0\1\106\104\0\1\106"+ + "\7\0\2\261\1\262\3\0\1\263\1\264\1\0\7\261"+ + "\3\0\46\261\23\0\1\261\3\0\1\106\2\0\1\261"+ + "\5\0\1\111\4\0\2\261\2\0\1\261\3\0\46\261"+ + "\22\0\1\106\5\0\1\265\1\0\1\266\12\0\2\266"+ + "\2\0\1\266\3\0\46\266\24\0\1\114\1\267\1\270"+ + "\120\114\5\271\1\272\115\271\11\0\1\273\117\0\1\274"+ + "\12\0\2\274\2\0\1\274\3\0\46\274\43\0\2\123"+ + "\2\0\2\123\1\137\5\0\1\137\75\0\1\275\1\124"+ + "\1\276\2\0\1\277\1\300\2\0\2\124\2\275\2\124"+ + "\1\275\3\0\46\275\23\0\1\124\15\0\1\301\120\0"+ + "\1\302\1\0\1\303\122\0\1\304\116\0\1\123\5\0"+ + "\1\132\1\133\2\0\1\135\1\136\1\137\5\0\1\137"+ + "\100\0\1\123\5\0\2\133\2\0\2\133\1\137\5\0"+ + "\1\137\106\0\1\305\1\306\1\0\4\306\3\0\1\306"+ + "\1\0\2\306\1\0\1\306\6\0\2\306\12\0\1\306"+ + "\1\0\1\306\5\0\2\306\41\0\1\123\5\0\1\136"+ + "\1\133\2\0\2\136\1\137\5\0\1\137\100\0\1\123"+ + "\5\0\1\307\1\133\2\0\2\307\1\137\5\0\1\137"+ + "\106\0\2\310\2\0\2\310\1\0\1\311\65\0\1\311"+ + "\14\0\2\14\7\0\7\14\3\0\2\14\1\312\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14"+ + "\1\313\11\14\1\314\22\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\10\14\1\315\35\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\5\14\1\316\40\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\6\14"+ + "\1\317\37\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\320\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\321\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\6\14\1\322\2\14"+ + "\1\323\4\14\1\324\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\10\14\1\325\35\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\3\14\1\326\42\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14"+ + "\1\327\44\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\330\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\331\3\14\1\332\36\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\333"+ + "\20\14\1\334\24\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\335\33\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\14\14\1\336\31\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\337"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\17\14\1\340\5\14\1\341\20\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\23\14\1\342\22\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\343"+ + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\3\14\1\344\7\14\1\345\6\14\1\346\23\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\347"+ + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\350\44\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\26\14\1\351\17\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\1\14\1\352\10\14\1\353"+ + "\33\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\21\14\1\354\24\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\6\14\1\355\2\14\1\356\34\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\32\14\1\357"+ + "\13\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\21\14\1\360\24\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\2\14\1\361\43\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\14\14\1\362\1\14\1\363"+ + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\15\14\1\364\1\365\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\21\14\1\366\24\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\10\14\1\367\35\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14"+ + "\1\370\27\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\5\14\1\371\40\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\1\14\1\372\44\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\10\14\1\373\35\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14"+ + "\1\374\35\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\10\14\1\375\35\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\376\42\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\377\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u0100\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u0101\4\14\1\u0102\2\14\1\u0103\33\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\5\14"+ + "\1\u0104\40\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\1\u0105\45\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\3\14\1\u0106\42\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\5\14\1\u0107\1\u0108\1\u0109"+ + "\6\14\1\u010a\27\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\1\14\1\u010b\44\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\12\14\1\u010c\33\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u010d"+ + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\11\14\1\u010e\34\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\1\14\1\u010f\44\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\44\14\1\u0110\1\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\23\14\1\u0111"+ + "\22\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\15\14\1\u0112\30\14\23\0\1\14\15\0\1\u0113\124\0"+ + "\1\251\3\0\2\251\115\0\1\u0114\3\0\2\u0114\104\0"+ + "\1\u0115\12\0\2\u0115\2\0\1\u0115\3\0\46\u0115\40\0"+ + "\1\263\1\264\121\0\1\264\1\0\1\u0116\112\0\1\u0117"+ + "\12\0\2\u0117\2\0\1\u0117\3\0\46\u0117\32\0\1\u0118"+ + "\1\266\1\u0119\2\0\1\112\1\u011a\2\0\2\266\2\u0118"+ + "\2\266\1\u0118\3\0\46\u0118\23\0\1\266\2\0\1\270"+ + "\120\0\5\271\1\u011b\115\271\4\0\1\270\1\272\123\0"+ + "\2\274\3\0\1\u011c\3\0\7\274\3\0\46\274\23\0"+ + "\1\274\6\0\2\275\1\u011d\2\0\1\277\1\u011e\1\u011f"+ + "\1\0\7\275\3\0\46\275\23\0\1\275\6\0\1\u0120"+ + "\12\0\2\u0120\2\0\1\u0120\3\0\46\u0120\32\0\1\u0121"+ + "\5\0\1\300\4\0\2\u0121\2\0\1\u0121\3\0\46\u0121"+ + "\41\0\1\u0122\124\0\2\u0123\1\0\4\u0123\3\0\1\u0123"+ + "\1\0\2\u0123\1\0\1\u0123\6\0\2\u0123\12\0\1\u0123"+ + "\1\0\1\u0123\5\0\2\u0123\41\0\1\123\5\0\1\u0124"+ + "\1\133\2\0\2\u0124\1\137\5\0\1\137\106\0\2\310"+ + "\2\0\2\310\104\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\u0125\42\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\13\14\1\u0126\32\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\7\14\1\u0127\36\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\14\14\1\u0128\31\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\20\14"+ + "\1\u0129\25\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u012a\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\16\14\1\u012b\27\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u012c\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u012d\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\5\14\1\u012e\40\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\16\14\1\u012f\27\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\6\14\1\u0130\2\14"+ + "\1\u0131\34\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u0132\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\1\14\1\u0133\7\14\1\u0134\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\21\14"+ + "\1\u0135\24\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u0136\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u0137\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u0138\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14"+ + "\1\u0139\44\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\16\14\1\u013a\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u013b\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u013c\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14"+ + "\1\u013d\27\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\5\14\1\u013e\40\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u013f\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u0140\27\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\26\14"+ + "\1\u0141\17\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\26\14\1\u0142\17\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\7\14\1\u0143\36\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\6\14\1\u0144\37\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u0145\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\u0146\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u0147\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\1\14\1\u0148\44\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\7\14"+ + "\1\u0149\6\14\1\u014a\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u014b\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\7\14\1\u014c\36\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\u014d\42\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u014e\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\16\14\1\u014f\27\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u0150\42\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\6\14"+ + "\1\u0151\37\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\7\14\1\u0152\36\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\u0153\42\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\5\14\1\u0154\40\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\26\14"+ + "\1\u0155\17\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\14\14\1\u0156\31\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\20\14\1\u0157\25\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u0158\27\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\24\14"+ + "\1\u0159\21\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\u015a\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\10\14\1\u015b\13\14\1\u015c\21\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\4\14"+ + "\1\u015d\41\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\16\14\1\u015e\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\22\14\1\u015f\23\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\20\14\1\u0160\25\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\13\14"+ + "\1\u0161\32\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\1\14\1\u0162\44\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u0163\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\14\14\1\u0164\31\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\27\14"+ + "\1\u0165\3\14\1\u0166\6\14\1\u0167\3\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\7\14\1\u0168\36\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u0169\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\1\u016a\45\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\u016b\33\14\23\0\1\14\6\0"+ + "\2\u0115\4\0\1\263\1\264\1\0\7\u0115\3\0\46\u0115"+ + "\23\0\1\u0115\1\u0116\2\0\13\u0116\1\u016c\104\u0116\6\0"+ + "\2\u0117\1\u016d\2\0\1\u016e\3\0\7\u0117\3\0\46\u0117"+ + "\23\0\1\u0117\6\0\2\u0118\1\u016f\2\0\1\112\1\u0170"+ + "\1\u0171\1\0\7\u0118\3\0\46\u0118\23\0\1\u0118\6\0"+ + "\1\u0172\12\0\2\u0172\2\0\1\u0172\3\0\46\u0172\32\0"+ + "\1\u0173\5\0\1\u011a\4\0\2\u0173\2\0\1\u0173\3\0"+ + "\46\u0173\24\0\4\271\1\270\1\u011b\115\271\6\0\1\u0174"+ + "\12\0\2\u0174\2\0\1\u0174\3\0\46\u0174\32\0\1\u0121"+ + "\5\0\1\u011e\1\u011f\3\0\2\u0121\2\0\1\u0121\3\0"+ + "\46\u0121\40\0\1\u011f\1\0\1\u0175\112\0\1\u0176\1\u0120"+ + "\3\0\1\277\1\300\2\0\2\u0120\2\u0176\2\u0120\1\u0176"+ + "\3\0\46\u0176\23\0\1\u0120\6\0\2\u0121\1\u0177\3\0"+ + "\1\u0178\1\u011f\1\0\7\u0121\3\0\46\u0121\23\0\1\u0121"+ + "\17\0\2\u0179\1\0\4\u0179\3\0\1\u0179\1\0\2\u0179"+ + "\1\0\1\u0179\6\0\2\u0179\12\0\1\u0179\1\0\1\u0179"+ + "\5\0\2\u0179\41\0\1\123\5\0\1\u017a\1\133\2\0"+ + "\2\u017a\1\137\5\0\1\137\75\0\2\14\7\0\7\14"+ + "\3\0\4\14\1\u017b\41\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\1\14\1\u017c\44\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\24\14\1\u017d\21\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\7\14"+ + "\1\u017e\36\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\10\14\1\u017f\35\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\20\14\1\u0180\25\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u0181\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u0182\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u0183\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u0184\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u0185\33\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\30\14"+ + "\1\u0186\10\14\1\u0187\4\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u0188\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\1\14\1\u0189\44\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\5\14"+ + "\1\u018a\40\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\1\14\1\u018b\44\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\12\14\1\u018c\33\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\32\14\1\u018d\13\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\6\14"+ + "\1\u018e\37\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u018f\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\33\14\1\u0190\12\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0191\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14"+ + "\1\u0192\27\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\17\14\1\u0193\26\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\7\14\1\u0194\36\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u0195\42\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14"+ + "\1\u0196\44\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u0197\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\1\14\1\u0198\44\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0199\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\15\14"+ + "\1\u019a\30\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u019b\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\13\14\1\u019c\32\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u019d\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u019e\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\23\14\1\u019f\22\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\2\14\1\u01a0\43\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\23\14\1\u01a1\22\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14"+ + "\1\u01a2\27\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\u01a3\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u01a4\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\37\14\1\u01a5\2\14"+ + "\1\u01a6\3\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u01a7\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\32\14\1\u01a8\13\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u01a9\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14"+ + "\1\u01aa\34\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u01ab\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\u01ac\42\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u01ad\33\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14"+ + "\1\u01ae\44\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\1\u01af\45\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\14\14\1\u01b0\31\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\10\14\1\u01b1\35\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\u01b2"+ + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\12\14\1\u01b3\33\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\2\14\1\u01b4\43\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\30\14\1\u01b5\15\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u01b6"+ + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u01b7\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\10\14\1\u01b8\35\14\23\0\1\14\1\u0116"+ + "\2\0\11\u0116\1\u016c\1\u0116\1\u016c\104\u0116\6\0\1\u01b9"+ + "\12\0\2\u01b9\2\0\1\u01b9\3\0\46\u01b9\32\0\1\u01ba"+ + "\12\0\2\u01ba\2\0\1\u01ba\3\0\46\u01ba\32\0\1\u0173"+ + "\5\0\1\u0170\1\u0171\3\0\2\u0173\2\0\1\u0173\3\0"+ + "\46\u0173\40\0\1\u0171\1\0\1\u01bb\112\0\1\u01bc\1\u0172"+ + "\3\0\1\112\1\u011a\2\0\2\u0172\2\u01bc\2\u0172\1\u01bc"+ + "\3\0\46\u01bc\23\0\1\u0172\6\0\2\u0173\1\u01bd\3\0"+ + "\1\u01be\1\u0171\1\0\7\u0173\3\0\46\u0173\23\0\1\u0173"+ + "\6\0\1\u0176\1\u0174\3\0\1\277\1\u011e\1\u011f\1\0"+ + "\2\u0174\2\u0176\2\u0174\1\u0176\3\0\46\u0176\23\0\1\u0174"+ + "\1\u0175\2\0\13\u0175\1\u01bf\104\u0175\6\0\2\u0176\1\u0177"+ + "\2\0\1\277\1\u011e\1\u011f\1\0\7\u0176\3\0\46\u0176"+ + "\23\0\1\u0176\6\0\1\u01c0\12\0\2\u01c0\2\0\1\u01c0"+ + "\3\0\46\u01c0\40\0\1\u0178\1\u011f\124\0\2\u01c1\1\0"+ + "\4\u01c1\3\0\1\u01c1\1\0\2\u01c1\1\0\1\u01c1\6\0"+ + "\2\u01c1\12\0\1\u01c1\1\0\1\u01c1\5\0\2\u01c1\41\0"+ + "\1\123\5\0\1\u01c2\1\133\2\0\2\u01c2\1\137\5\0"+ + "\1\137\75\0\2\14\7\0\7\14\3\0\10\14\1\u01c3"+ + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u01c4\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\23\14\1\u01c5\22\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\14\14\1\u01c6\31\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u01c7"+ + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\41\14\1\u01c8\4\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\5\14\1\u01c9\40\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\16\14\1\u01ca\27\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\u01cb"+ + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\u01cc\44\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\20\14\1\u01cd\25\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\12\14\1\u01ce\33\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u01cf"+ + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\u01d0\44\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\21\14\1\u01d1\24\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\3\14\1\u01d2\42\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u01d3"+ + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u01d4\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\15\14\1\u01d5\30\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\10\14\1\u01d6\35\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u01d7"+ + "\4\14\1\u01d8\30\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\23\14\1\u01d9\22\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\11\14\1\u01da\34\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\23\14\1\u01db"+ + "\22\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\12\14\1\u01dc\33\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\14\14\1\u01dd\31\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\16\14\1\u01de\27\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u01df"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\5\14\1\u01e0\40\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\u01e1\33\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\23\14\1\u01e2\22\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u01e3"+ + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\12\14\1\u01e4\33\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\20\14\1\u01e5\25\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\7\14\1\u01e6\36\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\u01e7"+ + "\42\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\u01e8\44\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\5\14\1\u01e9\40\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\30\14\1\u01ea\13\14\1\u01eb"+ + "\1\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\11\14\1\u01ec\34\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\26\14\1\u01ed\17\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\5\14\1\u01ee\40\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\6\14\1\u01ef"+ + "\37\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\26\14\1\u01f0\17\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\16\14\1\u01f1\27\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\23\14\1\u01f2\22\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\u01f3"+ + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\10\14\1\u01f4\35\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\26\14\1\u01f5\17\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\1\14\1\u01f6\44\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\12\14\1\u01f7"+ + "\33\14\23\0\1\14\6\0\2\u01b9\3\0\1\u016e\3\0"+ + "\7\u01b9\3\0\46\u01b9\23\0\1\u01b9\6\0\1\u01bc\1\u01ba"+ + "\3\0\1\112\1\u0170\1\u0171\1\0\2\u01ba\2\u01bc\2\u01ba"+ + "\1\u01bc\3\0\46\u01bc\23\0\1\u01ba\1\u01bb\2\0\13\u01bb"+ + "\1\u01f8\104\u01bb\6\0\2\u01bc\1\u01bd\2\0\1\112\1\u0170"+ + "\1\u0171\1\0\7\u01bc\3\0\46\u01bc\23\0\1\u01bc\6\0"+ + "\1\u01f9\12\0\2\u01f9\2\0\1\u01f9\3\0\46\u01f9\40\0"+ + "\1\u01be\1\u0171\105\0\1\u0175\2\0\10\u0175\1\u01fa\1\u01bf"+ + "\1\u0175\1\u01bf\104\u0175\6\0\2\u01c0\4\0\1\u0178\1\u011f"+ + "\1\0\7\u01c0\3\0\46\u01c0\23\0\1\u01c0\17\0\2\u01fb"+ + "\1\0\4\u01fb\3\0\1\u01fb\1\0\2\u01fb\1\0\1\u01fb"+ + "\6\0\2\u01fb\12\0\1\u01fb\1\0\1\u01fb\5\0\2\u01fb"+ + "\41\0\1\123\5\0\1\u01fc\1\133\2\0\2\u01fc\1\137"+ + "\5\0\1\137\75\0\2\14\7\0\7\14\3\0\37\14"+ + "\1\u01fd\6\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u01fe\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\13\14\1\u01ff\32\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\1\14\1\u0200\44\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14"+ + "\1\u0201\27\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u0202\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\14\14\1\u0203\31\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0204\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\u0205\42\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u0206\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\1\14\1\u0207\44\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\43\14\1\u0208\2\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\34\14"+ + "\1\u0209\11\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\5\14\1\u020a\40\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\u020b\42\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u020c\42\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u020d\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u020e\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\10\14\1\u020f\35\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\37\14\1\u0210\6\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14"+ + "\1\u0211\34\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u0212\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\5\14\1\u0213\40\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u0214\42\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\22\14"+ + "\1\u0215\23\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\7\14\1\u0216\36\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\24\14\1\u0217\21\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\1\14\1\u0218\44\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14"+ + "\1\u0219\42\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\u021a\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\6\14\1\u021b\37\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\13\14\1\u021c\32\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u021d\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\2\14\1\u021e\43\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u021f\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u0220\34\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u0221\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u0222\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\14\14\1\u0223\31\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u0224\34\14"+ + "\23\0\1\14\1\u01bb\2\0\10\u01bb\1\u0225\1\u01f8\1\u01bb"+ + "\1\u01f8\104\u01bb\6\0\2\u01f9\4\0\1\u01be\1\u0171\1\0"+ + "\7\u01f9\3\0\46\u01f9\23\0\1\u01f9\17\0\2\u0226\1\0"+ + "\4\u0226\3\0\1\u0226\1\0\2\u0226\1\0\1\u0226\6\0"+ + "\2\u0226\12\0\1\u0226\1\0\1\u0226\5\0\2\u0226\41\0"+ + "\1\123\5\0\1\u0227\1\133\2\0\2\u0227\1\137\5\0"+ + "\1\137\75\0\2\14\7\0\7\14\3\0\7\14\1\u0228"+ + "\36\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u0229\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\3\14\1\u022a\42\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\31\14\1\u022b\14\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\26\14\1\u022c"+ + "\17\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u022d\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\23\14\1\u022e\22\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\5\14\1\u022f\40\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\26\14\1\u0230"+ + "\17\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\3\14\1\u0231\42\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\u0232\33\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\2\14\1\u0233\43\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u0234"+ + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\5\14\1\u0235\40\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\36\14\1\u0236\7\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\10\14\1\u0237\35\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0238"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\7\14\1\u0239\36\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\11\14\1\u023a\34\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\10\14\1\u023b\35\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u023c"+ + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\12\14\1\u023d\33\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\u023e\33\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\23\14\1\u023f\22\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0240"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\3\14\1\u0241"+ + "\3\14\3\0\46\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\23\14\1\u0242\22\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\1\14\1\u0243\44\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\20\14\1\u0244"+ + "\25\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\1\14\1\u0245\44\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\12\14\1\u0246\33\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\31\14\1\u0247\11\14\1\u0248"+ + "\2\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\22\14\1\u0249\23\14\23\0\1\14\17\0\2\u024a\1\0"+ + "\4\u024a\3\0\1\u024a\1\0\2\u024a\1\0\1\u024a\6\0"+ + "\2\u024a\12\0\1\u024a\1\0\1\u024a\5\0\2\u024a\41\0"+ + "\1\123\5\0\1\u024b\1\133\2\0\2\u024b\1\137\5\0"+ + "\1\137\75\0\2\14\7\0\7\14\3\0\24\14\1\u024c"+ + "\21\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\26\14\1\u024d\17\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\7\14\1\u024e\36\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\2\14\1\u024f\43\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0250"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u0251\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\11\14\1\u0252\34\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\26\14\1\u0253\17\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\7\14\1\u0254"+ + "\36\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\2\14\1\u0255\43\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\7\14\1\u0256\36\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\11\14\1\u0257\34\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\14\14\1\u0258"+ + "\31\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\24\14\1\u0259\21\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\2\14\1\u025a\43\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\14\14\1\u025b\31\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u025c"+ + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\3\14\1\u025d\42\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\2\14\1\u025e\43\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\14\14\1\u025f\31\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\12\14\1\u0260"+ + "\33\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\12\14\1\u0261\33\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\7\14\1\u0262\36\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\11\14\1\u0263\34\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u0264"+ + "\27\14\23\0\1\14\17\0\2\u0265\1\0\4\u0265\3\0"+ + "\1\u0265\1\0\2\u0265\1\0\1\u0265\6\0\2\u0265\12\0"+ + "\1\u0265\1\0\1\u0265\5\0\2\u0265\41\0\1\123\5\0"+ + "\1\u0266\1\133\2\0\2\u0266\1\137\5\0\1\137\75\0"+ + "\2\14\7\0\7\14\3\0\12\14\1\u0267\33\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u0268"+ + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\11\14\1\u0269\34\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\20\14\1\u026a\25\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\20\14\1\u026b\25\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\15\14\1\u026c"+ + "\30\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\3\14\1\u026d\42\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\6\14\1\u026e\37\14\23\0\1\14\6\0"+ + "\2\14\7\0\7\14\3\0\12\14\1\u026f\33\14\23\0"+ + "\1\14\6\0\2\14\7\0\7\14\3\0\37\14\1\u0270"+ + "\6\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0"+ + "\44\14\1\u0271\1\14\23\0\1\14\6\0\2\14\7\0"+ + "\7\14\3\0\1\u0272\45\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\11\14\1\u0273\34\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\10\14\1\u0274\35\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14"+ + "\1\u0275\35\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\7\14\1\u0276\36\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\3\14\1\u0277\42\14\23\0\1\14"+ + "\11\0\1\123\5\0\1\u0278\1\133\2\0\2\u0278\1\137"+ + "\5\0\1\137\75\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u0279\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\10\14\1\u027a\35\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\35\14\1\u027b\10\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\14\14\1\u027c\31\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u027d\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\7\14\1\u027e\36\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\13\14\1\u027f\32\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u0280\27\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\23\14"+ + "\1\u0281\22\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\26\14\1\u0282\17\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\21\14\1\u0283\24\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\22\14\1\u0284\23\14"+ + "\23\0\1\14\11\0\1\123\5\0\1\u0285\1\133\2\0"+ + "\2\u0285\1\137\5\0\1\137\75\0\2\14\7\0\7\14"+ + "\3\0\40\14\1\u0286\5\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\14\14\1\u0287\31\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\13\14\1\u0288\32\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u0289\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\44\14\1\u028a\1\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\24\14\1\u028b\21\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\23\14\1\u028c\22\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14"+ + "\1\u028d\43\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u028e\42\14\23\0\1\14\11\0\1\123"+ + "\5\0\1\u028f\1\133\2\0\2\u028f\1\137\5\0\1\137"+ + "\75\0\2\14\7\0\7\14\3\0\16\14\1\u0290\27\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\6\14"+ + "\1\u0291\37\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\3\14\1\u0292\42\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\14\14\1\u0293\31\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\13\14\1\u0294\32\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u0295\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\6\14\1\u0296\37\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\21\14\1\u0297\24\14\23\0\1\14"+ + "\11\0\1\123\5\0\1\u0298\1\133\2\0\2\u0298\1\137"+ + "\5\0\1\137\75\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u0299\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\16\14\1\u029a\27\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\23\14\1\u029b\22\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u029c\43\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\44\14"+ + "\1\u029d\1\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\44\14\1\u029e\1\14\23\0\1\14\11\0\1\123"+ + "\5\0\1\u029f\1\133\2\0\2\u029f\1\137\5\0\1\137"+ + "\75\0\2\14\7\0\7\14\3\0\21\14\1\u02a0\24\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14"+ + "\1\u02a1\33\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\40\14\1\u02a2\5\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\13\14\1\u02a3\32\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\13\14\1\u02a4\32\14"+ + "\23\0\1\14\11\0\1\123\5\0\1\u02a5\1\133\2\0"+ + "\2\u02a5\1\137\5\0\1\137\75\0\2\14\7\0\7\14"+ + "\3\0\11\14\1\u02a6\34\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\16\14\1\u02a7\27\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\23\14\1\u02a8\22\14"+ + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\23\14"+ + "\1\u02a9\22\14\23\0\1\14\6\0\2\14\7\0\7\14"+ + "\3\0\22\14\1\u02aa\23\14\23\0\1\14\6\0\2\14"+ + "\7\0\7\14\3\0\12\14\1\u02ab\33\14\23\0\1\14"+ + "\6\0\2\14\7\0\7\14\3\0\21\14\1\u02ac\24\14"+ + "\23\0\1\14"; - private static int[] zzUnpackRowMap() { - int[] result = new int[676]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[44488]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; + private static final int ZZ_NO_MATCH = 1; + private static final int ZZ_PUSHBACK_2BIG = 2; - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + /* error messages for the codes above */ + private static final String ZZ_ERROR_MSG[] = { + "Unkown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\5\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11"+ + "\26\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11"+ + "\3\1\1\11\2\1\1\11\1\1\1\11\2\1\1\0"+ + "\3\11\2\0\1\1\1\0\1\1\1\11\1\1\1\11"+ + "\3\1\1\0\2\1\1\0\2\11\74\1\12\11\2\1"+ + "\7\11\6\0\1\1\1\11\2\0\1\11\3\0\1\11"+ + "\1\0\1\11\1\1\2\11\4\1\1\0\111\1\2\11"+ + "\7\0\1\11\5\0\1\11\112\1\1\0\1\11\12\0"+ + "\100\1\10\0\67\1\2\0\153\1\1\11\107\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[684]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - /** - * The transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\6" - + "\1\15\1\16\1\17\1\20\1\11\1\21\1\22\1\23" - + "\1\24\2\14\2\24\1\14\1\25\1\6\1\26\1\27" - + "\1\30\1\31\1\32\1\14\1\33\1\34\1\35\1\36" - + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\14" - + "\1\46\1\14\1\47\1\50\1\14\1\51\2\14\1\52" - + "\12\14\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\0\1\11\1\0\1\76" - + "\1\77\1\100\13\76\1\101\10\76\1\102\73\76\1\103" - + "\1\77\1\100\24\103\1\102\1\101\72\103\1\6\1\104" - + "\1\105\1\106\2\6\1\107\4\6\1\110\1\111\4\6" - + "\2\107\2\6\1\107\3\6\46\107\21\6\1\0\1\106" - + "\1\0\1\112\1\104\1\105\7\112\1\113\105\112\130\0" - + "\1\10\123\0\1\11\10\0\1\11\104\0\1\11\5\0" - + "\1\114\1\115\7\0\1\116\122\0\1\117\113\0\2\14" - + "\7\0\7\14\3\0\46\14\23\0\1\14\10\0\1\120" - + "\123\0\1\121\1\122\4\0\2\123\2\0\2\123\104\0" - + "\1\124\3\0\1\125\2\0\1\126\3\0\2\124\2\0" - + "\1\124\3\0\46\124\37\0\1\127\1\0\1\130\122\0" - + "\1\131\116\0\1\123\5\0\1\132\1\133\1\134\1\0" - + "\1\135\1\136\1\137\5\0\1\137\22\0\1\134\55\0" - + "\1\123\5\0\2\24\2\0\2\24\1\137\5\0\1\137" - + "\104\0\1\140\10\0\1\141\102\0\2\14\7\0\7\14" - + "\3\0\1\14\1\142\44\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\143\1\144\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\145" - + "\12\14\1\146\5\14\1\147\1\150\20\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\6\14\1\151\37\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14" - + "\1\152\3\14\1\153\6\14\1\154\1\14\1\155\25\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14" - + "\1\156\6\14\1\157\1\14\1\160\3\14\1\161\26\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\162\22\14\1\163\21\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\164\1\165\7\14\1\166" - + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\1\14\1\167\1\170\1\171\3\14\1\172\10\14\1\173" - + "\1\14\1\174\23\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\175\1\14\1\176\4\14\1\177" - + "\5\14\1\200\22\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\201\1\14\1\202\35\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\203" - + "\4\14\1\204\3\14\1\205\6\14\1\206\23\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\207" - + "\3\14\1\210\2\14\1\211\1\212\32\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\2\14\1\213\4\14" - + "\1\214\36\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\215\5\14\1\216\25\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\1\14\1\217\1\14" - + "\1\220\7\14\1\221\2\14\1\222\27\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\1\223\45\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\224" - + "\3\14\1\225\36\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\2\14\1\226\4\14\1\227\36\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\230" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\231\7\14\1\232\32\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\10\14\1\233\35\14\23\0" - + "\1\14\15\0\1\234\122\0\1\235\74\0\1\236\25\0" - + "\1\237\75\0\1\240\24\0\1\241\76\0\1\242\23\0" - + "\1\243\122\0\1\244\105\0\1\76\2\0\13\76\1\0" - + "\10\76\1\0\73\76\2\0\1\100\120\0\1\245\2\0" - + "\13\245\1\246\1\247\3\245\1\247\1\250\2\245\1\251" - + "\1\252\1\253\1\254\6\245\1\255\1\256\3\245\1\257" - + "\51\245\3\0\1\103\2\0\24\103\2\0\72\103\2\0" - + "\1\105\123\0\1\106\10\0\1\106\104\0\1\106\7\0" - + "\2\260\1\261\3\0\1\262\1\263\1\0\7\260\3\0" - + "\46\260\23\0\1\260\3\0\1\106\2\0\1\260\5\0" - + "\1\111\4\0\2\260\2\0\1\260\3\0\46\260\22\0" - + "\1\106\5\0\1\264\1\0\1\265\12\0\2\265\2\0" - + "\1\265\3\0\46\265\24\0\1\114\1\266\1\267\120\114" - + "\5\270\1\271\115\270\11\0\1\272\117\0\1\273\12\0" - + "\2\273\2\0\1\273\3\0\46\273\43\0\2\123\2\0" - + "\2\123\1\137\5\0\1\137\75\0\1\274\1\124\1\275" - + "\2\0\1\276\1\277\2\0\2\124\2\274\2\124\1\274" - + "\3\0\46\274\23\0\1\124\15\0\1\300\120\0\1\301" - + "\1\0\1\302\122\0\1\303\116\0\1\123\5\0\1\132" - + "\1\133\2\0\1\135\1\136\1\137\5\0\1\137\100\0" - + "\1\123\5\0\2\133\2\0\2\133\1\137\5\0\1\137" - + "\106\0\1\304\1\305\1\0\4\305\3\0\1\305\1\0" - + "\2\305\1\0\1\305\6\0\2\305\12\0\1\305\1\0" - + "\1\305\5\0\2\305\41\0\1\123\5\0\1\136\1\133" - + "\2\0\2\136\1\137\5\0\1\137\100\0\1\123\5\0" - + "\1\306\1\133\2\0\2\306\1\137\5\0\1\137\106\0" - + "\2\307\2\0\2\307\1\0\1\310\65\0\1\310\14\0" - + "\2\14\7\0\7\14\3\0\2\14\1\311\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\312" - + "\11\14\1\313\22\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\10\14\1\314\35\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\5\14\1\315\40\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\6\14\1\316" - + "\37\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\317\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\320\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\6\14\1\321\2\14\1\322" - + "\4\14\1\323\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\10\14\1\324\35\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\325\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\326" - + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\327\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\330\3\14\1\331\36\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\1\332\20\14" - + "\1\333\24\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\334\33\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\14\14\1\335\31\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\2\14\1\336\43\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\17\14" - + "\1\337\5\14\1\340\20\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\23\14\1\341\22\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\16\14\1\342\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14" - + "\1\343\7\14\1\344\6\14\1\345\23\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\16\14\1\346\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\347\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\26\14\1\350\17\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\1\14\1\351\10\14\1\352\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\21\14" - + "\1\353\24\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\6\14\1\354\2\14\1\355\34\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\32\14\1\356\13\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\21\14" - + "\1\357\24\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\360\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\14\14\1\361\1\14\1\362\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\15\14" - + "\1\363\1\364\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\21\14\1\365\24\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\10\14\1\366\35\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\367" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\1\14\1\370\44\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\10\14\1\371\35\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\10\14\1\372\35\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\373" - + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\374\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\375\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\12\14\1\376\33\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\377" - + "\4\14\1\u0100\2\14\1\u0101\33\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\5\14\1\u0102\40\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\1\u0103\45\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14" - + "\1\u0104\42\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u0105\1\u0106\1\u0107\6\14\1\u0108\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u0109\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u010a\33\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u010b\34\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u010c\34\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u010d\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\44\14\1\u010e\1\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u010f\22\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\15\14\1\u0110\30\14" - + "\23\0\1\14\15\0\1\u0111\124\0\1\250\3\0\2\250" - + "\115\0\1\u0112\3\0\2\u0112\104\0\1\u0113\12\0\2\u0113" - + "\2\0\1\u0113\3\0\46\u0113\40\0\1\262\1\263\121\0" - + "\1\263\1\0\1\u0114\112\0\1\u0115\12\0\2\u0115\2\0" - + "\1\u0115\3\0\46\u0115\32\0\1\u0116\1\265\1\u0117\2\0" - + "\1\112\1\u0118\2\0\2\265\2\u0116\2\265\1\u0116\3\0" - + "\46\u0116\23\0\1\265\2\0\1\267\120\0\5\270\1\u0119" - + "\115\270\4\0\1\267\1\271\123\0\2\273\3\0\1\u011a" - + "\3\0\7\273\3\0\46\273\23\0\1\273\6\0\2\274" - + "\1\u011b\2\0\1\276\1\u011c\1\u011d\1\0\7\274\3\0" - + "\46\274\23\0\1\274\6\0\1\u011e\12\0\2\u011e\2\0" - + "\1\u011e\3\0\46\u011e\32\0\1\u011f\5\0\1\277\4\0" - + "\2\u011f\2\0\1\u011f\3\0\46\u011f\41\0\1\u0120\124\0" - + "\2\u0121\1\0\4\u0121\3\0\1\u0121\1\0\2\u0121\1\0" - + "\1\u0121\6\0\2\u0121\12\0\1\u0121\1\0\1\u0121\5\0" - + "\2\u0121\41\0\1\123\5\0\1\u0122\1\133\2\0\2\u0122" - + "\1\137\5\0\1\137\106\0\2\307\2\0\2\307\104\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0123\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u0124" - + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\7\14\1\u0125\36\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\14\14\1\u0126\31\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\20\14\1\u0127\25\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0128" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u0129\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\2\14\1\u012a\43\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u012b\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\5\14\1\u012c" - + "\40\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u012d\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\u012e\2\14\1\u012f\34\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\6\14\1\u0130" - + "\37\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\1\14\1\u0131\7\14\1\u0132\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\21\14\1\u0133\24\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\6\14\1\u0134" - + "\37\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0135\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u0136\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u0137\44\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u0138" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u0139\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\2\14\1\u013a\43\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u013b\27\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\5\14\1\u013c" - + "\40\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u013d\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\16\14\1\u013e\27\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\26\14\1\u013f\17\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\26\14\1\u0140" - + "\17\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\7\14\1\u0141\36\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\u0142\37\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u0143\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u0144" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0145\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\1\14\1\u0146\44\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\7\14\1\u0147\6\14\1\u0148" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0149\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u014a\36\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u014b\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u014c" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u014d\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u014e\42\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\6\14\1\u014f\37\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\u0150" - + "\42\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\5\14\1\u0151\40\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\26\14\1\u0152\17\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\14\14\1\u0153\31\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\20\14\1\u0154" - + "\25\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u0155\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\24\14\1\u0156\21\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u0157\34\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u0158" - + "\13\14\1\u0159\21\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\4\14\1\u015a\41\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u015b\27\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\22\14\1\u015c" - + "\23\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\20\14\1\u015d\25\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\13\14\1\u015e\32\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u015f\44\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0160" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\14\14\1\u0161\31\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\27\14\1\u0162\3\14\1\u0163\6\14\1\u0164" - + "\3\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\7\14\1\u0165\36\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u0166\33\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\1\u0167\45\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u0168\33\14" - + "\23\0\1\14\6\0\2\u0113\4\0\1\262\1\263\1\0" - + "\7\u0113\3\0\46\u0113\23\0\1\u0113\1\u0114\2\0\13\u0114" - + "\1\u0169\104\u0114\6\0\2\u0115\1\u016a\2\0\1\u016b\3\0" - + "\7\u0115\3\0\46\u0115\23\0\1\u0115\6\0\2\u0116\1\u016c" - + "\2\0\1\112\1\u016d\1\u016e\1\0\7\u0116\3\0\46\u0116" - + "\23\0\1\u0116\6\0\1\u016f\12\0\2\u016f\2\0\1\u016f" - + "\3\0\46\u016f\32\0\1\u0170\5\0\1\u0118\4\0\2\u0170" - + "\2\0\1\u0170\3\0\46\u0170\24\0\4\270\1\267\1\u0119" - + "\115\270\6\0\1\u0171\12\0\2\u0171\2\0\1\u0171\3\0" - + "\46\u0171\32\0\1\u011f\5\0\1\u011c\1\u011d\3\0\2\u011f" - + "\2\0\1\u011f\3\0\46\u011f\40\0\1\u011d\1\0\1\u0172" - + "\112\0\1\u0173\1\u011e\3\0\1\276\1\277\2\0\2\u011e" - + "\2\u0173\2\u011e\1\u0173\3\0\46\u0173\23\0\1\u011e\6\0" - + "\2\u011f\1\u0174\3\0\1\u0175\1\u011d\1\0\7\u011f\3\0" - + "\46\u011f\23\0\1\u011f\17\0\2\u0176\1\0\4\u0176\3\0" - + "\1\u0176\1\0\2\u0176\1\0\1\u0176\6\0\2\u0176\12\0" - + "\1\u0176\1\0\1\u0176\5\0\2\u0176\41\0\1\123\5\0" - + "\1\u0177\1\133\2\0\2\u0177\1\137\5\0\1\137\75\0" - + "\2\14\7\0\7\14\3\0\4\14\1\u0178\41\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\u0179" - + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\24\14\1\u017a\21\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u017b\36\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\10\14\1\u017c\35\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\20\14\1\u017d" - + "\25\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u017e\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u017f\33\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\6\14\1\u0180\37\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u0181" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u0182\33\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\30\14\1\u0183\10\14\1\u0184\4\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u0185" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\1\14\1\u0186\44\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\5\14\1\u0187\40\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u0188\44\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\12\14\1\u0189" - + "\33\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\32\14\1\u018a\13\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\u018b\37\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u018c\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\33\14\1\u018d" - + "\12\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u018e\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\16\14\1\u018f\27\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\17\14\1\u0190\26\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\7\14\1\u0191" - + "\36\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\u0192\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\1\14\1\u0193\44\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0194\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\1\14\1\u0195" - + "\44\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0196\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\15\14\1\u0197\30\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0198\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u0199" - + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u019a\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u019b\33\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\23\14\1\u019c\22\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u019d" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u019e\27\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u019f\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u01a0\34\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\37\14\1\u01a1" - + "\2\14\1\u01a2\3\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\2\14\1\u01a3\43\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\32\14\1\u01a4\13\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u01a5" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u01a6\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u01a7\42\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u01a8\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\12\14\1\u01a9" - + "\33\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\1\14\1\u01aa\44\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\1\u01ab\45\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\14\14\1\u01ac\31\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\10\14\1\u01ad\35\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u01ae\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u01af\33\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01b0\43\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\30\14\1\u01b1\15\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01b2\35\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01b3\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\10\14\1\u01b4\35\14\23\0\1\14" - + "\1\u0114\2\0\11\u0114\1\u0169\1\u0114\1\u0169\104\u0114\6\0" - + "\1\u01b5\12\0\2\u01b5\2\0\1\u01b5\3\0\46\u01b5\32\0" - + "\1\u01b6\12\0\2\u01b6\2\0\1\u01b6\3\0\46\u01b6\32\0" - + "\1\u0170\5\0\1\u016d\1\u016e\3\0\2\u0170\2\0\1\u0170" - + "\3\0\46\u0170\40\0\1\u016e\1\0\1\u01b7\112\0\1\u01b8" - + "\1\u016f\3\0\1\112\1\u0118\2\0\2\u016f\2\u01b8\2\u016f" - + "\1\u01b8\3\0\46\u01b8\23\0\1\u016f\6\0\2\u0170\1\u01b9" - + "\3\0\1\u01ba\1\u016e\1\0\7\u0170\3\0\46\u0170\23\0" - + "\1\u0170\6\0\1\u0173\1\u0171\3\0\1\276\1\u011c\1\u011d" - + "\1\0\2\u0171\2\u0173\2\u0171\1\u0173\3\0\46\u0173\23\0" - + "\1\u0171\1\u0172\2\0\13\u0172\1\u01bb\104\u0172\6\0\2\u0173" - + "\1\u0174\2\0\1\276\1\u011c\1\u011d\1\0\7\u0173\3\0" - + "\46\u0173\23\0\1\u0173\6\0\1\u01bc\12\0\2\u01bc\2\0" - + "\1\u01bc\3\0\46\u01bc\40\0\1\u0175\1\u011d\124\0\2\u01bd" - + "\1\0\4\u01bd\3\0\1\u01bd\1\0\2\u01bd\1\0\1\u01bd" - + "\6\0\2\u01bd\12\0\1\u01bd\1\0\1\u01bd\5\0\2\u01bd" - + "\41\0\1\123\5\0\1\u01be\1\133\2\0\2\u01be\1\137" - + "\5\0\1\137\75\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01bf\35\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01c0\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01c1\22\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\14\14\1\u01c2\31\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01c3\35\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\41\14\1\u01c4\4\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01c5\40\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u01c6\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u01c7\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u01c8\44\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\20\14\1\u01c9\25\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u01ca\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01cb\35\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u01cc\44\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\21\14\1\u01cd\24\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u01ce\42\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u01cf\34\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01d0\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\15\14\1\u01d1\30\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\10\14\1\u01d2\35\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01d3\4\14\1\u01d4\30\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01d5\22\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u01d6\34\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\23\14" - + "\1\u01d7\22\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u01d8\33\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\14\14\1\u01d9\31\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u01da\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u01db\43\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u01dc\40\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\12\14\1\u01dd\33\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\16\14\1\u01de\27\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14" - + "\1\u01df\33\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\20\14\1\u01e0\25\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u01e1\36\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u01e2\42\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u01e3\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u01e4\40\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\30\14\1\u01e5\13\14\1\u01e6\1\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u01e7\34\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\26\14\1\u01e8\17\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01e9\40\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\6\14\1\u01ea\37\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\26\14" - + "\1\u01eb\17\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\16\14\1\u01ec\27\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01ed\22\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\1\14\1\u01ee\44\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\10\14" - + "\1\u01ef\35\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\26\14\1\u01f0\17\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01f1\44\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u01f2\33\14" - + "\23\0\1\14\6\0\2\u01b5\3\0\1\u016b\3\0\7\u01b5" - + "\3\0\46\u01b5\23\0\1\u01b5\6\0\1\u01b8\1\u01b6\3\0" - + "\1\112\1\u016d\1\u016e\1\0\2\u01b6\2\u01b8\2\u01b6\1\u01b8" - + "\3\0\46\u01b8\23\0\1\u01b6\1\u01b7\2\0\13\u01b7\1\u01f3" - + "\104\u01b7\6\0\2\u01b8\1\u01b9\2\0\1\112\1\u016d\1\u016e" - + "\1\0\7\u01b8\3\0\46\u01b8\23\0\1\u01b8\6\0\1\u01f4" - + "\12\0\2\u01f4\2\0\1\u01f4\3\0\46\u01f4\40\0\1\u01ba" - + "\1\u016e\105\0\1\u0172\2\0\10\u0172\1\u01f5\1\u01bb\1\u0172" - + "\1\u01bb\104\u0172\6\0\2\u01bc\4\0\1\u0175\1\u011d\1\0" - + "\7\u01bc\3\0\46\u01bc\23\0\1\u01bc\17\0\2\u01f6\1\0" - + "\4\u01f6\3\0\1\u01f6\1\0\2\u01f6\1\0\1\u01f6\6\0" - + "\2\u01f6\12\0\1\u01f6\1\0\1\u01f6\5\0\2\u01f6\41\0" - + "\1\123\5\0\1\u01f7\1\133\2\0\2\u01f7\1\137\5\0" - + "\1\137\75\0\2\14\7\0\7\14\3\0\37\14\1\u01f8" - + "\6\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\6\14\1\u01f9\37\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\13\14\1\u01fa\32\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u01fb\44\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u01fc" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\u01fd\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\14\14\1\u01fe\31\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u01ff\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\3\14\1\u0200" - + "\42\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\u0201\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\1\14\1\u0202\44\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\43\14\1\u0203\2\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\34\14\1\u0204" - + "\11\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\5\14\1\u0205\40\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u0206\42\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0207\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0208" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0209\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\10\14\1\u020a\35\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\37\14\1\u020b\6\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u020c" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\3\14\1\u020d\42\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\5\14\1\u020e\40\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\22\14\1\u020f\23\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\7\14\1\u0210" - + "\36\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\24\14\1\u0211\21\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\1\14\1\u0212\44\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0213\42\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\11\14\1\u0214" - + "\34\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\6\14\1\u0215\37\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\13\14\1\u0216\32\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u0217\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0218" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u0219\34\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u021a\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u021b\43\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\6\14\1\u021c" - + "\37\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\14\14\1\u021d\31\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u021e\34\14\23\0\1\14\1\u01b7" - + "\2\0\10\u01b7\1\u021f\1\u01f3\1\u01b7\1\u01f3\104\u01b7\6\0" - + "\2\u01f4\4\0\1\u01ba\1\u016e\1\0\7\u01f4\3\0\46\u01f4" - + "\23\0\1\u01f4\17\0\2\u0220\1\0\4\u0220\3\0\1\u0220" - + "\1\0\2\u0220\1\0\1\u0220\6\0\2\u0220\12\0\1\u0220" - + "\1\0\1\u0220\5\0\2\u0220\41\0\1\123\5\0\1\u0221" - + "\1\133\2\0\2\u0221\1\137\5\0\1\137\75\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u0222\36\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0223\43\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\3\14" - + "\1\u0224\42\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\31\14\1\u0225\14\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u0226\17\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0227\43\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\23\14" - + "\1\u0228\22\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u0229\40\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u022a\17\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\3\14\1\u022b\42\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14" - + "\1\u022c\33\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u022d\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u022e\27\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\5\14\1\u022f\40\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\36\14" - + "\1\u0230\7\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u0231\35\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u0232\43\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\7\14\1\u0233\36\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u0234\34\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u0235\35\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\12\14\1\u0236\33\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u0237\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\23\14" - + "\1\u0238\22\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u0239\43\14\23\0\1\14\6\0\2\14" - + "\7\0\3\14\1\u023a\3\14\3\0\46\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\23\14\1\u023b\22\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\1\14" - + "\1\u023c\44\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\20\14\1\u023d\25\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u023e\44\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u023f\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\31\14" - + "\1\u0240\11\14\1\u0241\2\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\22\14\1\u0242\23\14\23\0\1\14" - + "\17\0\2\u0243\1\0\4\u0243\3\0\1\u0243\1\0\2\u0243" - + "\1\0\1\u0243\6\0\2\u0243\12\0\1\u0243\1\0\1\u0243" - + "\5\0\2\u0243\41\0\1\123\5\0\1\u0244\1\133\2\0" - + "\2\u0244\1\137\5\0\1\137\75\0\2\14\7\0\7\14" - + "\3\0\24\14\1\u0245\21\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u0246\17\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\7\14\1\u0247\36\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0248\43\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u0249\43\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u024a\43\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u024b\34\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\26\14" - + "\1\u024c\17\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\7\14\1\u024d\36\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u024e\43\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\7\14\1\u024f\36\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u0250\34\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\14\14\1\u0251\31\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\24\14\1\u0252\21\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\2\14\1\u0253\43\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0254\43\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\3\14\1\u0255\42\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u0256\43\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\14\14\1\u0257\31\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\12\14" - + "\1\u0258\33\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u0259\33\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u025a\36\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\11\14\1\u025b\34\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\16\14" - + "\1\u025c\27\14\23\0\1\14\17\0\2\u025d\1\0\4\u025d" - + "\3\0\1\u025d\1\0\2\u025d\1\0\1\u025d\6\0\2\u025d" - + "\12\0\1\u025d\1\0\1\u025d\5\0\2\u025d\41\0\1\123" - + "\5\0\1\u025e\1\133\2\0\2\u025e\1\137\5\0\1\137" - + "\75\0\2\14\7\0\7\14\3\0\12\14\1\u025f\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\13\14" - + "\1\u0260\32\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\11\14\1\u0261\34\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\20\14\1\u0262\25\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\20\14\1\u0263\25\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\15\14" - + "\1\u0264\30\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\3\14\1\u0265\42\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u0266\37\14\23\0\1\14" - + "\6\0\2\14\7\0\7\14\3\0\12\14\1\u0267\33\14" - + "\23\0\1\14\6\0\2\14\7\0\7\14\3\0\37\14" - + "\1\u0268\6\14\23\0\1\14\6\0\2\14\7\0\7\14" - + "\3\0\44\14\1\u0269\1\14\23\0\1\14\6\0\2\14" - + "\7\0\7\14\3\0\1\u026a\45\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u026b\34\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\10\14\1\u026c" - + "\35\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\10\14\1\u026d\35\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u026e\36\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u026f\42\14\23\0" - + "\1\14\11\0\1\123\5\0\1\u0270\1\133\2\0\2\u0270" - + "\1\137\5\0\1\137\75\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0271\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\10\14\1\u0272\35\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\35\14\1\u0273\10\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\14\14\1\u0274" - + "\31\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0275\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u0276\36\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\13\14\1\u0277\32\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\16\14\1\u0278" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\23\14\1\u0279\22\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\26\14\1\u027a\17\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\21\14\1\u027b\24\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\22\14\1\u027c" - + "\23\14\23\0\1\14\11\0\1\123\5\0\1\u027d\1\133" - + "\2\0\2\u027d\1\137\5\0\1\137\75\0\2\14\7\0" - + "\7\14\3\0\40\14\1\u027e\5\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\14\14\1\u027f\31\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u0280" - + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0281\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\44\14\1\u0282\1\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\24\14\1\u0283\21\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\23\14\1\u0284" - + "\22\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\2\14\1\u0285\43\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u0286\42\14\23\0\1\14\11\0" - + "\1\123\5\0\1\u0287\1\133\2\0\2\u0287\1\137\5\0" - + "\1\137\75\0\2\14\7\0\7\14\3\0\16\14\1\u0288" - + "\27\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\6\14\1\u0289\37\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u028a\42\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\14\14\1\u028b\31\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u028c" - + "\32\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u028d\33\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\6\14\1\u028e\37\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\21\14\1\u028f\24\14\23\0" - + "\1\14\11\0\1\123\5\0\1\u0290\1\133\2\0\2\u0290" - + "\1\137\5\0\1\137\75\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u0291\33\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\16\14\1\u0292\27\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\23\14\1\u0293\22\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\2\14\1\u0294" - + "\43\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\44\14\1\u0295\1\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\44\14\1\u0296\1\14\23\0\1\14\11\0" - + "\1\123\5\0\1\u0297\1\133\2\0\2\u0297\1\137\5\0" - + "\1\137\75\0\2\14\7\0\7\14\3\0\21\14\1\u0298" - + "\24\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u0299\33\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\40\14\1\u029a\5\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\13\14\1\u029b\32\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\13\14\1\u029c" - + "\32\14\23\0\1\14\11\0\1\123\5\0\1\u029d\1\133" - + "\2\0\2\u029d\1\137\5\0\1\137\75\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u029e\34\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u029f\27\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\23\14\1\u02a0" - + "\22\14\23\0\1\14\6\0\2\14\7\0\7\14\3\0" - + "\23\14\1\u02a1\22\14\23\0\1\14\6\0\2\14\7\0" - + "\7\14\3\0\22\14\1\u02a2\23\14\23\0\1\14\6\0" - + "\2\14\7\0\7\14\3\0\12\14\1\u02a3\33\14\23\0" - + "\1\14\6\0\2\14\7\0\7\14\3\0\21\14\1\u02a4" - + "\24\14\23\0\1\14"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[43907]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - int j = offset; /* index in unpacked array */ + /** the textposition at the last accepting state */ + private int zzMarkedPos; - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** the current text position in the buffer */ + private int zzCurrentPos; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** the number of characters up to the start of the matched text */ + private int yychar; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\5\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11" - + "\26\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11" - + "\3\1\1\11\2\1\1\11\1\1\1\11\2\1\1\0" - + "\3\11\2\0\1\1\1\0\1\1\1\11\1\1\1\11" - + "\3\1\1\0\2\1\1\0\2\11\73\1\12\11\2\1" - + "\7\11\6\0\1\1\1\11\2\0\1\11\3\0\1\11" - + "\1\0\1\11\1\1\2\11\4\1\1\0\110\1\2\11" - + "\7\0\1\11\5\0\1\11\111\1\1\0\1\11\12\0" - + "\77\1\10\0\66\1\2\0\150\1\1\11\107\1"; + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - private static int[] zzUnpackAttribute() { - int[] result = new int[676]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - private static int zzUnpackAttribute(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - int j = offset; /* index in unpacked array */ + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /* user code: */ - /** - * the input device - */ - private java.io.Reader zzReader; - - /** - * the current state of the DFA - */ - private int zzState; - - /** - * the current lexical state - */ - private int zzLexicalState = YYINITIAL; - - /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string - */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - - /** - * the textposition at the last accepting state - */ - private int zzMarkedPos; - - /** - * the current text position in the buffer - */ - private int zzCurrentPos; - - /** - * startRead marks the beginning of the yytext() string in the buffer - */ - private int zzStartRead; - - /** - * endRead marks the last character in the buffer, that has been read from - * input - */ - private int zzEndRead; - - /** - * number of newlines encountered up to the start of the matched text - */ - private int yyline; - - /** - * the number of characters up to the start of the matched text - */ - private int yychar; - - /** - * the number of characters from the last newline up to the start of the - * matched text - */ - private int yycolumn; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** - * zzAtEOF == true <=> the scanner is at the EOF - */ - private boolean zzAtEOF; - - /** - * denotes if the user-EOF-code has already been executed - */ - private boolean zzEOFDone; - - /* user code: */ StringBuffer string = new StringBuffer(); - private static String xmlTagName = ""; + private static String xmlTagName=""; public int yychar() { return yychar; } - private final Stack pushedBack = new Stack<>(); + private Stack pushedBack=new Stack(); public int yyline() { - return yyline + 1; + return yyline+1; } - private final List listeners = new ArrayList<>(); + private List listeners=new ArrayList<>(); - public void addListener(LexListener listener) { + public void addListener(LexListener listener){ listeners.add(listener); } - public void removeListener(LexListener listener) { + public void removeListener(LexListener listener){ listeners.remove(listener); } - public void informListenersLex(ParsedSymbol s) { - for (LexListener l : listeners) { + public void informListenersLex(ParsedSymbol s){ + for(LexListener l:listeners){ l.onLex(s); } } - public void informListenersPushBack(ParsedSymbol s) { - for (LexListener l : listeners) { + public void informListenersPushBack(ParsedSymbol s){ + for(LexListener l:listeners){ l.onPushBack(s); } } @@ -1224,1246 +1192,1069 @@ public final class ActionScriptLexer { informListenersPushBack(symb); } ParsedSymbol last; - - public ParsedSymbol lex() throws java.io.IOException, ParseException { - ParsedSymbol ret = null; - if (!pushedBack.isEmpty()) { + public ParsedSymbol lex() throws java.io.IOException, ParseException{ + ParsedSymbol ret=null; + if(!pushedBack.isEmpty()){ ret = last = pushedBack.pop(); - } else { + }else{ ret = last = yylex(); } informListenersLex(ret); return ret; } - /** - * Creates a new scanner There is also a java.io.InputStream version of this - * constructor. - * - * @param in the java.io.Reader to read input from. - */ - public ActionScriptLexer(java.io.Reader in) { - this.zzReader = in; + + + /** + * Creates a new scanner + * There is also a java.io.InputStream version of this constructor. + * + * @param in the java.io.Reader to read input from. + */ + public ActionScriptLexer(java.io.Reader in) { + this.zzReader = in; + } + + /** + * Creates a new scanner. + * There is also java.io.Reader version of this constructor. + * + * @param in the java.io.Inputstream to read input from. + */ + public ActionScriptLexer(java.io.InputStream in) { + this(new java.io.InputStreamReader + (in, java.nio.charset.Charset.forName("UTF-8"))); + } + + /** + * Unpacks the compressed character translation table. + * + * @param packed the packed character translation table + * @return the unpacked character translation table + */ + private static char [] zzUnpackCMap(String packed) { + char [] map = new char[0x10000]; + int i = 0; /* index in packed string */ + int j = 0; /* index in unpacked array */ + while (i < 2272) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; } - /** - * Creates a new scanner. There is also java.io.Reader version of this - * constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public ActionScriptLexer(java.io.InputStream in) { - this(new java.io.InputStreamReader(in, java.nio.charset.Charset.forName("UTF-8"))); + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; } - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char[] zzUnpackCMap(String packed) { - char[] map = new char[0x10000]; - int i = 0; /* index in packed string */ + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); - int j = 0; /* index in unpacked array */ - - while (i < 2272) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 0); - } - return map; + if (numRead > 0) { + zzEndRead+= numRead; + return false; } - - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * - * @exception java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { - - /* first: make room (if you can) */ - if (zzStartRead > 0) { - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); - - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; - } - - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length) { - /* if not: blow it up */ - char newBuffer[] = new char[zzCurrentPos * 2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - } - - /* finally: fill the buffer with new input */ - int numRead = zzReader.read(zzBuffer, zzEndRead, - zzBuffer.length - zzEndRead); - - if (numRead > 0) { - zzEndRead += numRead; - return false; - } - // unlikely but not impossible: read 0 characters, but not at end of stream - if (numRead == 0) { - int c = zzReader.read(); - if (c == -1) { - return true; - } else { - zzBuffer[zzEndRead++] = (char) c; - return false; - } - } - - // numRead < 0 + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } } - /** - * Closes the input stream. - * - * @throws java.io.IOException - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ + // numRead < 0 + return true; + } - zzEndRead = zzStartRead; /* invalidate buffer */ + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - if (zzReader != null) { - zzReader.close(); - } + if (zzReader != null) + zzReader.close(); + } + + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + */ + public final String yytext() { + return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); + } + + + /** + * Returns the character at position pos from the + * matched text. + * + * It is equivalent to yytext().charAt(pos), but faster + * + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. + * + * @return the character at position pos + */ + public final char yycharat(int pos) { + return zzBuffer[zzStartRead+pos]; + } + + + /** + * Returns the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occured while scanning. + * + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). + * + * Usual syntax/scanner level error handling should be done + * in error fallback rules. + * + * @param errorCode the code of the errormessage to display + */ + private void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } + catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; } - /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has - * grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) { - zzBuffer = new char[ZZ_BUFFERSIZE]; - } - } + throw new Error(message); + } - /** - * Returns the current lexical state. - * - * @return - */ - public final int yystate() { - return zzLexicalState; - } - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - public final void yybegin(int newState) { - zzLexicalState = newState; - } + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if ( number > yylength() ) + zzScanError(ZZ_PUSHBACK_2BIG); - /** - * Returns the text matched by the current regular expression. - * - * @return - */ - public final String yytext() { - return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); - } + zzMarkedPos -= number; + } - /** - * Returns the character at position pos from the matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead + pos]; - } - /** - * Returns the length of the matched text region. - * - * @return - */ - public final int yylength() { - return zzMarkedPos - zzStartRead; - } + /** + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. + * + * @return the next token + * @exception java.io.IOException if any I/O-Error occurs + */ + public ParsedSymbol yylex() throws java.io.IOException, ParseException { + int zzInput; + int zzAction; - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char [] zzBufferL = zzBuffer; + char [] zzCMapL = ZZ_CMAP; - throw new Error(message); - } + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! - */ - public void yypushback(int number) { - if (number > yylength()) { - zzScanError(ZZ_PUSHBACK_2BIG); - } + while (true) { + zzMarkedPosL = zzMarkedPos; - zzMarkedPos -= number; - } + yychar+= zzMarkedPosL-zzStartRead; - /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - * @throws com.jpexs.decompiler.flash.action.parser.ParseException - */ - public ParsedSymbol yylex() throws java.io.IOException, ParseException { - int zzInput; - int zzAction; + zzAction = -1; - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char[] zzBufferL = zzBuffer; - char[] zzCMapL = ZZ_CMAP; + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; - int[] zzTransL = ZZ_TRANS; - int[] zzRowMapL = ZZ_ROWMAP; - int[] zzAttrL = ZZ_ATTRIBUTE; + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } + + zzForAction: { while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar += zzMarkedPosL - zzStartRead; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = ZZ_LEXSTATE[zzLexicalState]; - - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; + + if (zzCurrentPosL < zzEndReadL) + zzInput = zzBufferL[zzCurrentPosL++]; + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; } - - zzForAction: - { - while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = zzBufferL[zzCurrentPosL++]; - } else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput]]; - if (zzNext == -1) { - break zzForAction; - } - zzState = zzNext; - - zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ((zzAttributes & 8) == 8) { - break zzForAction; - } - } - - } + else { + zzInput = zzBufferL[zzCurrentPosL++]; } + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; - // store back cached position - zzMarkedPos = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 177: - break; - case 2: { - yyline++; - } - case 178: - break; - case 3: { /*ignore*/ - - } - case 179: - break; - case 4: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 180: - break; - case 5: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 181: - break; - case 6: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 182: - break; - case 7: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 183: - break; - case 8: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 184: - break; - case 9: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 185: - break; - case 10: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 186: - break; - case 11: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 187: - break; - case 12: { - string.setLength(0); - yybegin(STRING); - } - case 188: - break; - case 13: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong((yytext())))); - } - case 189: - break; - case 14: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 190: - break; - case 15: { - string.setLength(0); - yybegin(CHARLITERAL); - } - case 191: - break; - case 16: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 192: - break; - case 17: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 193: - break; - case 18: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 194: - break; - case 19: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 195: - break; - case 20: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 196: - break; - case 21: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 197: - break; - case 22: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 198: - break; - case 23: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 199: - break; - case 24: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 200: - break; - case 25: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 201: - break; - case 26: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 202: - break; - case 27: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 203: - break; - case 28: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 204: - break; - case 29: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 205: - break; - case 30: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 206: - break; - case 31: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 207: - break; - case 32: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 208: - break; - case 33: { - string.append(yytext()); - } - case 209: - break; - case 34: { - yybegin(YYINITIAL); - yyline++; - } - case 210: - break; - case 35: { - yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 211: - break; - case 36: { - string.append(yytext()); - yyline++; - } - case 212: - break; - case 37: { - yybegin(XML); - string.append(yytext()); - } - case 213: - break; - case 38: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 214: - break; - case 39: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 215: - break; - case 40: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); - } - case 216: - break; - case 41: { - return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new Double(Double.parseDouble((yytext())))); - } - case 217: - break; - case 42: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 218: - break; - case 43: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 219: - break; - case 44: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 220: - break; - case 45: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 221: - break; - case 46: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 222: - break; - case 47: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong(yytext(), 8))); - } - case 223: - break; - case 48: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 224: - break; - case 49: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 225: - break; - case 50: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); - } - case 226: - break; - case 51: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); - } - case 227: - break; - case 52: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 228: - break; - case 53: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 229: - break; - case 54: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 230: - break; - case 55: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 231: - break; - case 56: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 232: - break; - case 57: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 233: - break; - case 58: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 234: - break; - case 59: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 235: - break; - case 60: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 236: - break; - case 61: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 237: - break; - case 62: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 238: - break; - case 63: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 239: - break; - case 64: { - throw new ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 240: - break; - case 65: { - string.append('\"'); - } - case 241: - break; - case 66: { - char val = (char) Integer.parseInt(yytext().substring(1), 8); - string.append(val); - } - case 242: - break; - case 67: { - string.append('\\'); - } - case 243: - break; - case 68: { - string.append('\''); - } - case 244: - break; - case 69: { - string.append('\b'); - } - case 245: - break; - case 70: { - string.append('\r'); - } - case 246: - break; - case 71: { - string.append('\n'); - } - case 247: - break; - case 72: { - string.append('\t'); - } - case 248: - break; - case 73: { - string.append('\f'); - } - case 249: - break; - case 74: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 250: - break; - case 75: { - string.setLength(0); - yybegin(XML); - String s = yytext(); - s = s.substring(1, s.length() - 1); - if (s.contains(" ")) { - s = s.substring(0, s.indexOf(' ')); - } - xmlTagName = s; - string.append(yytext()); - } - case 251: - break; - case 76: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 252: - break; - case 77: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 253: - break; - case 78: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 254: - break; - case 79: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 255: - break; - case 80: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong(yytext().substring(2), 16))); - } - case 256: - break; - case 81: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); - } - case 257: - break; - case 82: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); - } - case 258: - break; - case 83: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); - } - case 259: - break; - case 84: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 260: - break; - case 85: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 261: - break; - case 86: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); - } - case 262: - break; - case 87: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); - } - case 263: - break; - case 88: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 264: - break; - case 89: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 265: - break; - case 90: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); - } - case 266: - break; - case 91: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); - } - case 267: - break; - case 92: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 268: - break; - case 93: { - String t = yytext(); - return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); - } - case 269: - break; - case 94: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 270: - break; - case 95: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); - } - case 271: - break; - case 96: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 272: - break; - case 97: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); - } - case 273: - break; - case 98: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 274: - break; - case 99: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); - } - case 275: - break; - case 100: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); - } - case 276: - break; - case 101: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 277: - break; - case 102: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 278: - break; - case 103: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 279: - break; - case 104: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 280: - break; - case 105: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); - } - case 281: - break; - case 106: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 282: - break; - case 107: { - string.append(yytext()); - String endtagname = yytext(); - endtagname = endtagname.substring(2, endtagname.length() - 1); - if (endtagname.equals(xmlTagName)) { - yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); - } - } - case 283: - break; - case 108: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 284: - break; - case 109: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 285: - break; - case 110: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); - } - case 286: - break; - case 111: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 287: - break; - case 112: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 288: - break; - case 113: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); - } - case 289: - break; - case 114: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 290: - break; - case 115: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 291: - break; - case 116: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 292: - break; - case 117: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); - } - case 293: - break; - case 118: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); - } - case 294: - break; - case 119: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); - } - case 295: - break; - case 120: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 296: - break; - case 121: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); - } - case 297: - break; - case 122: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); - } - case 298: - break; - case 123: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); - } - case 299: - break; - case 124: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 300: - break; - case 125: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 301: - break; - case 126: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 302: - break; - case 127: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 303: - break; - case 128: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); - } - case 304: - break; - case 129: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 305: - break; - case 130: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); - } - case 306: - break; - case 131: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); - } - case 307: - break; - case 132: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); - } - case 308: - break; - case 133: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 309: - break; - case 134: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); - } - case 310: - break; - case 135: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 311: - break; - case 136: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); - } - case 312: - break; - case 137: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 313: - break; - case 138: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 314: - break; - case 139: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); - } - case 315: - break; - case 140: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 316: - break; - case 141: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); - } - case 317: - break; - case 142: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.OVERRIDE, yytext()); - } - case 318: - break; - case 143: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); - } - case 319: - break; - case 144: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 320: - break; - case 145: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); - } - case 321: - break; - case 146: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); - } - case 322: - break; - case 147: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); - } - case 323: - break; - case 148: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); - } - case 324: - break; - case 149: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); - } - case 325: - break; - case 150: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); - } - case 326: - break; - case 151: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); - } - case 327: - break; - case 152: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 328: - break; - case 153: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 329: - break; - case 154: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); - } - case 330: - break; - case 155: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); - } - case 331: - break; - case 156: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); - } - case 332: - break; - case 157: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); - } - case 333: - break; - case 158: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); - } - case 334: - break; - case 159: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 335: - break; - case 160: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 336: - break; - case 161: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); - } - case 337: - break; - case 162: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); - } - case 338: - break; - case 163: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); - } - case 339: - break; - case 164: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); - } - case 340: - break; - case 165: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); - } - case 341: - break; - case 166: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); - } - case 342: - break; - case 167: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); - } - case 343: - break; - case 168: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); - } - case 344: - break; - case 169: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); - } - case 345: - break; - case 170: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); - } - case 346: - break; - case 171: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); - } - case 347: - break; - case 172: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); - } - case 348: - break; - case 173: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); - } - case 349: - break; - case 174: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); - } - case 350: - break; - case 175: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); - } - case 351: - break; - case 176: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); - } - case 352: - break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); - } - } else { - zzScanError(ZZ_NO_MATCH); - } - } } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + case 178: break; + case 2: + { yyline++; + } + case 179: break; + case 3: + { /*ignore*/ + } + case 180: break; + case 4: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.DIVIDE,yytext()); + } + case 181: break; + case 5: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.MULTIPLY,yytext()); + } + case 182: break; + case 6: + { return new ParsedSymbol(SymbolGroup.IDENTIFIER,SymbolType.IDENTIFIER, yytext()); + } + case 183: break; + case 7: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.COLON,yytext()); + } + case 184: break; + case 8: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.DOT,yytext()); + } + case 185: break; + case 9: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.LOWER_THAN,yytext()); + } + case 186: break; + case 10: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.GREATER_THAN,yytext()); + } + case 187: break; + case 11: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN,yytext()); + } + case 188: break; + case 12: + { string.setLength(0); + yybegin(STRING); + } + case 189: break; + case 13: + { return new ParsedSymbol(SymbolGroup.INTEGER,SymbolType.INTEGER,new Long(Long.parseLong((yytext())))); + } + case 190: break; + case 14: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.MINUS,yytext()); + } + case 191: break; + case 15: + { string.setLength(0); + yybegin(CHARLITERAL); + } + case 192: break; + case 16: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.PARENT_OPEN,yytext()); + } + case 193: break; + case 17: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.PARENT_CLOSE,yytext()); + } + case 194: break; + case 18: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.CURLY_OPEN,yytext()); + } + case 195: break; + case 19: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.CURLY_CLOSE,yytext()); + } + case 196: break; + case 20: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.BRACKET_OPEN,yytext()); + } + case 197: break; + case 21: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.BRACKET_CLOSE,yytext()); + } + case 198: break; + case 22: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.SEMICOLON,yytext()); + } + case 199: break; + case 23: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.COMMA,yytext()); + } + case 200: break; + case 24: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.NOT,yytext()); + } + case 201: break; + case 25: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.NEGATE,yytext()); + } + case 202: break; + case 26: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.TERNAR,yytext()); + } + case 203: break; + case 27: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.BITAND,yytext()); + } + case 204: break; + case 28: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.BITOR,yytext()); + } + case 205: break; + case 29: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.PLUS,yytext()); + } + case 206: break; + case 30: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.XOR,yytext()); + } + case 207: break; + case 31: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.MODULO,yytext()); + } + case 208: break; + case 32: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ATTRIBUTE,yytext()); + } + case 209: break; + case 33: + { string.append( yytext() ); + } + case 210: break; + case 34: + { yybegin(YYINITIAL); yyline++; + } + case 211: break; + case 35: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING,SymbolType.STRING,string.toString()); + } + case 212: break; + case 36: + { string.append( yytext() ); yyline++; + } + case 213: break; + case 37: + { yybegin(XML); string.append( yytext() ); + } + case 214: break; + case 38: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_DIVIDE,yytext()); + } + case 215: break; + case 39: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_MULTIPLY,yytext()); + } + case 216: break; + case 40: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.NAMESPACE_OP,yytext()); + } + case 217: break; + case 41: + { return new ParsedSymbol(SymbolGroup.DOUBLE,SymbolType.DOUBLE,new Double(Double.parseDouble((yytext())))); + } + case 218: break; + case 42: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.SHIFT_LEFT,yytext()); + } + case 219: break; + case 43: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.LOWER_EQUAL,yytext()); + } + case 220: break; + case 44: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.SHIFT_RIGHT,yytext()); + } + case 221: break; + case 45: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.GREATER_EQUAL,yytext()); + } + case 222: break; + case 46: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.EQUALS,yytext()); + } + case 223: break; + case 47: + { return new ParsedSymbol(SymbolGroup.INTEGER,SymbolType.INTEGER,new Long(Long.parseLong(yytext(),8))); + } + case 224: break; + case 48: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_MINUS,yytext()); + } + case 225: break; + case 49: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.DECREMENT,yytext()); + } + case 226: break; + case 50: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.AS,yytext()); + } + case 227: break; + case 51: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.IS,yytext()); + } + case 228: break; + case 52: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IN,yytext()); + } + case 229: break; + case 53: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IF,yytext()); + } + case 230: break; + case 54: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.DO,yytext()); + } + case 231: break; + case 55: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.NOT_EQUAL,yytext()); + } + case 232: break; + case 56: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_BITAND,yytext()); + } + case 233: break; + case 57: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.AND,yytext()); + } + case 234: break; + case 58: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_BITOR,yytext()); + } + case 235: break; + case 59: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.OR,yytext()); + } + case 236: break; + case 60: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_PLUS,yytext()); + } + case 237: break; + case 61: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.INCREMENT,yytext()); + } + case 238: break; + case 62: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_XOR,yytext()); + } + case 239: break; + case 63: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_MODULO,yytext()); + } + case 240: break; + case 64: + { throw new ParseException("Illegal escape sequence \""+yytext()+"\"",yyline+1); + } + case 241: break; + case 65: + { string.append( '\"' ); + } + case 242: break; + case 66: + { char val = (char) Integer.parseInt(yytext().substring(1),8); + string.append( val ); + } + case 243: break; + case 67: + { string.append( '\\' ); + } + case 244: break; + case 68: + { string.append( '\'' ); + } + case 245: break; + case 69: + { string.append( '\b' ); + } + case 246: break; + case 70: + { string.append( '\r' ); + } + case 247: break; + case 71: + { string.append( '\n' ); + } + case 248: break; + case 72: + { string.append( '\t' ); + } + case 249: break; + case 73: + { string.append( '\f' ); + } + case 250: break; + case 74: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.REST,yytext()); + } + case 251: break; + case 75: + { string.setLength(0); + yybegin(XML); + String s=yytext(); + s=s.substring(1,s.length()-1); + if(s.contains(" ")){ + s=s.substring(0,s.indexOf(" ")); + } + xmlTagName = s; + string.append(yytext()); + } + case 252: break; + case 76: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_SHIFT_LEFT,yytext()); + } + case 253: break; + case 77: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.USHIFT_RIGHT,yytext()); + } + case 254: break; + case 78: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_SHIFT_RIGHT,yytext()); + } + case 255: break; + case 79: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.STRICT_EQUALS,yytext()); + } + case 256: break; + case 80: + { return new ParsedSymbol(SymbolGroup.INTEGER,SymbolType.INTEGER,new Long(Long.parseLong(yytext().substring(2),16))); + } + case 257: break; + case 81: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.CHR,yytext()); + } + case 258: break; + case 82: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.SET,yytext()); + } + case 259: break; + case 83: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.ORD,yytext()); + } + case 260: break; + case 84: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.NEW,yytext()); + } + case 261: break; + case 85: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.TRY,yytext()); + } + case 262: break; + case 86: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.INT,yytext()); + } + case 263: break; + case 87: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.USE,yytext()); + } + case 264: break; + case 88: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.FOR,yytext()); + } + case 265: break; + case 89: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.VAR,yytext()); + } + case 266: break; + case 90: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.GET,yytext()); + } + case 267: break; + case 91: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NAN,yytext()); + } + case 268: break; + case 92: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.STRICT_NOT_EQUAL,yytext()); + } + case 269: break; + case 93: + { String t=yytext(); return new ParsedSymbol(SymbolGroup.TYPENAME,SymbolType.TYPENAME,t.substring(2,t.length()-1)); + } + case 270: break; + case 94: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.ASSIGN_USHIFT_RIGHT,yytext()); + } + case 271: break; + case 95: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.EACH,yytext()); + } + case 272: break; + case 96: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.ELSE,yytext()); + } + case 273: break; + case 97: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.EVAL,yytext()); + } + case 274: break; + case 98: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.CASE,yytext()); + } + case 275: break; + case 99: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.CALL,yytext()); + } + case 276: break; + case 100: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STOP,yytext()); + } + case 277: break; + case 101: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NULL,yytext()); + } + case 278: break; + case 102: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.TRUE,yytext()); + } + case 279: break; + case 103: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.THIS,yytext()); + } + case 280: break; + case 104: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.WITH,yytext()); + } + case 281: break; + case 105: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PLAY,yytext()); + } + case 282: break; + case 106: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.VOID,yytext()); + } + case 283: break; + case 107: + { string.append( yytext() ); + String endtagname=yytext(); + endtagname=endtagname.substring(2,endtagname.length()-1); + if(endtagname.equals(xmlTagName)){ + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML,SymbolType.XML, string.toString()); + } + } + case 284: break; + case 108: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.BREAK,yytext()); + } + case 285: break; + case 109: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.CATCH,yytext()); + } + case 286: break; + case 110: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.CONST,yytext()); + } + case 287: break; + case 111: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.CLASS,yytext()); + } + case 288: break; + case 112: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.SUPER,yytext()); + } + case 289: break; + case 113: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.TRACE,yytext()); + } + case 290: break; + case 114: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.THROW,yytext()); + } + case 291: break; + case 115: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.FALSE,yytext()); + } + case 292: break; + case 116: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.WHILE,yytext()); + } + case 293: break; + case 117: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PRINT,yytext()); + } + case 294: break; + case 118: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.MBCHR,yytext()); + } + case 295: break; + case 119: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.MBORD,yytext()); + } + case 296: break; + case 120: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.RETURN,yytext()); + } + case 297: break; + case 121: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.RANDOM,yytext()); + } + case 298: break; + case 122: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.STATIC,yytext()); + } + case 299: break; + case 123: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.SUBSTR,yytext()); + } + case 300: break; + case 124: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.SWITCH,yytext()); + } + case 301: break; + case 125: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.TYPEOF,yytext()); + } + case 302: break; + case 126: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IMPORT,yytext()); + } + case 303: break; + case 127: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.DELETE,yytext()); + } + case 304: break; + case 128: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LENGTH,yytext()); + } + case 305: break; + case 129: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.PUBLIC,yytext()); + } + case 306: break; + case 130: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GETURL,yytext()); + } + case 307: break; + case 131: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STRING_OP,yytext()); + } + case 308: break; + case 132: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.NUMBER_OP,yytext()); + } + case 309: break; + case 133: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.EXTENDS,yytext()); + } + case 310: break; + case 134: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NEWLINE,yytext()); + } + case 311: break; + case 135: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.DEFAULT,yytext()); + } + case 312: break; + case 136: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.DYNAMIC,yytext()); + } + case 313: break; + case 137: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.FINALLY,yytext()); + } + case 314: break; + case 138: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.PRIVATE,yytext()); + } + case 315: break; + case 139: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.PACKAGE,yytext()); + } + case 316: break; + case 140: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.CONTINUE,yytext()); + } + case 317: break; + case 141: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STOPDRAG,yytext()); + } + case 318: break; + case 142: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.OVERRIDE,yytext()); + } + case 319: break; + case 143: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.INTERNAL,yytext()); + } + case 320: break; + case 144: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.FUNCTION,yytext()); + } + case 321: break; + case 145: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PRINTNUM,yytext()); + } + case 322: break; + case 146: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.MBLENGTH,yytext()); + } + case 323: break; + case 147: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GETTIMER,yytext()); + } + case 324: break; + case 148: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.INFINITY,yytext()); + } + case 325: break; + case 149: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STARTDRAG,yytext()); + } + case 326: break; + case 150: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.NEXTFRAME,yytext()); + } + case 327: break; + case 151: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.NAMESPACE,yytext()); + } + case 328: break; + case 152: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.INTERFACE,yytext()); + } + case 329: break; + case 153: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.UNDEFINED,yytext()); + } + case 330: break; + case 154: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.FSCOMMAND,yytext()); + } + case 331: break; + case 155: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LOADMOVIE,yytext()); + } + case 332: break; + case 156: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PREVFRAME,yytext()); + } + case 333: break; + case 157: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.PROTECTED,yytext()); + } + case 334: break; + case 158: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.TELLTARGET,yytext()); + } + case 335: break; + case 159: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.TARGETPATH,yytext()); + } + case 336: break; + case 160: + { return new ParsedSymbol(SymbolGroup.OPERATOR,SymbolType.INSTANCEOF,yytext()); + } + case 337: break; + case 161: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IMPLEMENTS,yytext()); + } + case 338: break; + case 162: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GETVERSION,yytext()); + } + case 339: break; + case 163: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.UNLOADMOVIE,yytext()); + } + case 340: break; + case 164: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.MBSUBSTRING,yytext()); + } + case 341: break; + case 165: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GOTOANDSTOP,yytext()); + } + case 342: break; + case 166: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GOTOANDPLAY,yytext()); + } + case 343: break; + case 167: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LOADMOVIENUM,yytext()); + } + case 344: break; + case 168: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STOPALLSOUNDS,yytext()); + } + case 345: break; + case 169: + { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IFFRAMELOADED,yytext()); + } + case 346: break; + case 170: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LOADVARIABLES,yytext()); + } + case 347: break; + case 171: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PRINTASBITMAP,yytext()); + } + case 348: break; + case 172: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.UNLOADMOVIENUM,yytext()); + } + case 349: break; + case 173: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.REMOVEMOVIECLIP,yytext()); + } + case 350: break; + case 174: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LOADVARIABLESNUM,yytext()); + } + case 351: break; + case 175: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PRINTASBITMAPNUM,yytext()); + } + case 352: break; + case 176: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.TOGGLEHIGHQUALITY,yytext()); + } + case 353: break; + case 177: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.DUPLICATEMOVIECLIP,yytext()); + } + case 354: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ParsedSymbol(SymbolGroup.EOF,SymbolType.EOF,null); + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } } + } + } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java index 33ccd9139..0fd6e9275 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java @@ -29,6 +29,8 @@ import com.jpexs.decompiler.flash.action.model.DefineLocalActionItem; import com.jpexs.decompiler.flash.action.model.DeleteActionItem; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.model.EvalActionItem; +import com.jpexs.decompiler.flash.action.model.FSCommand2ActionItem; +import com.jpexs.decompiler.flash.action.model.FSCommandActionItem; import com.jpexs.decompiler.flash.action.model.FunctionActionItem; import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; import com.jpexs.decompiler.flash.action.model.GetTimeActionItem; @@ -579,6 +581,11 @@ public class ActionScriptParser { return null; } switch (s.type) { + case FSCOMMAND: + expectedType(SymbolType.PARENT_OPEN); + ret = new FSCommandActionItem(null, expression(registerVars, inFunction, inMethod, true, variables)); + expectedType(SymbolType.PARENT_CLOSE); + break; case CALL: expectedType(SymbolType.PARENT_OPEN); ret = new CallActionItem(null, (expression(registerVars, inFunction, inMethod, true, variables))); @@ -815,7 +822,7 @@ public class ActionScriptParser { } else { lexer.pushback(s); } - ret = new GotoFrame2ActionItem(null, gtpFrame, true, false, 0); + ret = new GotoFrame2ActionItem(null, gtpFrame, false, true, 0); expectedType(SymbolType.PARENT_CLOSE); break; @@ -838,7 +845,7 @@ public class ActionScriptParser { lockCenter = (expression(registerVars, inFunction, inMethod, true, variables)); s = lex(); if (s.type == SymbolType.COMMA) { - constrain = new DirectValueActionItem(null, 0, Boolean.TRUE, new ArrayList()); + constrain = new DirectValueActionItem(null, 0, new Long(1), new ArrayList()); x1 = (expression(registerVars, inFunction, inMethod, true, variables)); s = lex(); if (s.type == SymbolType.COMMA) { @@ -867,12 +874,12 @@ public class ActionScriptParser { } } else { lexer.pushback(s); - constrain = new DirectValueActionItem(null, 0, Boolean.FALSE, new ArrayList()); + constrain = new DirectValueActionItem(null, 0, new Long(0), new ArrayList()); //ret.add(new ActionPush(Boolean.FALSE)); } } else { - lockCenter = new DirectValueActionItem(null, 0, Boolean.FALSE, new ArrayList()); - constrain = new DirectValueActionItem(null, 0, Boolean.FALSE, new ArrayList()); + lockCenter = new DirectValueActionItem(null, 0, new Long(0), new ArrayList()); + constrain = new DirectValueActionItem(null, 0, new Long(0), new ArrayList()); lexer.pushback(s); } expectedType(SymbolType.PARENT_CLOSE); diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java index fbc1c0b46..37a410b71 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java @@ -180,5 +180,6 @@ public enum SymbolType { PRINTASBITMAP, PRINTASBITMAPNUM, UNLOADMOVIE, - UNLOADMOVIENUM + UNLOADMOVIENUM, + FSCOMMAND } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex index a33045011..7b8c6d34d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex @@ -232,6 +232,7 @@ SingleCharacter = [^\r\n\'\\] "print" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.PRINT,yytext()); } "unloadMovie" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.UNLOADMOVIE,yytext()); } "unloadMovieNum" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.UNLOADMOVIENUM,yytext()); } + "fscommand" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.FSCOMMAND,yytext()); } /* operators */ diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java index 32159e209..68ae45d27 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java @@ -84,7 +84,7 @@ public class ActionGetURL extends Action { String fsCommandPrefix = "FSCommand:"; if (urlString.startsWith(fsCommandPrefix) && targetString.isEmpty()) { String command = urlString.substring(fsCommandPrefix.length()); - output.add(new FSCommandActionItem(this, command)); + output.add(new FSCommandActionItem(this, new DirectValueActionItem(command))); return; } String levelPrefix = "_level"; diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionPlay.java b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionPlay.java index d6db081c8..79a764448 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionPlay.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionPlay.java @@ -17,6 +17,9 @@ package com.jpexs.decompiler.flash.action.swf3; import com.jpexs.decompiler.flash.action.Action; +import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; +import com.jpexs.decompiler.flash.action.model.GotoFrame2ActionItem; +import com.jpexs.decompiler.flash.action.model.GotoFrameActionItem; import com.jpexs.decompiler.flash.action.model.PlayActionItem; import com.jpexs.decompiler.graph.GraphTargetItem; import java.util.HashMap; @@ -36,6 +39,11 @@ public class ActionPlay extends Action { @Override public void translate(Stack stack, List output, java.util.HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { - output.add(new PlayActionItem(this)); + if(!output.isEmpty() && (output.get(output.size()-1) instanceof GotoFrameActionItem)){ + GotoFrameActionItem gta=(GotoFrameActionItem)output.remove(output.size()-1); + output.add(new GotoFrame2ActionItem(this, new DirectValueActionItem(gta.frame+1), false, true, 0)); + }else{ + output.add(new PlayActionItem(this)); + } } } diff --git a/trunk/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/trunk/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 690b9eec7..4baec75fe 100644 --- a/trunk/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/trunk/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -737,8 +737,7 @@ public class ActionScript2Test extends ActionStript2TestBase { + "a = getTimer();\r\n" + "getURL(\"http://localhost/\",\"wnd\",\"POST\");\r\n" + "a = getVersion();\r\n" - + "gotoAndStop(5);\r\n" - + "play();\r\n" + + "gotoAndPlay(5);\r\n" + "gotoAndStop(8);\r\n" + "ifFrameLoaded(4)\r\n" + "{\r\n"